NEAL

NEALは、ワークフローの設計と動作を定義するための簡略化された言語です。

これは、Designerビューの外でワークフローの高度なデバッグや変更を可能にする管理言語です。 Designerを使用すると、ワークフローへのすべての追加または変更がNEAL定義として保存され、DesignerとNEAL言語が完全に同期します。

構造

NEALはXMLを主な構文として使用し、ワークフロー内のステップを一貫して読みやすいタグで定義できます。

各NEAL定義のワークフローには、以下の最小構造が必要です。

  1. ID

  2. 開始

  3. Thinklet

  4. パス

  5. 終了

NEALの例

これは、リモートアクションThinkletが1つある単純なNEALワークフローで、プリントスプーラーを再起動します。

|


My workflow description
<startEvent id="StartWorkflowID" name="Start workflow" /><thinklet type="act" id="RestartPrintSpooler" name="Restart Print Spooler" description="This will restart the print spooler service on the target device" timeout="900">    <remoteActionId>#service_controller</remoteActionId>    <parameter name="ServiceCommand" value="Restart"/>    <parameter name="ServiceName" value="Spooler"/></thinklet><endEvent id="EndStateID" name="End State"/><path id="step1" name="Step 1" sourceRef="StartWorkflowID" targetRef="RestartPrintSpooler" /><path id="step2" name="Step 2" sourceRef="RestartPrintSpooler" targetRef="EndStateID" />








NEALスクリプトを開始、カプセル化、終了する<workflow></workflow>タグを除いて、タグの順序は重要ではありません。 ただし、ワークフローがタグを処理する順序は、<path></path>タグの属性(例えばid="step1"およびid="step2"など)で定義されます。
ID
すべてのワークフローには、Nexthinkがワークフローを参照できるようにするための基本的な詳細が必要です。他のNexthinkユーザーがそれを識別できるようにします。

id:Nexthinkがワークフローを識別し参照するためのユニークな識別子です。
name:ワークフロー管理ページのバージョンタブに表示されるワークフローの名前です。
description:このワークフローバージョンを他のNexthinkユーザーに説明するための詳細な説明です。 このバージョンが作成された理由と、以前のバージョンに対してどのように改善されたかを説明することが良い実践です。

