今回の記事は、SKEで排他処理機能のサンプルです。
共通設定
以下のテーブルを利用して、サンプルを作成します。
CREATE TABLE "テストテーブル"
(
"主キー" integer NOT NULL,
"名称" character varying(10),
"作成者" character varying(20),
"作成日時" timestamp without time zone,
"最終更新者" character varying(20),
"最終更新日時" timestamp without time zone,
CONSTRAINT "テストテーブル_pkey" PRIMARY KEY ("主キー")
)
排他用項目は値の表示用フォーマットを行うと更新前後の比較はうまくできないため、表示用と排他用別々にする必要です。このため、クエリ項目を作成します。また、作成と更新の担当者と日時は、自動登録するようにモード別設定値を設定登録します。
クエリ
select *,最終更新日時 as v更新日時 from テストテーブル
作成者
{
"add": function(){
return session.get("USER_ID");
},
"copyAdd": function(){
return session.get("USER_ID");
}
}
作成日時
{
"add": function(){
return new Date();
},
"copyAdd": function(){
return new Date();
}
}
最終更新者
{
"add": function(){
return session.get("USER_ID");
},
"copyAdd": function(){
return session.get("USER_ID");
},
"edit": function(){
return session.get("USER_ID");
}
}
最終更新日時
{
"add": function(){
return new Date();
},
"copyAdd": function(){
return new Date();
},
"edit": function(){
return new Date();
}
}
入力ダイアログ
タイトル「最終更新日時」の項目は表示用で、ビュー項目とリンクします。タイトル「排他用」はhiddenにして、テーブル項目とリンクします。
効果
二つブラウザで同じデータを開きます。
右の画面は先に保存して、成功です。左の画面は後で保存して、排他失敗です。
まとめ
今回の記事のサンプルには、以下のアドオンを利用しました。
- モード別項目設定値のアドオン