カスタム アクション

[カスタム アクション] ステップでは、Connectors を使用してロボット内からデータを処理するために外部リソースを利用できます。Connectors は、ロボットが使用する 1 つ以上のアクションを定義し、アクションを実装するために必要なすべてのリソースを含むパッケージです。

Connectors は、外部プログラムの呼び出し、シェル コマンド、またはプライベート インスタンスで JavaScript と Python を実行するアクションを定義できます。これらのアクションは、Design Studio の [カスタム アクション] ステップのアクションとして利用できます。

ヒント 追加のソリューション、ロボット、コネクタなどを見つけるには、https://smarthub.kofax.com/ の Kofax Intelligent Automation SmartHub にアクセスしてください。

Connectors の設定

このセクションでは、Connectors を [カスタム アクション] ステップで使用するための設定方法について説明します。

ロボットで Connectors を使用する前に、[RoboServer 設定] アプリケーションの [セキュリティ] タブで [Connector の使用を許可] を選択します。[RoboServer 設定] は、Windows のスタート メニューから起動できます。詳細については、『Kofax RPA 管理者ガイド』 の「RoboServer 設定」の章を参照してください。

Connector の作成

Connectors は、拡張子が .connector の .zip アーカイブとして分配されます。カスタム アクション ステップでロボットを作成する前に、ZIP を使用して Connector をアーカイブし、ファイル拡張子を .connector に変更して、プロジェクトに追加します。プロジェクトが Management Console にアップロードされると、使用できる Connectors が [リポジトリ] > [リソース] タブで確認できるようになります。Connectors は次に、必要に応じて RoboServers および自動化されたデスクトップ コンピュータにアップロードされます。

各 .zip ファイルには、ルートに manifest.json ファイルが含まれている必要があります。ファイルには、Connector で使用可能なすべてのアクションを定義するマニフェストが含まれている必要があります。マニフェストの説明は以下を参照してください。

各アクションは、一連のパラメータ、応答、およびコマンド ラインを定義します。パラメータはロボット設計者に提示され、ロボットが入力する必要があります。コマンド ラインは、パラメータの組み合わせを使用して構成され、要求の実行に使用されます。要求の出力は解析され、応答で定義された変数を満たすために使用されます。

Management Console への Connectors のアップロード

Design Studio でカスタム アクション ステップを含むロボットのデザインを完了したら、Management Console にアップロードします。プロジェクトが Management Console にアップロードされると、使用できる Connectors が [リポジトリ] の [リソース] タブで確認できるようになります。Connectors は次に、必要に応じて RoboServers および自動化されたデスクトップ コンピュータにアップロードされます。

Python および NodeJS を使用している Connectors は、オンデマンドでロードされます。これらを使用していない場合は、リソースを必要としません。各 Connector は独自の python または node.js インスタンスを受け取り、このタイプの Connectors を必要に応じて異なるバージョンで複数実行できます。

プログラムの実行 (タイプ:プログラム)

プログラム アクションは、抽出された Connector ファイルに設定された現在の作業ディレクトリを使用して、指定されたプログラムを直接呼び出します。実行可能ファイルが Connector パッケージの一部である場合、マニフェストは相対パス (./executable など) を使用してこれを明示的にする必要があります。この方法を使用しなかった場合、ロボットが実行可能ファイルを見つけることができない可能性があります。

追加の構成 (PATH 設定または Linux ダイナミック ローダー設定) が必要な場合、シェル ラッパーを使用して設定をセットアップし、実行可能ファイルを呼び出すことをお勧めします。パラメータは、追加のエスケープをせずにプログラムに直接渡されます。

シェルコマンドの実行 (タイプ:shell)

シェル インターフェイスは、シェルを起動して、抽出された Connector ファイル ディレクトリに設定された現在の作業ディレクトリでコマンド ラインを直接実行します。 このコマンド ラインの処理はシェル自体によって処理されるため、プラットフォームに応じて異なります。

  • Windows では、このアクションによって CMD/C が呼び出され、コマンド ラインのすべての要素が直接シェルに渡されます。

  • Linux では、このアクションによって bash -c が呼び出され、コマンド ラインの各要素が個別の引数として渡されます。パラメータは、追加のエスケープをせずにシェルに直接渡されます。詳細については、bash -c オプションに関するドキュメントを参照してください。

JavaScript の実行 (タイプ:ノード)

Node.js JavaScript の要求は function() コンテキストにラップされて実行されます。コードに require ステートメントが含まれている場合、それらは Connector パッケージのルートにある node_modules ディレクトリを使用して解決されます。

デフォルトでは、パラメータは文字列に変換され、コマンド ラインに挿入される前にエスケープされます。コマンド ラインはエスケープされません。