| My long workflow description which will help my colleagues understand why this is here and what it doesThinkletThinkletはワークフロー内の主要なアクションコンポーネントであり、そのタイプに応じて異なる設定オプションを持っています。Thinkletの種類に関係なく、設定する必要がある次のパラメータがあります。type:この設定が適用されるThinkletのタイプ。id:Nexthinkがワークフロー内でThinkletを識別するために使用する識別子。name:Thinkletのフレンドリーネーム。 システムは、この名前を使用してThinkletを視覚的に表示し、ワークフローが実行されている間の現在のステータスを表示します。description:このThinkletが意図していることの詳細な説明。 システムはこれを使用してThinkletを視覚的に表示します。timeout:このThinkletによって実行されるアクションからの応答をワークフローが待機する時間(秒)。リモートアクションリモートアクションThinkletはエンドポイントデバイスでリモートアクションを実行するよう要求します。 以下の設定パラメーターを持っています。remoteActionId:Thinkletによって使用されるリモートアクションのNQL ID。parameter:リモートアクションに送信されるパラメータを説明するタグ。 複数のパラメータを定義できます。name:リモートアクションから参照されるパラメータの名前。value:リモートアクションパラメータに挿入される値。 ここに入力された静的な値に対してこの構文が使用されます。source:グローバルまたは出力変数を参照するためにソースを使用します。各パラメータにはvalueまたはsourceのいずれかを使用する必要があり、同じ行で一緒に使用することはできません。リモートアクションThinkletの例。| #service_controllerf0b002cf-3723-43ae-a2a2-84baf4881952キャンペーンキャンペーンThinkletは、エンドポイントデバイスのユーザーにキャンペーンを送信するよう要求します。 以下の設定パラメーターを持っています。CampaignId:Thinkletで使用されるキャンペーンのNQL ID。<thinklet id="campaign" name="Prompt for reboot" type="engage" timeout="5" description="Prompt employee to reboot their device to continue">  <campaignId>#reboot_request</campaignId></thinklet>サービス/APIサービス/API Thinkletは、外部の公開APIにREST呼び出しを行います。 追加情報を取得したり、アクションの実行を要求するために使用します。<thinklet id="log_service_now_ticket" name="Log ServiceNow Ticket" type="sapi" description="Open a ticket in ServiceNow.">    <credentialsId>conn_cr-5</credentialsId>    <httpMethod>POST</httpMethod>    <resourcePath>api/now/table/incident</resourcePath>    <outputVariables>      <outputVariable id="sys_id" name="Sys ID">$.result.sys_id</outputVariable>    </outputVariables>    <payloadTemplate>{  &amp;quot;assignment_group&amp;quot;: &amp;quot;Application Development&amp;quot;,  &amp;quot;business_service&amp;quot;: &amp;quot;Zoom&amp;quot;,  &amp;quot;caller_id&amp;quot;: &amp;quot;Terry Courtney&amp;quot;,  &amp;quot;description&amp;quot;: &amp;quot;Hello Nexthink Flow&amp;quot;,  &amp;quot;impact&amp;quot;: &amp;quot;5&amp;quot;,  &amp;quot;short_description&amp;quot;: &amp;quot;Incident created by Nexthink Flow for {{nx.user.name}}&amp;quot;,  &amp;quot;urgency&amp;quot;: 4,  &amp;quot;cmdb_ci&amp;quot;: &amp;quot;{{nx.device.name}}&amp;quot;}</payloadTemplate>credentialsId:接続に使用するコネクター資格情報のID。 資格情報ページのURLから取得できます。httpMethod:外部システムに連絡するために使用する方法。サポートされている方法には次のものがあります。GETPOSTPATCHPUTDELETEoutputVariables:呼び出しから取得する必要のある期待される値のID、名前、およびパスを定義します。 Up to 5 outputs are supported.resourcePath:呼び出しを行うときに接続するエンドポイント。payloadTemplate:外部システムに送信されるJSONペイロード。NEALでのペイロードの場合、引用符【"】の代わりに&quot;を使用する必要があります。値ワークフローを設計する際に、動的または静的な値を定義できます。 これらの値を使用してワークフローを動的に動作させます。 動作は、提供された入力、すでに実行されたThinkletの出力から得られた値、またはNexthinkデータベース自体からの値に依存します。ワークフローは主に3つのタイプの値を使用します。ワークフローパラメーターワークフローパラメーターは、ワークフロー設計の一部として設定された値、Nexthinkユーザーからの入力要求、またはNexthink APIへの要求から取得された値です。 これらの値はワークフロー実行の寿命中は変わらず、作成しているワークフロー実行の最初から参照できます。歴史的な言語実装のため、ワークフローパラメーターのXMLタグはNEAL内で<global variable>として参照されます。ワークフローで必要な各ワークフローパラメーターは<global variable></global variable>タグを使用して設定する必要があります。各グローバル変数に対して、以下の属性を定義する必要があります。name:Nexthinkがワークフローパラメーターを参照するために使用するユニークな識別子。 ワークフローの他のエリアから値を参照する際にこの名前を使用する必要があります。 ワークフローを実行する際にも表示されます。type:ワークフローパラメーターが使用するデータタイプ。 現在サポートされているデータタイプは_string_のみです。 後のバージョンではさらに多くのデータタイプのサポートが追加される可能性があります。customValue:自動化が手動でトリガーされた際にNexthinkユーザーが値を設定できるかどうかを定義します。各タグ内にワークフローパラメーターを定義できます。 1つのみ定義すると、システムはこの値のみを使用します。 これらの値は<value></value>タグ内に配置する必要があります。ワークフローパラメーターを宣言する方法の例。| SpoolerMondayTuesdayWednesdayThursdayFridayThinkletは次の構文を使用してワークフローパラメーターを参照できます。source="global.valueName"以下は、前の例からのDayoftheWeekワークフローパラメーターをリモートアクションThinkletが参照している例です。| #get_date出力出力変数はThinkletが実行される一部として作成され設定される値です。 例えば、リモートアクションが情報を収集し、その出力として提示する場合、それらはワークフロー実行のライフサイクルの後半で使用できます。出力値を参照するには次の構文を使用します: source="thinkletId.result.outputs.outputName"例えば、リモートアクションThinkletが返す出力値がServiceNameであり、それをリモートアクションの入力として使用したい場合、Thinkletは以下のようにしてサービスを開始する参照をします:| #start_serviceデータベースデータベースの値はNexthinkデータベースから取得します。 システムがアクセスできるオブジェクトは2つあります。deviceuserdeviceおよびuserは、ワークフロー実行時にパラメーターとして送信されるオブジェクトです。 デバイスがターゲットにされた場合、ワークフローが実行される時点で最新の情報を使用して、これらのパラメージャーが埋められます。現在利用可能なのは静的値のみです。 イベントデータおよびカスタムデータは現時点でサポートされていません。このような値を使用する方法の2つの例:デバイスsource="nx.device.name"ユーザーsource="nx.user.ad.email_address"deviceまたはuserのようなデータベースオブジェクトへの参照は常にnxで始まります。条件でデバイス属性が使用される例:<exclusiveCondition id="hostname_changed" name="Hostname Changed?" description="この条件は、最後のアクションによってデバイスの名前が正常に変更されたかどうかを確認します。" >    <condition id = "hostname_changed_no" name="No" input="check_hostname.result.outputs.name" operator="eq" source="nx.device.name" targetRef="retry_name_change" />    <condition id = "hostname_changed_yes" name="Yes" input="check_hostname.result.outputs.name" operator="neq" source="nx.device.name" targetRef="endstate" /></exclusiveCondition>フロー制御開始ブロックすべてのワークフローには開始点が必要です。 通常、タグはそのままにしておくことができます。 主に、パスウェイ内の最初のThinkletとリンクするために使用されます。開始タグは1つだけである必要があります。| 終了ブロックワークフローには開始点が必要なように、終了も必要です。 ワークフローのすべてのパスウェイは最終的に終了ブロックに到達する必要があります。 少なくとも1つのパスが終了ブロックに到達しない場合、それは無効と見なされ、システムは実行しません。スタートブロックとは対照的に、ワークフローがエンドステートとみなされるポイントが複数存在することがあります。エンドブロックはワークフローの成果を定義する場所でもあります。 システムがワークフローロジックを実行しエンドブロックに到達すると、結果とその詳細が保存され、NQLを使用してクエリすることができます。エンドブロックには次の属性が必要です。id: システムがエンドブロックを識別し、参照するための一意の識別子。name: エンドブロックの説明的な名前。description: このエンドブロックが何を表すかを長く説明する、通常は期待される結果。outcome: エンドブロックに到達したときに何が起こるかを説明する必須の結果定義。 可能な値は次のとおりです。ACTION_TAKENNO_ACTION_TAKENFAILEDOTHERoutcomeDetails: ワークフローがエンドブロックに到達したときに何が起こるかの説明。 このフィールドの文字制限は64文字です。 Nexthinkは、この情報がダッシュボードで使用される場合に備えて、この説明を簡潔に保つことを推奨しています。|   ACTION_TAKENDriver removedパスパスは、ワークフローが各ステップがどのように次に繋がっているかを知るための方法です。パスを設定するには、次の属性が必要です。id: システムがパスを識別し、参照するための一意の識別子。name: Nexthinkのユーザーインターフェースに表示されるパスの説明的な名前。sourceRef: このパスが始まるタグのID。targetRef: このパスが進むタグのID。以下は、始まりのタグからRemote action Thinkletへのパスの例です。| 条件条件を使用して、ワークフローのどのパスが処理されるかを値に対して行われたチェックによって制御します。 これらの値は変数を通じて収集されます。 条件は排他的であり、システムは条件からの1つの経路しか使用しません。条件は<exclusiveCondition></exclusiveCondition>タグで囲まれています。各排他的条件タグでは次のものが必要です。id: システムが排他的条件を参照するための一意の識別子。name: Nexthinkのwebインターフェースに表示される説明的な名前。description: この条件が何のためにあるのか、他のNexthinkユーザーが判断するのに役立つ詳細な説明。各排他的条件タグの中で条件自体は次のとおりに定義される必要があります。id: システムが条件を参照するための一意の識別子。 この属性の一意性は、含まれている排他的条件だけでなく、ワークフロー全体に適用されることに注意してください。name: Nexthinkのwebインターフェースに表示される条件の説明的な名前。 これは、条件によってテストされる値の複雑さを隠すために使用できます。input: グローバルまたは出力のいずれかの変数がテストされます。operator: 変数の値に対して実行されるテストのタイプ。可能な演算子は次のとおりです。Is "eq"Is not "neq"Less than "lt"Greater than "gt"Less than or equal to "lte"Greater than or equal to "get"Contains "contains"Does not contain "notcontains"Is empty "isempty"Is not empty "isnotempty"value: 条件が真である場合の変数の期待値。targetRef: この条件が真である場合にジャンプするワークフロー内のステップのID。以下の例は、インストールされたソフトウェアアプリケーションの存在を確認するリモートアクションの結果を示しています。 アプリケーションがインストールされている場合、ワークフローは終了します。 アプリケーションが存在しない場合、ワークフローはリモートアクションThinkletを実行してアプリケーションをインストールします。|     #check_product_presence&#x3C;exclusiveCondition id="ProductInstalled" name="Is Product Installed?" description="This condition checks the output of the remote action looking for a specific product install to see if it was found or not" >    &#x3C;condition id = "ProductInstalled_Yes" name="Yes" input="CheckProduct.result.outputs.InstallState" operator="eq" value="true" targetRef="endState" />    &#x3C;condition id = "ProductInstalled_No" name="No" input="CheckProduct.result.outputs.InstallState" operator="eq" value="false" targetRef="InstallApplication" />&#x3C;/exclusiveCondition>  #general_application_install&#x3C;endEvent id="endState" name="End"/>&#x3C;path id="step2" name="Step 2" sourceRef="CheckProduct" targetRef="ProductInstalled" />待機待機フローコントロールを使用すると、一定時間経過するまで、または外部システムからのAPI呼び出しを待つことができます。 これは、システムが制御できない外部の何かを待つ必要がある場合に役立ちます。待機は2種類あり、typeパラメータを使用して次の値を設定できます。delayapiタイムデ――レータイムデ――レーのパラメータは以下の通りです。id: システムが待機フローコントロールを参照するための一意の識別子。name: Nexthinkのwebインターフェースに表示される説明的な名前。description: これは、他のNexthinkユーザーがこの待機フローコントロールが何のためにあるのかを判断するのに役立つ詳細な説明です。value: この段階に到達したときに一時停止する時間の単位数。unit: デ――レーの時間単位は以下の通りです。minuteshours <waitFor id="wait_for_updates" name="Wait for updates" type="delay" description="Wait for 5 hours for restart and updates to complete." value="5" unit="hours"></waitFor>APIリスナーAPIリスナーには次のパラメータがあります。id: システムが待機フローコントロールを参照するための一意の識別子。name: Nexthinkのwebインターフェースに表示される説明的な名前。description: これは、他のNexthinkユーザーがこの待機フローコントロールが何のためにあるのかを判断するのに役立つ詳細な説明です。timeout: タイムアウトを分単位で設定します。 これは、要求されるAPI呼び出しを待つ時間を決定します。 タイムアウト制限に達すると、ワークフローは失敗状態に入り、処理を停止します。出力は<outputVariables></outputVariables>要素内で定義され、最大5つの出力を定義できます。 各出力は<outputVariable></outputVariable>で囲まれています。各出力には次のパラメータがあります。name: Nexthinkのwebインターフェースに表示されるパラメータを説明する説明的な名前。id: 出力の一意の識別子。 このIDは、このAPIリスナーの予想されるAPI呼び出しでパラメーターを識別するために使用されます。  <waitFor id="wait_for_moveworks" name="Wait for Moveworks" type="api" description="Wait for Moveworks to respond with the user response" timeout="60">    <outputVariables>      <outputVariable id="command" name="Command"></outputVariable>    </outputVariables>  </waitFor>

Last updated