論理削除
最終更新日: 2020年8月6日
R8 | R9
ここでは図1,図2に示すような2つのアカウントを用意して説明します。
一般ユーザでログオンします。顧客データを1件、登録します。
登録後、「削除」ボタンを押下します。この時点で、削除ボタンは論理削除として動作する仕様となっており、ボタン押下によって「有効期限」項目に日付時刻をセットして更新という動作になります。
暗黙条件を設定し、「有効期限」項目の値が空白(null)のみ検索するようにしています。そのため論理削除したデータは検索されません。
続いて業務管理者でログオンします。暗黙条件は解除される設定のため、データは検索できます。
詳細画面を開きます。「有効期限」項目に、論理削除を行った日付時刻がセットされていることがわかります。
有効期限項目の名前は任意ですが、型は「文字列型」としてください。保存する値は日付時刻(を意味する文字列)になります。
業務管理者は物理削除を行うことができます。通常の削除ボタンは論理削除となっているため、新たに「物理削除」ボタンを用意します。
ボタン押下により、データベースからの削除が行われます。
ここでは「顧客」モデルに論理削除機能を設定します。図10に示すように、「有効期限」項目を用意します。
モデル参照の「無効判定」項目として利用できます。
この項目は暗黙条件として用います。そのためデータベースに保存するようにします。
また、入力できないよう、読込専用とします。(本番運用時には隠し設定としてもかまいません。)
暗黙条件を設定します。「値が "null" と等しい」というルールにします。
ただし適用除外権限を同時に設定します。権限名は "pdelete" とします。(後述)
一般利用者と業務管理者を用意する
アカウント プリンシパル 説明 user 一般ユーザ 論理削除のみ manager 業務管理者 論理削除と物理削除が行える 例
一般ユーザ
業務管理者
ワンポイント
物理削除を行う
定義方法
(項目名、項目IDは任意ですが、型は文字列型として用意してください。)
ワンポイント
今回用意した「有効期限」項目は、モデル参照の無効判定項目としても利用できます。
無効判定の使い方は"選択肢モデル > 選択肢を無効にする"をお読みください。
有効期限項目の設定
論理削除を有効にする
「画面 > その他 > 削除」を設定します。 「データの削除を論理削除にする」を有効にします。あわせて、論理削除判定用の項目を設定します。これは図10で用意した項目になります。
物理削除ボタンを用意する
図14の画面で、さらに物理削除ボタンをオリジナルボタンとして用意します。(図15)
項目 | 説明 | 入力例 |
---|---|---|
画面名 | "詳細表示画面"となります。 | 詳細表示画面 |
表示する | 有効にします。 | 表示する |
表示条件 | 業務管理者プリンシパル "manager" を持っている場合に、物理削除ボタンを表示するようにします。 | HASPRINCIPAL("manager") |
ボタン名 | 任意の名前を指定します。 | 物理削除 |
イベント名 | 物理削除画面に対してSendイベントを送信する必要があります。 | Send |
アクション名 | 物理削除画面は physicalDelete<モデル名> となります。(*1) | physicalDeleteCustomer |
物理削除権限を用意する
新しいパーミッション "pdelete" を用意します。これは固定名です。日本語名は任意ですが、ここでは "物理削除" とします。
このパーミッションを保有するプリンシパルを用意します。一般ユーザと区分し、ここでは業務管理者(manager)を用意しました。
- 図1,図2で用意したアカウントは、このプリンシパルを持つように設定されています。
- 図13の暗黙条件設定では、適用外の権限(パーミッション)として、"pdelete" を設定してます。
- 図15のボタン追加設定では、このプリンシパル "manager" を持っている場合にボタンを表示すると設定しています。
判定項目を独自に設定するWDN
標準では、論理削除の判定項目は(削除時に)日付時刻(を示す文字列)が格納されます。この項目が null なら削除されていない、とみなします。
このルールをカスタマイズすることができます。例として「0:正常、1:削除」というルールを設定します。
初期値の設定
有効期限(valid)項目の登録時の初期値を "0" としておきます。
暗黙条件の設定
図13の設定を "0に等しい" とします。
スクリプトの設定
論理削除時に動作するスクリプトを記述します。これは「画面 > スクリプト > ヘルパ」の実行タイミングに "論理削除" を指定します。
今回は次のようなコードになります。
customer.valid = "1";
仕様・制約
詳細画面が必要
本設定を用いる場合、対象モデルの詳細画面を用意することが必要です。
未対応の機能
- CSV・Excelアップロード更新には未対応です。アップロード更新での削除は「物理削除」になります。
- REST API に対応していません。現在は物理削除のみです。
ボタンの配置
ボタンの表示順序を制御することはできません。オリジナルボタンは常にボタン表示部の右側に配置されます。
スクリプトが優先される
「画面 > スクリプト > ヘルパ」の実行タイミング "論理削除" のスクリプトを用意した場合、こちらが優先されます。(この場合、論理削除項目に日付時刻をセットするJavaコードは生成されません。)