登録データの一時保存
最終更新日: 2020年3月14日
R8 | R9
ここでは2つのアカウントを用意して説明します。
本機能は複数の設定を組み合わせて実現します。
「一時保存フラグ」モデルは、状態を示す選択肢モデルです。ここでは図11のように "一時保存" と "通常保存" を用意します。
テストで用いたモデルを図12に示します。「保存状態」項目は、図11の一時保存フラグモデルを参照します。
(1)「画面 > その他 > Javaソースコードの設定」を開きます。
(2)「カスタマイズ用のクラスを出力する」を有効にします。
(3) 新規登録画面と更新画面にそれぞれ「一時保存」ボタンを用意します。
ポイントは、イベント名 "TemplateSave" の横にある拡張指定 [@method=insert] および [@method=update] です。これによって本ボタンは(従来の)「保存」「更新」と同じ役割を担うようになります。
「保存状態」項目は、本機能を制御するために用意したものです。はじめに初期値を設定します。
登録時および更新時の初期値は次のとおりです。
EVENT 関数は、オリジナルボタンのイベントを受け取ることができます。一時保存ボタン押下時は "1" を、そうでない場合は "2" をセットしています。これは図11におけるコード "一時保存" "通常保存" に対応しています。
検索画面表示時の初期値は "通常保存" のコード "2" をセットしています。
また、この項目は入力時に隠し項目としています。
「作成者」項目もまた、本機能を制御するために用意したものです。はじめに初期値を設定します。
検索値を設定することで、本項目の検索条件は入力された値に関わらず、ここで指定された値が用いられるようになります。
この式は、検索条件項目である「保存状態」の ID が 1、すなわち一時保存の場合にのみ USERNAME 関数の値である「ログオンアカウント」を設定するようになっています。一時保存の場合、自動的に自分のログオンアカウントで検索条件が絞込まれるようになります。
この設定により、本項目は利用者による検索条件入力が無視されます。よって、本項目は検索時に非表示とします。
登録確認画面を用意した例を紹介します。「一時保存」ボタンを押下します。
確認画面に遷移します。ここで「登録する」ボタンを押下します。
保存状態が "一時保存" となっていることがわかります。
「画面 > 新規登録」で「確認画面を表示する」を有効にします。
ボタンのイベントを保持する隠し項目「イベント」を用意します。確認画面を経由した場合、その前のボタンで「一時保存」ボタンを押したかどうかを記録することが目的です。
この項目は入力時、出力時それぞれ隠し項目とします。(図23,図24)
ボタン押下により発生したイベントが「一時保存」("TemplateSave") または「確認」("Confirm") のいずれかであればそれを保持します。それ以外の場合は、現在保存している値を保持するために Me() を使います。
図14の式を次のように修正します。押下ボタンによって発生したイベントが"TemplateSave"か、または隠し項目 event に保持されていたイベントが"TemplateSave"のいずれかを考慮するようにします。
ワークフローを設定したモデルに本設定を適用すると、他ユーザーによる一時保存データは検索されなくなります。ワークフローの申請をグループとしていたとき、グループに所属する他ユーザーから検索されない限り、ワークフローの「申請」ボタンを押すことはできません。このため、一時保存したデータはワークフローを開始しないという運用を行うことができます。
この一時保存機能は、データベースへの登録処理を伴います。(他者に閲覧できないという条件を組み込むことで、運用での一時保存を実現しています。)
そのため必須チェックを指定した項目は、一時保存であっても必須となります。必須チエックはデータの論理的整合性を担保するため、データベースのテーブルに NOT NULL 制約を適用するためです。
例
アカウント プリンシパル 説明 admin 業務管理者 データの一時保存を行う user1 一般ユーザ データの検索を行う
定義方法
上で説明したサンプルは次の二つのモデルから実現されています。
一時保存フラグモデル
一時保存テストモデル
「一時保存」ボタンを用意する
「保存状態」項目
IF(EXACT(EVENT(),"TemplateSave"),1,2)
2
「作成者」項目の設定
IF(${template_flag#id}==1,USERNAME(),null)
確認画面を利用する場合
例
定義方法
確認画面の設定
隠し項目「イベント」を用意する
式の設定
IF(
OR(
EXACT(EVENT(),"TemplateSave"),
EXACT(EVENT(),"Confirm")
),
EVENT(),
Me()
)
「保存状態」項目の初期値
IF(
OR(
EXACT(EVENT(),"TemplateSave"),
EXACT(${event}, "TemplateSave")
)
,1
,2
)
ワークフローとの関係
設計上の注意点