ThingWorx Flow > カスタム操作の作成および管理 > ThingWorx Flow 8.4.x でのカスタム操作の作成
ThingWorx Flow 8.4.x でのカスタム操作の作成
カスタム操作は、 ThingWorx Flow 設定ページ、またはワークフロー内で「操作」パネルの「カスタム」タブで作成します。
カスタム操作を作成するには、次の手順を完了します。
1. カスタム操作を ThingWorx Flow に追加するには、次のいずれかの操作を実行します。
ThingWorx Flow の設定ページから、「カスタム操作」に移動し、 をクリックします。
ワークフローエディタで、「操作」パネルから「カスタム」タブに移動し、 をクリックします。
「カスタム操作」ウィンドウが開きます。
2. 「ラベル」フィールドに、操作に適した名前を入力します。これは必須です。
3. コードエディタで、事前に値が取り込まれているテンプレートを編集して操作のコードを記述します。操作のさまざまな部分を定義する方法については、 カスタム操作の定義を参照してください。
4. 「コンパイル」をクリックします。コード内にエラーがある場合、コードエディタでハイライトされます。コンパイルに成功すると、カスタム操作の入力セクションで定義したすべての入力フィールドが、左側の枠に表示されます。
5. 「保存」をクリックします。操作は「操作」パネルの「カスタム」タブの下の使用可能な操作のリストに追加され、キャンバス上に操作をドラッグすることでワークフローで使用できます。
カスタム操作の定義
カスタム操作は、その操作を定義する Node.js JavaScript 関数です。カスタム操作を作成する際には、コードエディタでサンプルテンプレートに事前に値が取り込まれます。このテンプレートを基にして、カスタム操作を作成します。
番号
説明
1
コードの先頭で関数 require() を使用して、カスタム操作で使用する Node.js モジュールをインポートします。サンプルコードの操作は、サードパーティシステムに対して単純な HTTP 呼び出しを行う request モジュールをインポートしています。
* 
誤用を防止するため、カスタム操作では以下の Node.js モジュールのみをインポートして使用できます。
assert, buffer, crypto, events, http, https, lodash, path, punycode, querystring, request, soap, string_decoder, url, ws, xml2js, zlib
2
this.id - カスタム操作の一意の識別子として使用される属性。
3
this.label - カスタム操作の名前を指定する属性。
* 
this.label を使用して操作のタイトルを設定した場合、「カスタム操作」ウィンドウで入力した操作ラベルがこのタイトルによって自動的にオーバーライドされます。
4
this.input - ワークフロー内の操作を設定しているときに表示される入力フィールドを定義する JSON 属性。以下の 3 つの JSON キーに値を割り当てる必要があります。
title - (必須) 内部で識別子として使用されます
type - (必須) 内部で使用されます。このキーの値は必ず object に設定し、これを変更してはなりません。
properties - (必須) その操作に表示される入力フィールドと検証条件 (存在する場合) を定義する JSON 属性。各入力フィールドは first_name などの一意のキーを持ち、以下のアイテムの値を定義する必要があります。
title - (必須) そのフィールドに表示されるラベル (「名」など)。
type - (必須) そのフィールドのタイプ。有効なタイプは string、object、array、any です
description - (オプション) ツールヒントとして表示されるメッセージ。
minLength - (オプション) 指定する必要がある最小文字数を指定します。
* 
フィールドを必須にするには、minLength の値を 1 に設定します。
5
this.output - 操作から返されてワークフローの残りの部分で使用可能になる出力フィールドを定義する JSON 属性。以下の 3 つの JSON キーに値を割り当てる必要があります。
title - (必須) 内部で識別子として使用されます。
type - (必須) 内部で使用されます。このキーの値は必ず object に設定し、これを変更してはなりません。
properties - (必須) 出力フィールドを定義する JSON 属性。各出力フィールドは status などの一意のキーを持ち、以下のアイテムの値を定義する必要があります。
title - (必須) そのフィールドに表示されるラベル (status など)。
type - (必須) そのフィールドのタイプ。有効なタイプは string、object、array、any です。
6
this.execute - その操作がワークフロー内で実行されたときに実行されるプログラムロジックを定義する関数。この関数では以下の 2 つの関数パラメータを定義する必要があります。
input - ワークフロー実行時に入力パラメータの値が格納される JSON オブジェクト。これらの値は、その操作の this.input 属性で定義されている入力フィールドキーを使用して参照できます。
output - 出力値をワークフローに渡すために呼び出す必要があるコールバック関数。これはその操作が完了したことを示します。この関数は callback(err,output) という形式をとります。
err - そのワークフローで発生したすべてのエラーを報告します。エラーが発生しなかった場合、Null を使用します。
output - その操作の this.output 属性で定義されている各キーの値が格納されている JSON オブジェクト。
* 
ThingWorx Flow 8.4.x から ThingWorx Flow 8.5 にマイグレーションした場合、ThingWorx Flow 8.4.x で作成されたカスタム操作は引き続き ThingWorx Flow 8.5 でも機能します。カスタム操作の入力フィールドと出力フィールドのローカライズサポートを追加できます。ただし、ThingWorx Flow 8.4.x で作成されたカスタム操作のラベルをローカライズすることはできません。