System Schedulerについての不明点

Ereshkigal
Tera Contributor

コミュニティの皆様
いつもお世話になっております。

私はSystem Schedulerメニューの直下にあるScheduled Jobにて、
Incidentの自動クローズをコピーし、Problemの自動クローズを作成しました。

その際、以下の不明点が発生したので、もしご存知の方がいれば、
ご教示をお願いいたします。

  1. Business Ruleを呼び出す際、Job Contextフィールドではなく、
    Scriptフィールドを使用していないのは、何か理由があるのでしょうか。
    (そもそもScriptでBusiness Ruleは呼び出せない?
    →呼び出すならScript Includeになる)
  2. なぜSystem Definition > Scheduled Jobsの方にIncidentの自動クローズの
    Scheduled Jobが表示されないのでしょうか。

  3. System Schedulerについて、公式ドキュメントでほとんど記載がないのですが、
    もしかして、こちらから直接作成するのは非推奨なのでしょうか。
    (※ただProblemの自動クローズは、コミュニティの様々な方から
    Incidentの自動クローズをコピーして作成するのがベストプラクティスだと
    ご教示頂いたので、そのように実装しました)

  4. Scriptフィールドとは何でしょうか。。
    →他のScriptフィールドとあまりにフォーマットが違うので。。。

find_real_file.png

1 ACCEPTED SOLUTION

iwai
Giga Sage

すべて私個人の推測での回答です。

Q『Business Ruleを呼び出す際、Job Contextフィールドではなく、Scriptフィールドを使用していないのは、何か理由があるのでしょうか。』

A、  まず下記リンクの Schedule Job の 仕組みの記事を読んでください。

Article #3 - How to find parameters for Scheduled Jobs "Job IDs" (JobContext / Job Context / Sys 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を実行できるようになっています。

View solution in original post

3 REPLIES 3

iwai
Giga Sage

すべて私個人の推測での回答です。

Q『Business Ruleを呼び出す際、Job Contextフィールドではなく、Scriptフィールドを使用していないのは、何か理由があるのでしょうか。』

A、  まず下記リンクの Schedule Job の 仕組みの記事を読んでください。

Article #3 - How to find parameters for Scheduled Jobs "Job IDs" (JobContext / Job Context / Sys 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を実行できるようになっています。

Ereshkigal
Tera Contributor

ご回答ありがとうございます。

上記のコミュニティはとても参考になります。

追加でもう1点確認させて頂きたいのですが、
(初歩的な質問で大変恐縮ですが)
System Definition > Scheduled Jobsの方からBusiness Ruleは、
呼び出すことが可能でしょうか。

→Script内で呼び出す際、Script Includeが最初に思いつきますが
その他のサーバーサイド処理(Business Rule)も呼び出せるか
気になったので、確認させてください

よろしくお願いいたします。

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を実行できます。詳しくは公式サイトを見て下さい。

GlideScopedEvaluator | ServiceNow Developers