要求が自動承認された後も RITM レコードが開いたままになる理由Issue <!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: #000000; } span { font-size: 12pt; font-family: Lato; color: #000000; } h2 { font-size: 24pt; font-family: Lato; color: black; } h3 { font-size: 18pt; font-family: Lato; color: black; } h4 { font-size: 14pt; font-family: Lato; color: black; } a { font-size: 12pt; font-family: Lato; color: #00718F; } a:hover { font-size: 12pt; color: #024F69; } a:target { font-size: 12pt; color: #032D42; } a:visited { font-size: 12pt; color: #00718f; } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } 場合によっては、要求 (REQ) が自動承認されても、RITM が開いたままになることがあります。RITM のワークフローは正常に実行され、処理待ちのタスクや承認はなく、[終了] アクティビティにも到達しますが、RITM レコードはクローズ済みステータスに移行しません。 この例では、ワークフローを意図的にシンプルにしています。唯一のカスタマイズは、[終了] アクティビティのステージが [完了] に設定されることです。 通常の状況では、ワークフローが終了すると、RITM は次のようになります。 ステータスを [完了してクローズ] に変更するfalse に変更するアクティブなフィールド入力するクローズフィールド ( closed_at や closed_byなど) RITM の XML を確認すると、次のことがわかります。 ステータスはまだ [対応中] です[アクティブ] フィールドは true のままですclosed_atやclosed_byなどのクローズフィールドが入力されない カレンダー履歴から、RITMで次のように表示されます。レコードが作成され、その後に更新され、ステージフィールドが[承認待ち]から[完了]に移行しました。これが、私たちがワークフローに設定したことです。 Release<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: #000000; } span { font-size: 12pt; font-family: Lato; color: #000000; } h2 { font-size: 24pt; font-family: Lato; color: black; } h3 { font-size: 18pt; font-family: Lato; color: black; } h4 { font-size: 14pt; font-family: Lato; color: black; } a { font-size: 12pt; font-family: Lato; color: #00718F; } a:hover { font-size: 12pt; color: #024F69; } a:target { font-size: 12pt; color: #032D42; } a:visited { font-size: 12pt; color: #00718f; } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } すべて Cause<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: #000000; } span { font-size: 12pt; font-family: Lato; color: #000000; } h2 { font-size: 24pt; font-family: Lato; color: black; } h3 { font-size: 18pt; font-family: Lato; color: black; } h4 { font-size: 14pt; font-family: Lato; color: black; } a { font-size: 12pt; font-family: Lato; color: #00718F; } a:hover { font-size: 12pt; color: #024F69; } a:target { font-size: 12pt; color: #032D42; } a:visited { font-size: 12pt; color: #00718f; } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } ビジネスルール「Set Active Flag」(100 より前)は発生しませんでした。この BR はステージが「完了」に変更されたことに基づいてトリガーされるはずですが、トリガーされませんでした。アクティブ、ステータス、closed_at、closed_byフィールドを設定するためにトリガーされた一連のビジネスルールは、次の順序で実行されます。Set Active Flag (sc_req_item、before、100、[insert, update])、これはステージが「完了」に変わることによってトリガーされ、アクティブフィールドを false に設定します。 Task closer (task, before, 900, [insert, update])、これは他のチェック (inOpenState および InSupportedTable) の中でアクティブフラグが「false」に変更されることによってトリガーされ、ステータスフィールドを「完了してクローズ」に設定します クローズフィールドの設定 (task、before、10000、[insert, update]) これは、[アクティブ] が false に変わるとトリガーされ、[closed_by] フィールドと [closed_at] フィールドの設定を担当します。 では、なぜこれらのビジネスルールはトリガーされなかったのでしょうか?この質問に答える前に、RITM のワークフローがどのようにトリガーされたかを考えてみましょう。すでにご存知のように、RITMが最初に作成され、次に要求が作成されます。要求レコードが挿入されると、そのワークフローがトリガーされます。要求が自動承認されると、次のビジネスルールが開始されます。 要求アイテムへのカスケード要求承認 (sc_request,after, 1300,[insert, update])承認が変更されると、ステータスが要求アイテムに伝播されます。この場合は「承認済み」スクリプトから次のようになります。 if (gr.stage == "waiting_for_approval" && current.approval == "approved") { gr.approval = "requested"; gr.stage = "request_approved"; そして後で: gr.update(); 要約すると、要求アイテムはデフォルトで「waiting_for_approval」のステージで作成され、要求のワークフローからのゲート付き承認を待機しています。ただし、この場合、要求のワークフローが自動承認され、上記のコードがトリガーされ、ステージが「request_approved」に変更され、ドット更新が RITM に送信されます。これは、カレンダー履歴から実行されている更新です(上のスクリーンショットを参照)。そのため、ステージが「request_approved」に移動し、RITMが更新されると、このGlide レコードの更新で次のビジネスルールがトリガーされます。 Start Workflow (before, 10000)ステージが「request_approved」に変わると、このBRが起動し、RITMのワークフローが開始されます。 var context = w.startFlow(id, current, current.operation(), getVars()); ワークフロースクリプトインクルードの startFlow メソッドでは、前のビジネスルールからの Glide レコードの更新から実行されているコミットワークフロー起動からの変更は行われないことに注意してください。つまり、「スクリプト - バックグラウンド」モジュールからこのワークフローを手動で起動すると、ワークフローが起動し、コンテキストが作成されますが、ステージを「完了」に設定する「終了」アクティビティはコミットされません。コミットするワークフローの変更については、このスクリプトに従って Glide レコードの更新を実行する必要があります。そのため、Glide レコードの更新によってこの BR が起動されると、BR が終了すると、最初の 3 つのビジネスルール (アクティブフラグの設定、タスククローザー、クローズフィールドの設定) の「時期」と「順序」から、再度実行されないことがわかります。ワークフローによりステージが [完了] に移行したため、要求アイテムはコミットされます。上記のカレンダー履歴でわかるように。 Resolution<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: #000000; } span { font-size: 12pt; font-family: Lato; color: #000000; } h2 { font-size: 24pt; font-family: Lato; color: black; } h3 { font-size: 18pt; font-family: Lato; color: black; } h4 { font-size: 14pt; font-family: Lato; color: black; } a { font-size: 12pt; font-family: Lato; color: #00718F; } a:hover { font-size: 12pt; color: #024F69; } a:target { font-size: 12pt; color: #032D42; } a:visited { font-size: 12pt; color: #00718f; } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } すぐに利用可能な、この問題を解決するためにMadridで導入された2つのビジネスルールがあります。ワークフローの後にアクティブフラグを設定 (sc_req_item、前、10,100、[挿入、更新]) (/sys_id=3c1faea173002300097f6508caf6a7b9)ワークフローの後にクローズフィールドを設定 (task、before、10,200、[insert, update]) (/sys_script.do?sys_id=8ebfaa6573002300097f6508caf6a7c3)どちらもデフォルトで無効になっているため、この問題に直面している場合は両方を有効にする必要があります。 これらの新しいビジネスルールを有効にした後でも、ステータスは設定されないことに注意してください。「タスククローザー」が再び実行されないため、このビジネスルールをコピーして順序を 10,150 に設定して、新しいビジネスルールの間に挟むことができます。ただし、顧客は通常、「値の設定」ワークフローアクティビティを介してステータスを設定します。 Related Links<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: #000000; } span { font-size: 12pt; font-family: Lato; color: #000000; } h2 { font-size: 24pt; font-family: Lato; color: black; } h3 { font-size: 18pt; font-family: Lato; color: black; } h4 { font-size: 14pt; font-family: Lato; color: black; } a { font-size: 12pt; font-family: Lato; color: #00718F; } a:hover { font-size: 12pt; color: #024F69; } a:target { font-size: 12pt; color: #032D42; } a:visited { font-size: 12pt; color: #00718f; } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } PRB1269804:アフターワークフローのクローズフィールドの設定を追加しました