「No Longer Required」の条件を含む承認ワークフローIssue <!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } 承認が「No Longer Required」に移行したときにワークフローがスタックする。 Symptoms<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } 承認アクティビティの条件として「No Longer Required」を使用すると、承認アクティビティがスタックします。 Facts<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } 承認で「No Longer Required」が設定されている場合、アクティビティは「not_required」の結果ではなく「スキップされた」結果を受け取ります。 これは、承認アクティビティで activity.result == 'skipped' を使用して評価されます。 [No Longer Required] を使用する場合、承認アクティビティは自動的に次のアクティビティに移動しませんが、コメントや作業メモにメッセージを書き込むなど、RITM の更新をトリガーできます。 必要なロール:admin Release<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } Yokohama Resolution<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } これは、「No Longer Required」ステータスのパスを使用してワークフローを作成する方法に関するステップバイステップのガイドです。 承認ワークフロー 承認アクティビティの使用 承認済み条件から activity.result == 'skipped' を削除承認(Approval)アクティビティにNo Longer Required状態用の新しい条件を追加し、その評価式を `activity.result == 'skipped'` に設定してください。 2.目的の機能を実現するために、ワークフローに次のアクティビティを追加します。この例では、シンプルな「ログ」アクティビティを使用します。 こ これで承認が完了し、承認済みと却下に最適です。ただし、[No Longer Required] の場合、選択すると、RITM が更新を受信するまで承認アクティビティは実行中の状態が停止します。ワークフローを強制的に継続させるために、RITM に自動的にコメントを作成するビジネスルールを作成します。 ビジネスルール ビジネスルールを作成します。コメントに書き込むスクリプトを作成します。この例では、承認者が複数いる場合にこの実行が実行されないように、RITM に承認者が 1 人しかいないことを確認します。 (function(current, previous) { // Query to find the RITM associated with the approval var ritm = new GlideRecord('sc_req_item'); if (ritm.get(current.document_id)) { // Check if there is only one approval record for the RITM var approvalCount = new GlideAggregate('sysapproval_approver'); approvalCount.addQuery('sysapproval', ritm.sys_id); approvalCount.addAggregate('COUNT', 'sys_id'); approvalCount.query(); var count = 0; if (approvalCount.next()) { count = approvalCount.getAggregate('COUNT', 'sys_id'); } if (count == 1) { // Perform your desired action here // Example: Add Comments to the activity journal // This will trigger the workflow to keep go to the next activity automatically var message = "Approval is no longer required for this item"; ritm.comments = message; ritm.update(); } } })(current, previous); 目的のカタログアイテムにワークフローを追加します。 テスト ワークフロー承認とビジネスルールをテストするためのカタログアイテムを作成しました。次の画像は、行われたテストの 1 つです。 1. 作成した RITM を含む REQ 2. RITMの承認を求めます。 3. 承認が「要求済み」の場合のワークフローステータス: 4. 承認が「不要」に設定され、コメント欄にメッセージが表示されます。 5. ワークフローが次のアクティビティに進行しました: 注記:本記事で紹介するコンポーネントはServiceNowの公式機能ではありません。これらを利用または実装する場合は「カスタム実装」とみなされるため、そのまま使用するのではなく、特定の要件に合わせてテストや変更を行う必要があります。 本記事の内容は、承認者が1名であるRITM(要求アイテム)のみを対象としており、承認者が複数いる場合などの「エッジケース(例外的な状況)」については検証していません。実際に使用する際は、例外的なケースや実際の運用シナリオにおける動作をテストすることが重要です。 新規開発においては、Workflow(ワークフロー)ではなくFlow Designer(フローデザイナー)を使用することを強く推奨します。