プロセスでステータスを進めるとき、event.error
を設定して return event;
しているにも関わらず、 稀にステータスが進んでしまう現象があり困っています。
自分の端末では正しくエラーが出て止まるのですが、他のユーザーで「完了日が未入力のまま次のステータスへ進んでしまった」ケースが複数回確認されました。
現在のコードは以下のようになっており、app.record.detail.process.proceed
イベントで制御しています。
javascript
(function () {
“use strict”;
kintone.events.on([‘app.record.detail.process.proceed’], function (event) {
var record = event.record;
var currentStatus = event.status.value;
var nextStatus = event.nextStatus.value;
if (currentStatus === 'ステータス1' && nextStatus === 'ステータス2' && !record['完了日'].value) {
event.error = '「完了日」が未入力のまま、完了に進めることはできません。';
return event;
} else if (nextStatus === 'ステータス2' && ['ステータスx', 'ステータスy', 'ステータス1'].includes(currentStatus)) {
setTimeout(() => {
copyxxxx(record)
.then(() => {
location.reload();
})
.catch((err) => {
alert("処理に失敗しました。");
console.error("処理失敗", err);
});
}, 300);
}
return event;
});
})();
この現象について、
`event.error` を返してもプロセスが進むことがあるのは仕様でしょうか?
通信状況やUI操作(連打や戻るボタンなど)で発生する可能性はありますか?
これを確実に防ぐ手段(プロセス制御以外)に何か心当たりはありますか?
もし類似事例や回避策をご存じの方がいれば、ぜひ教えてください。