インターフェイスが同期している場合、ロボットは JavaScript から返された値と例外値の両方を受け取ります。この 2 つのフィールドのうち 1 つだけが空でない値を持ちます。オブジェクトは、ロボットに返される前に JSON にシリアル化されます。

特定の Node.js 実行可能ファイルは、ルートに配置することでパッケージに埋め込むことができます。実行可能ファイルが存在しない場合、Kofax RPA に含まれている Node.js LTS のバージョンが使用されます。

Python の実行 (タイプ:python)

Python の要求は、exec() ステートメントと永続的な private global() 辞書を使用して実行されます。Connector が独自のモジュールを提供できるように、Connector パッケージのルートが sys.path の前に追加されます。

デフォルトでは、パラメータは文字列に変換され、コマンド ラインに挿入される前にエスケープされます。コマンド ラインはエスケープされません。

Python の exec() ステートメントはトップ レベルで return ステートメントを許可しないため、要求はその結果を代わりにグローバル rpa_return 変数に割り当てる必要があります。この変数は、リクエスト間のグローバル スコープから削除されます。インターフェイスが同期している場合、ロボットは rpa_return の変数と例外値を受け取ります。この 2 つのフィールドのうち 1 つだけが空でない値を持ちます。オブジェクトは、ロボットに返される前に JSON にシリアル化されます。

RPAConnector 名は内部使用のために予約されています。モジュール名として使用したり、 Connector パッケージ内に RPAConnector というディレクトリを作成しないでください。

Kofax RPA はデフォルトの Python インタープリターを使用します。この設定は、マニフェストで「python3.8」や「/usr/bin/python3」などの別の名前またはパスを使用することでオーバーライドできます。指定されたインタープリターはシステムが解決します。

Python 2 と Python 3 の言語が異なるため、使用するメジャーな Python バージョン用にパッケージを構成する必要があります。Python 2.7 および Python 3 バージョン 3.5 以降のみがサポートされています。6 つのパッケージが Python のインストールに存在している必要があります。

ローカル デバイスでの Connectors の実行

Desktop Automation ロボットのローカル デバイスでカスタム Connectors を使用するには、ローカル デバイス RoboServer の [RoboServer 設定] アプリケーションで [Connectors の使用を許可] オプションを選択します。

マニフェスト

Manifest.json ファイルには、次の JSON 要素が含まれている必要があります。

フィールド

ステータス

説明

アクション

必須

アクションの配列。

名前

必須

カスタム アクション ステップで表示されている Connector の名前。

python

任意

String

Python アクションで実行する実行可能ファイルを指定します。この設定はすべてのプラットフォームに適用されますが、次のプラットフォーム固有の設定のいずれかを使用して上書きすることができます。

デフォルト: 「python

python-windows

任意

String

記述されている場合、Windows プラットフォームで Python アクションに対して実行する実行可能ファイルを指定します。

python-linux

任意

String

記述されている場合、Windows プラットフォームで Linux アクションに対して実行する実行可能ファイルを指定します。

python-support

任意

整数

使用される Python のメジャー バージョンを指定します。サポートされる値は、Python 2.7 では 2、Python 3.x では 3 です。

デフォルト: 3

アクション

次の表はアクションの形式を詳しく説明しています。

テーブル 1. アクション形式

フィールド

ステータス

説明

名前

必須

アクションの名前。

タイプ

必須

アクションのタイプ。次のいずれかでなければなりません: 「program」、「shell」、「node」または 「python

parameters

任意

カスタム アクション ステップで入力フィールドとして表される一連のパラメータ。

レスポンス

任意

カスタム アクション ステップで出力フィールドとして表される一連のレスポンス。このフィールドを省略すると、アクションの定義に応じてデフォルトのレスポンス セットが使用されます。

commandline

必須

要求コマンドのパラメーターを表す文字列のセット。「プログラム」アクションの場合、最初のパラメーターが実行可能ファイルになります。パラメーターは %n エスケープを使用して挿入できます (パラメーター配列から n th番目の値を挿入します)。%% を使用して、パーセント記号を挿入します。

パラメータ置換後に空の要素は削除されます。

node」および「python」要求の場合、完全なスクリプトを送信できます。

prune

任意

ブール値

空の文字列に展開された要素をコマンド ライン配列から削除することを示します。

デフォルト: true

wait

任意

ブール値

ロボットがアクションの終了を待つことを示します。「node」アクションおよび「python」アクションの場合、またはアクションにレスポンス配列がある場合、この設定は無視されます。

デフォルト: true

stdout

任意

ブール値

変数にある「program」または「shell」アクションからの標準出力ストリームのキャプチャを有効にします。「wait」が false の場合、このフィールドは無視されます。

