「rex0220 一覧編集プラグイン - 導入編(追加から編集まで)」の続きです。
一覧編集では、複数の人が同じアプリのレコードを同時に編集できます。この記事では、自分が表を開いた後に、ほかの人が同じレコードを先に更新していたときの動き(排他制御)を説明します。競合したときは、行の ⇄ から、自分の変更を残すか、最新の値を取り込むかを選べます。
例のアプリは導入編と同じ「問合せ管理(顧客サポートパック)」、保存方式は自動保存です。ほかの人の更新は、表を開いた後で同じレコードを別の画面から更新して作っています。
仕組み
- 一覧編集は、表を開いたときに、レコードごとの版(kintone のリビジョン番号)を覚えます
- 保存するときに、その版を一緒に送ります。kintone は、その間にほかの人が更新していて版が違えば、保存を断ります
- 断られたレコードは保存せず、行の左端に ⇄ の印を付けます。ほかの人の変更を上書きすることはありません
- 判断はレコード単位です。ほかの人が変えたのが別の項目でも、⇄ になります
⇄ を押すと、次の 2 つから選べます。
| 選ぶもの | 自分の変更 | ほかの人の変更 |
|---|---|---|
| 自分の変更を残して、ほかの項目を最新にする | 残して、もう一度保存する | 自分が変えていない項目に取り込む |
| 最新の値を取り込む(自分の変更を捨てる) | 捨てる | 全部の項目に取り込む |
例 1: 自分の変更を残す
表を開いた後に、ほかの人がレコード 14 の対応状況を「未対応」から「対応中」に変えて保存しました。自分の表には、まだ「未対応」と出ています。
この状態で、自分はレコード 14 の期限を 2018-09-07 に変えました。保存のときに kintone に断られ、行に ⇄ が付きます。下にも「ほかの人が先に更新したレコードが 1 件あります。…」と出ます。
⇄ を押すと、取り込み方を選ぶ画面が開きます。
「自分の変更を残して、ほかの項目を最新にする」を押すと、期限は自分の値(2018-09-07)のまま、対応状況はほかの人の値(対応中)になり、もう一度保存して ✓ になります。
自分とほかの人が同じ項目を変えていたときは、その項目は自分の値で保存し直します(ほかの人の値は残りません)。 ほかの人の値を残したいときは、例 2 の「最新の値を取り込む」を選びます。
例 2: 最新の値を取り込む(自分の変更を捨てる)
表を開いた後に、ほかの人がレコード 4 の対応状況を「対応中」に変えて保存しました。自分は同じレコードの対応状況を「完了」にしたので、⇄ が付きました。
⇄ を押して「最新の値を取り込む(自分の変更を捨てる)」を選ぶと、自分の「完了」は捨てて、ほかの人の「対応中」になります。自分の変更は残らないので、保存はしません。
取り込んだ後は、その行の自分の変更を Ctrl+Z で戻せません。
例 3: 複数の行に貼り付けたとき
自動保存で、複数の行への貼り付けは 1 回にまとめて保存します。この保存は、1 行でもほかの人が先に更新していると、その回の更新はすべて保存されません(kintone のまとめた更新は、全部保存するか全部保存しないかのどちらかです)。競合した行には ⇄ が付き、ほかの行も保存されずに残ります。
3 行の期限に貼り付けました(● は保存の前)。
このうちレコード 15 は、ほかの人が先に更新していました。レコード 15 に ⇄ が付き、ほかの 2 行も保存されずに ● のままです。下の[未保存 2 件を保存]を押すと、⇄ の行を除いた 2 行を保存し直します。
⇄ を押して「自分の変更を残して、ほかの項目を最新にする」を選ぶと、同じ貼り付けの 3 行をまとめて保存し直しました(「更新 3 件を保存しました」)。
覚えておくこと
- ⇄ の行は、取り込み方を選ぶまで保存しません(自動保存でも)。ほかの行の編集と保存は続けられます
- 明示保存の一覧でも、[保存]を押したときに同じように ⇄ が付きます
- 表を開いたままにしておくほど、ほかの人の更新と重なりやすくなります。タイトル行の右端の再読込のアイコンで、最新の値で表を作り直せます(保存していない変更があるときは確かめます)
- 「自分の変更を残す」は、同じ項目をほかの人が変えていても自分の値で保存します。テーブルを変えていれば、子行を含めてテーブル全体が自分の値になります
関連記事
- rex0220 一覧編集プラグイン - 導入編(追加から編集まで)
- rex0220 一覧編集プラグイン(機能ごとの詳しい説明)







