ThingWorx Flow > カスタム操作の作成および管理 > ThingWorx Flow 8.5 でのカスタム操作の作成
ThingWorx Flow 8.5 でのカスタム操作の作成
カスタム操作を作成するには、次の手順を完了します。
1. カスタム操作を ThingWorx Flow に追加するには、次のいずれかの操作を実行します。
ThingWorx Flow の設定ページから、「カスタム操作」に移動し、 をクリックします。
ワークフローエディタで、「操作」パネルから「カスタム」タブに移動し、 をクリックします。
「カスタム操作」ウィンドウが開きます。
カスタム操作にコード構造を作成するには、次のいずれかの方法に従います。
事前に値が設定されているデフォルトテンプレートを編集して独自のコードを記述する
既存の操作を継承またはコピーする
詳細については、 継承とコピーの違いを参照してください。
2. 既存の操作を継承またはコピーするには、次の操作を行います。
a. 「既存の操作から操作を選択」リストで、操作を継承またはコピーするコネクタをサーチします。
b. をクリックして、コネクタの下の操作のリストを展開します。
c. 継承またはコピーする操作を選択します。
d. 「既存の操作を使用」フィールドで、「継承」または「コピー」を選択します。
既存の操作を継承したりコピーしたりしない場合、事前に設定されているデフォルトテンプレートを編集してカスタム操作のコードを記述できます。
3. 「操作を含める」フィールドで、次のいずれかを選択します。
「カスタム操作」 - ワークフローエディタの「カスタム」タブの「カスタム操作」グループにカスタム操作を追加します。
「カスタムグループ」 - カスタム操作を独自のカスタムグループに追加します。このオプションの横のフィールドにカスタムグループの名前を入力します。カスタムグループ名はワークフローエディタの「サービス」タブに表示されます。
* 
認証を必要としない、継承またはコピーしたカスタム操作を、任意のカスタムグループに追加できます。
同じカスタムグループに、認証や接続のタイプが異なる複数の操作を追加することはできません。
既存のコネクタ操作をコピーまたは継承した場合、デフォルトでは、カスタム操作は同じコネクタの下に追加されます。たとえば、「Azure」コネクタの下の「異常検出」操作を選択した場合、デフォルトでは、「操作を含める」フィールドで「Azure」が選択されます。
* 
このオプションは、既存の操作をコピーまたは継承した場合にのみ表示されます。
4. 「アイコンを選択」フィールドで、「ブラウズ」をクリックして、カスタム操作のアイコンを選択します。128 x 128 の JPEG または PNG イメージを選択します。
* 
アイコンを割り当てなかった場合、デフォルトのカスタム操作アイコンが使用されます。
既存の操作を継承またはコピーしている場合、デフォルトでは、その操作のアイコンがカスタム操作アイコンとして使用されます。
5. コードエディタで、事前に値が取り込まれているテンプレートを編集して操作のコードを記述します。操作のさまざまな部分を定義する方法については、 カスタム操作の定義を参照してください。
6. 「コンパイル」をクリックします。コード内にエラーがある場合、コードエディタでハイライトされます。コンパイルに成功すると、カスタム操作の入力セクションで定義したすべての入力フィールドが、右側の枠に表示されます。
7. 「保存」をクリックしてカスタム操作を保存します。
カスタム操作の定義
カスタム操作は、その操作を定義する Node.js JavaScript 関数です。カスタム操作を作成する際には、コードエディタでサンプルテンプレートに事前に値が取り込まれます。このテンプレートを基にして、カスタム操作を作成します。
以下の表に、事前に取り込まれているコードの各種セクションに関する情報を示します。
凡例
説明
1
require() 関数を使用して、カスタム操作で使用する Node.js モジュールをインポートします。サンプルコードの操作は、サードパーティシステムに対して単純な HTTP 呼び出しを行う request モジュールをインポートしています。
* 
カスタム操作で使用可能な Node モジュールのリストは ここにあります。
カスタム操作で Node モジュールを使用する方法については、 カスタム操作のカスタマイズを参照してください。
2
this.localization.namespace:label - カスタム操作の名前を指定する属性。this.localization の下の特定のロケールで、label 変数の値によって、そのロケールでのカスタム操作の名前を定義しています。
* 
ローカライズサポートが必要でない場合、カスタム操作名をここで指定できます。
3
this.input - ワークフロー内の操作を設定しているときに表示される入力フィールドを定義する属性。これは JSON スキーマであり、有効でなければなりません。以下の各パラメータの値を割り当てます。
title (必須) - 内部で識別子として使用されます。
このサンプルコードでは、title フィールドの値は this.localization.namespace:sample_input です。this.localization の下の特定のロケールで、sample_input 変数の値によって、そのロケールでの title の値を設定しています。
type (必須) - 内部で使用されます。この値は必ず object に設定してください。この値を変更しないでください。
properties (必須) - その操作の複数の入力フィールドと検証条件 (存在する場合) を定義します。各入力フィールドに一意のキー (first_name など) を定義し、各入力フィールドに次の値を定義します。
title - 入力フィールドの名前。
このサンプルコードでは、title フィールドの値は this.localization.namespace:Custom_Action_First_Name です。this.localization の下の特定のロケールで、Custom_Action_First_Name 変数の値によって、そのロケールでの title の値を設定しています。
type - そのフィールドのタイプ。例: string、integer、number など。
description - ツールヒントとして表示されるメッセージ。
このサンプルコードでは、description フィールドの値は this.localization.namespace:Enter_Custom_Action_First_Name です。this.localization の下の特定のロケールで、Enter_Custom_Action_First_Name 変数の値によって、そのロケールでの description の値を設定しています。
minLength - 入力フィールドを必須にする場合にのみ、このフィールドの値を 1 に設定します。入力フィールドを必須にしない場合、その入力フィールドの属性を除去します。
4
this.output - 操作から返されてワークフロー内のほかの操作で使用可能になる出力フィールドを定義する属性。これは JSON スキーマであり、有効でなければなりません。以下の各パラメータの値を割り当てます。
title (必須) - 内部で識別子として使用されます。
このサンプルコードでは、title フィールドの値は this.localization.namespace:output です。this.localization の下の特定のロケールで、output 変数の値によって、そのロケールでの title の値を設定しています。
type (必須) - 内部で使用されます。この値は必ず object に設定してください。この値を変更しないでください。
properties (必須) - その操作の複数の出力フィールドを定義します。各出力フィールドに一意のキー (status など) を定義し、各出力フィールドに次の値を定義します。
title - 出力フィールドの名前。
このサンプルコードでは、title フィールドの値は this.localization.namespace:status です。this.localization の下の特定のロケールで、status 変数の値によって、そのロケールでの title の値を設定しています。
type - そのフィールドのタイプ。例: string、integer、number など。
5
this.localization - カスタム操作の一意のトークン、および入力フィールドと出力フィールドの英語での名前とローカライズされた名前を定義する属性。以下の各パラメータの値を割り当てます。
namespace (必須) - カスタム操作に自動的に生成されたトークン。namespace パラメータの値がすべてのカスタム操作で一意でなければなりません。
* 
この値を修正しないでください。
en (必須) - フィールド名および内部で使用される識別子名。次の図に、フィールド名とその英語の値を示します。
de - フィールド名および内部で使用される言語の識別子名。サンプルコードでは対応するドイツ語の値を指定しています。複数の言語とそれに対応する値を追加できます。
* 
ThingWorx Flow 8.4.x から ThingWorx Flow 8.5 にマイグレーションした場合、ThingWorx Flow 8.4.x で作成されたカスタム操作は引き続き ThingWorx Flow 8.5 でも機能します。カスタム操作の入力フィールドと出力フィールドのローカライズサポートを追加できます。ただし、ThingWorx Flow 8.4.x で作成されたカスタム操作のラベルをローカライズすることはできません。
6
this.execute - その操作がワークフロー内で実行されたときに実行されるプログラムロジックを定義する属性。この関数では以下の 2 つの関数パラメータを定義する必要があります。
input - ワークフロー実行時に入力パラメータの値が格納される JSON オブジェクト。これらの値は、その操作の this.input 属性で定義されている入力フィールドキーを使用して参照します。
output - 出力値をワークフローに渡すために呼び出す必要があるコールバック関数。これはその操作が完了したことを示します。そのコードによって出力される JSON が this.output JSON スキーマと一致しなければなりません。この関数は callback(err,output) という形式をとります。
err - そのワークフローで発生したすべてのエラーを報告します。エラーが発生しなかった場合、null を指定します。
output - その操作の this.output 属性で定義されている各キーの値が格納されている JSON オブジェクト。