デフォルト: false

stderr

任意

ブール値

変数にある「program」または「shell」アクションからの標準エラー ストリームのキャプチャを有効にします。「wait」が false の場合、このフィールドは無視されます。

デフォルト: false

パラメータ
次の表はパラメータの形式を詳しく説明しています。
テーブル 2. パラメータ形式

フィールド

ステータス

説明

名前

必須

パラメータの名前。この名前は、カスタム アクション ステップに表示されます。

タイプ

必須

パラメータのタイプ。このタイプは、次のいずれかでなければなりません。「string」または「number」「number」パラメータは整数に制限されます。

デフォルト

任意

パラメータのデフォルト値。

デフォルト: パラメータのタイプに応じて、「」または 0。

最小

任意

数値

パラメータの最小許容値。この属性は、「number」パラメータでのみサポートされています。他のタイプでは無視されます。

デフォルト: -2147483648

最大

任意

数値

パラメータの最大許容値。この属性は、「number」パラメータでのみサポートされています。他のタイプでは無視されます。

デフォルト: +2147483647

任意

任意

ブール値

オプションのパラメータは、ロボットに割り当てられていないか、空のままにすることができます。

デフォルト: false

エスケープ

任意

ブール値

値を引用符で囲み、特殊文字をエスケープします。この属性は現在、「node」および「python」文字列パラメータでサポートされています。他のすべての状況では無視されます。

デフォルト: true

数値パラメータの場合、デフォルト値は最小値と最大値の間にある必要があります (両端を含む)。3つの設定はすべて、-2147483648 から +2147483647 の範囲内である必要があります。

レスポンス
次の表は、レスポンス形式を示します。
テーブル 3. レスポンス形式

フィールド

ステータス

説明

名前

必須

レスポンスの名前。この名前は、カスタム アクション ステップに表示されます。

タイプ

必須

レスポンスのタイプ。このタイプは、次のいずれかでなければなりません。「string」または「number」「number」レスポンスは整数に変換されます。

任意

任意

ブール値

出力にレスポンスが存在する必要がないことを示します。レスポンスが省略された場合、変数にはデフォルト値が入力されます。

デフォルト: false

デフォルト

任意

パラメータのデフォルト値。

この値は、オプションのパラメータがレスポンスから省略された場合に使用されます。

デフォルト: パラメータのタイプに応じて、「」または 0。

アプリケーションのレスポンスの浮動小数点数値は整数に変換されます。

manifest.json の例

次の Linux ベースの例では、対応する関数を呼び出して 2 つの数値を加算するさまざまなコネクタ (シェル、ノード、python、プログラム) を使用しています。関数パラメータは、この関数に渡される順序で定義されます (例: First number および Second number の順序)。計算の結果は、Sum 値に割り当てられた変数に格納されてロボットに戻されます。出力値は、コネクタごとに異なった方法で割り当てられます。

python.connector

このコネクタを機能させるには、コネクタを備えたロボットが実行されているコンピュータに最新の Python バージョンをインストールします。

{"actions": [
    {
      "name": "Adder",
      "type": "python",
      "parameters": [
        {
          "name": "First number",
          "type": "number"
        },
        {
          "name": "Second number",
          "type": "number",
          "min": 1,
          "default": 1000
        }
      ],
      "response": [
        {
          "name": "Sum",
          "type": "number"
        }
      ],
      "commandline": [
        "rpa_return = { 'Sum': %1 + %2 }"
      ]
    }
  ],
  "name": "Adder Function (python)"
}
shell.connector
{
  "actions": [
    {
      "name": "Adder",
      "type": "shell",
      "parameters": [
        {
          "name": "First number",
          "type": "number"
        },
        {
          "name": "Second number",
          "type": "number",
          "min": 1,
          "default": 1000
        }
      ],
      "response": [
        {
          "name": "Sum",
          "type": "number"
        }
      ],
      "commandline": [
	"echo \"{ \\\"Sum\\\": $((%1 + %2)) }\""
      ]
    }
  ],
  "name": "Adder Function (shell)"
}
node.connector
{
  "actions": [
    {
      "name": "Adder",
      "type": "node",
      "parameters": [
        {
          "name": "First number",
          "type": "number"
        },
        {
          "name": "Second number",
          "type": "number",
          "min": 1,
          "default": 1000
        }
      ],
      "response": [
        {
          "name": "Sum",
          "type": "number"
        }
      ],
      "commandline": [
        "return { Sum: %1 + %2 };"
      ]
    }
  ],
  "name": "Adder Function (node)"
}
program.connector

このコネクタは、コネクタによって呼び出される実行可能プログラム「add」を使用します。

