- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-04-2022 07:16 PM
コミュニティの皆様
いつもお世話になっております。
私はSystem Schedulerメニューの直下にあるScheduled Jobにて、
Incidentの自動クローズをコピーし、Problemの自動クローズを作成しました。
その際、以下の不明点が発生したので、もしご存知の方がいれば、
ご教示をお願いいたします。
- Business Ruleを呼び出す際、Job Contextフィールドではなく、
Scriptフィールドを使用していないのは、何か理由があるのでしょうか。
(そもそもScriptでBusiness Ruleは呼び出せない?
→呼び出すならScript Includeになる) - なぜSystem Definition > Scheduled Jobsの方にIncidentの自動クローズの
Scheduled Jobが表示されないのでしょうか。 - System Schedulerについて、公式ドキュメントでほとんど記載がないのですが、
もしかして、こちらから直接作成するのは非推奨なのでしょうか。
(※ただProblemの自動クローズは、コミュニティの様々な方から
Incidentの自動クローズをコピーして作成するのがベストプラクティスだと
ご教示頂いたので、そのように実装しました) - Scriptフィールドとは何でしょうか。。
→他のScriptフィールドとあまりにフォーマットが違うので。。。
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-04-2022 10:08 PM
すべて私個人の推測での回答です。
Q『Business Ruleを呼び出す際、Job Contextフィールドではなく、Scriptフィールドを使用していないのは、何か理由があるのでしょうか。』
A、 まず下記リンクの Schedule Job の 仕組みの記事を読んでください。
Schedule Item ”Autoclose Incidents” の Job ID ”RunScriptJob” の場合、 Job context に "fcScriptName" を 記載することで Scriptを呼び出す仕組みなっています。
質問にあるようになぜScript Fieldを使わなかったのか。それは 他からも呼び出せる共通ライブラリとしても使いやすい場所にScriptを保存するためと、バージョン管理やUpdateSetに記録させるため、それらの理由だと思います。
昔のServiceNowの作りでは、いくつもBusinessRuleの中に共通 libraryのScriptが記述されていました。 今でもそれは動き続けています。今は、そのようなつくりは非推奨になっています。
Q『なぜSystem Definition > Scheduled Jobsの方にIncidentの自動クローズの
Scheduled Jobが表示されないのでしょうか。』
A、それは Job ID と Job context の組み合わせで、どのScriptが実行されるのか変わるためで、Autoclose Incidentsは、Scheduled JobsのScriptを使うようには設定していないです。”System Definition > Scheduled Jobs” の Scriptを使う場合、Job context に fcDocumentClass と fcDocumentKey を使って TableとSYS ID を指定しています。
Q『System Schedulerについて、公式ドキュメントでほとんど記載がないのですが、
もしかして、こちらから直接作成するのは非推奨なのでしょうか。』
A、ベストプラクティスではないです。FlowDesignerが最近の作り方ではないでしょうか。
Q『Scriptフィールドとは何でしょうか。』
A、上記の参考記事に説明があります。JobIDに”RunScriptJob”、Job contextに”fcScriptName=in the schedule record”と記載することで、ScriptフィールドのScriptを実行できるようになっています。
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-04-2022 10:08 PM
すべて私個人の推測での回答です。
Q『Business Ruleを呼び出す際、Job Contextフィールドではなく、Scriptフィールドを使用していないのは、何か理由があるのでしょうか。』
A、 まず下記リンクの Schedule Job の 仕組みの記事を読んでください。
Schedule Item ”Autoclose Incidents” の Job ID ”RunScriptJob” の場合、 Job context に "fcScriptName" を 記載することで Scriptを呼び出す仕組みなっています。
質問にあるようになぜScript Fieldを使わなかったのか。それは 他からも呼び出せる共通ライブラリとしても使いやすい場所にScriptを保存するためと、バージョン管理やUpdateSetに記録させるため、それらの理由だと思います。
昔のServiceNowの作りでは、いくつもBusinessRuleの中に共通 libraryのScriptが記述されていました。 今でもそれは動き続けています。今は、そのようなつくりは非推奨になっています。
Q『なぜSystem Definition > Scheduled Jobsの方にIncidentの自動クローズの
Scheduled Jobが表示されないのでしょうか。』
A、それは Job ID と Job context の組み合わせで、どのScriptが実行されるのか変わるためで、Autoclose Incidentsは、Scheduled JobsのScriptを使うようには設定していないです。”System Definition > Scheduled Jobs” の Scriptを使う場合、Job context に fcDocumentClass と fcDocumentKey を使って TableとSYS ID を指定しています。
Q『System Schedulerについて、公式ドキュメントでほとんど記載がないのですが、
もしかして、こちらから直接作成するのは非推奨なのでしょうか。』
A、ベストプラクティスではないです。FlowDesignerが最近の作り方ではないでしょうか。
Q『Scriptフィールドとは何でしょうか。』
A、上記の参考記事に説明があります。JobIDに”RunScriptJob”、Job contextに”fcScriptName=in the schedule record”と記載することで、ScriptフィールドのScriptを実行できるようになっています。
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-07-2022 05:18 PM
ご回答ありがとうございます。
上記のコミュニティはとても参考になります。
追加でもう1点確認させて頂きたいのですが、
(初歩的な質問で大変恐縮ですが)
System Definition > Scheduled Jobsの方からBusiness Ruleは、
呼び出すことが可能でしょうか。
→Script内で呼び出す際、Script Includeが最初に思いつきますが
その他のサーバーサイド処理(Business Rule)も呼び出せるか
気になったので、確認させてください
よろしくお願いいたします。
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-08-2022 02:44 AM
Business Rule を呼び出すことは可能です。推奨されていないやり方になるかと思いますので、お勧めしませんし、やり方を詳しく調べるより、Script IncludeやFlowDesignerなどを使ってください。
Business Rule を呼び出す昔ながらの方法は、Business Ruleの TableをGlobal にして、Scriptに function myWork()とすることで、Script include と同じように、どこからでもmyWork() を呼び出せます。
Business Rule "incident autoclose" の場合は、TableがIncidentなので、別の方法が必要になるかと思います。GlideScopedEvaluator を使えば任意のテーブルのScriptを実行できます。詳しくは公式サイトを見て下さい。