NEAL

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

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

構造

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

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

  1. ID

  2. 開始

  3. Thinklet

  4. パス

  5. 終了

NEALの例

これは、プリント スプーラーを再起動する 1 つのリモート アクション Thinklet を含むシンプルな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" />








<workflow></workflow> タグはNEALスクリプトを開始、カプセル化、終了しますが、タグの順序は関係ありません。 ただし、ワークフローがタグを処理する順序は、<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、名前、およびパスを定義します。 システムは最大5つの出力をサポートしています。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"たとえば、ServiceNameという出力値を返すリモート アクションThinkletを、さらにリモート アクションの入力として使用したい場合は、次のようにしてサービスを開始する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。以下は、開始タグからリモートアクション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: 出力のunique identifier。 この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

Was this helpful?