The CreatorCon Call for Content is officially open! Get started here.

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