{
  "actions": [
    {
      "name": "Adder",
      "type": "program",
      "parameters": [
        {
          "name": "First number",
          "type": "number"
        },
        {
          "name": "Second number",
          "type": "number",
          "min": 1,
          "default": 1000
        }
      ],
      "response": [
        {
          "name": "Sum",
          "type": "number"
        }
      ],
      "commandline": [
        "./add", "%1", "%2"
      ]
    }
  ],
  "name": "Adder Function (program)"
}
レスポンスの定義
プログラム
  • アクションに応答配列がある場合、待機フィールドは無視され、プログラムが終了するまでロボットは待機します。プログラムの標準出力はキャプチャされ、JSON 文字列として解析され、変数にはこの文字列の各フィールドが入力されます。プログラムが有効な JSON 文字列を生成しない場合、ロボットは失敗します。
  • アクションにレスポンス配列がなく、待機フィールドが false の場合、ステップにはレスポンス変数がありません。
  • アクションにレスポンス配列がなく、待機フィールドが true の場合、ステップには次のレスポンス変数があります。
    • rc: プログラムの戻りコード。
    • stdout: プログラムの標準出力ストリーム (stdouttrue の場合のみ提供されます)。
    • stderr: プログラムの標準エラー ストリーム (stderrtrue の場合のみ提供されます)。

Connector の構成に関係なく、標準出力ストリームと標準エラー ストリームは、INFO レベルで Kofax RPA ログに記録されます。

シェル

シェル アクションは、Windows では CMD.EXE、Linux では bash を使用して実行されます。

  • アクションに応答配列がある場合、待機フィールドは無視され、シェルが終了するまでロボットは待機します。シェルの標準出力はキャプチャされ、JSON 文字列として解析され、変数にはこの文字列の各フィールドが入力されます。プログラムが有効な JSON 文字列を生成しない場合、ロボットは失敗します。
  • アクションにレスポンス配列がなく、待機フィールドが false の場合、ステップにはレスポンス変数がありません。
  • アクションにレスポンス配列がなく、待機フィールドが true の場合、ステップには次のレスポンス変数があります。
    • rc: シェルの戻りコード。
    • stdout: シェルの標準出力ストリーム (stdouttrue 場合のみ提供されます)。
    • stderr: シェルの標準エラー ストリーム (stderrtrue 場合のみ提供されます)。

Connector の構成に関係なく、標準出力ストリームと標準エラー ストリームは、INFO レベルで Kofax RPA ログに記録されます。

NodeJS

コマンド ラインは、関数のコンテキストで実行されます。コマンドは、結果をロボットに返すために return ステートメントを使用する必要があります。

  • アクションにレスポンス ブロックがある場合、オブジェクトまたは JSON 文字列を返すことが期待され、変数にはこのオブジェクトの各フィールドが入力されます。例外がスローされ、処理されない場合、ロボットは失敗します。
  • アクションにレスポンス ブロックがない場合、ステップには次の 2 つの応答変数があります。

    結果: ステートメントが正常に完了した場合、この変数はステートメントによって返された値を受け取ります。

    エラー: 例外がスローされ、JavaScript コードで処理されない場合、この変数には例外のテキストが含まれます。

Python

コマンド ラインは exec() 関数を使用して実行されます。このコマンドは、ロボットに結果を返すために、グローバル変数 rpa_return に値を割り当てる必要があります。

  1. アクションにレスポンス ブロックがある場合、rpa_return はオブジェクトまたは JSON 文字列を含める必要があり、変数にはこのオブジェクトの各フィールドが入力されます。例外がスローされ、処理されない場合、ロボットは失敗します。

  1. アクションにレスポンス ブロックがない場合、ステップには次の 2 つの応答変数があります。
    • 結果: ステートメントが正常に完了した場合、この変数は rpa_return の値を受け取ります。

    • エラー: 例外がスローされ、Python コードで処理されない場合、この変数には例外のテキストが含まれます。

実装の詳細

.zip ファイルの次の要素は予約されています。

タイプ

パス

説明

ファイル

/manifest.json

マニフェスト

ファイル

/node

Linux プラットフォーム用の Node.js 実行可能ファイル。このファイルが存在しない場合、Kofax RPA に含まれている Node.js インスタンスが使用されます。

ファイル

/node.exe

Windows プラットフォーム用の Node.js 実行可能ファイル。このファイルが存在しない場合、Kofax RPA に含まれている Node.js インスタンスが使用されます。

ディレクトリ

/node_modules

Node.js モジュールの場所。

ディレクトリ

/RPAConnector

内部使用のために予約されています。

ディレクトリ

/node_modules/RPAConnector

内部使用のために予約されています。