ssjs オブジェクトに組み込まれたカスタム ドキュメント プロセスがあります。読み取りモードでドキュメントの [編集] ボタンをクリックすると、バックエンド ドキュメントでロックの日付/時刻とロックの所有者を設定するメソッドを呼び出し、true を返します。次に、ChangeDocumentMode シンプル アクションを使用して、ドキュメントを編集モードに変更できます。ただし、(単純なアクションなどで) ドキュメントを初めて保存すると、競合ドキュメントが作成されます。フロントエンド ドキュメントは、編集モードに入る前に行ったバックエンド ドキュメントの変更と保存を認識していない可能性があります。
このプロセスを変更して、ドキュメント ロック コードで 2 つのバックエンド doc フィールドを設定し、context.redirectToPage を使用すると、ドキュメントが編集モードで開き、UI から保存しても競合ドキュメントは作成されません。ただし、コードを使用してドキュメントのロックを解除した後、[ページを開く] シンプル アクションを使用して [前のページ] に移動してドキュメントを終了すると、ドキュメントを実際に閉じるのではなく、読み取りモードに戻るだけです。最初の redirectToPage が履歴を混乱させ、この問題を引き起こしていると確信しています。
質問: 編集モードに入る前にドキュメントをロックする方法、編集モードに入る方法、競合するドキュメントを発生させずに保存する方法、および [ページを開く] シンプル アクションを使用して終了できる方法 (ドキュメントのロックを解除した後) について誰か提案がありますか? ?
編集モードに入るコードを含む、ロックに関連するコードのサンプルを次に示します。
thisDoc.replaceItemValue("LockOwner",context.getUser().getCommonName());
thisDoc.replaceItemValue("LockDate",session.createDateTime(@Now()));
thisDoc.save();
var url = view.getPageName()+"?action=editDocument&documentId="+thisDoc.getNoteID();
context.redirectToPage(url);