Skip to main content
前提条件を完了すると、Script を記述できる場所であればどこでもPython を読み取って実行できます。これには、Script コネクタ、イベントXML Map コネクタのコードスクリプトなどが含まれます。 のスクリプティングエンジンにScript ではなくPython を使用するよう指示するには、使用する言語としてPython を定義する必要があります。これは、次に示すようにarc:script キーワードにlanguage 属性を設定することで行います:
Python は のスクリプティングエンジンに直接埋め込まれているため、Python の記述に精通したユーザーは、スクリプト内でメッセージやコンテキストとやり取りする際に似たような構文を使用できます。 Script とPython を同じスクリプト内で使用することもできます。これは、すでにScript を記述しているが、Python を使用して追加のロジックを実装する必要がある場合に便利です。次の例に示すように、Python を使用してScript で記述された項目に直接アクセスできます:
では、多くのPython メソッドおよび変数がメッセージ、アイテム、アトリビュートのコンテキストと連携して動作します。

組み込みオブジェクトインターフェース

のPython 実装では、2つの主要なインターフェースが使用されます。これらは、以下に一覧表示する組み込み変数を保持し、それらへのアクセスを提供します:

ScriptContext

これは、 のPython スクリプトのメインのスクリプティングコンテキストオブジェクトを表します。アイテムへのディクショナリのようなアクセスを提供し、ログ記録機能を含みます。このインターフェースは、コンテキストへのアクセスに使用できる_ctx 変数へのアクセスを提供します。 利用可能なメソッドは次のとおりです:

ScriptItem

これは、 のスクリプティング環境における個々のデータアイテムを表します。アトリビュートへのディクショナリのようなアクセスを提供し、値リストを保持します。次の変数は、自動的に利用可能なScriptItem のインスタンスです: 利用可能なメソッドは次のとおりです: 大枠では、_ctx はスクリプティングコンテキストへのアクセスを提供し、_inputoutput_message はあらかじめインスタンス化されたScriptItem オブジェクトです。カスタムアイテムを動的に作成またはアクセスするには、_ctx.itemname 構文を使用します。詳細については、組み込み変数およびオペレーションを参照してください。

組み込み変数

これらの変数は、スクリプティング環境におけるメッセージコンテキストの中核へのアクセスを提供します。これらを使用して、スクリプティングエンジンで利用可能なアイテムとやり取りします。

_ctx

スクリプティング環境にアクセスするためのメイン変数です。これは以下を提供します:
  • スクリプトで利用可能なすべてのアイテムへのアクセス
  • 新しいアイテムの作成、アイテムのプッシュ、およびアプリケーションログへのログ記録の機能
次の例では、_ctx 変数のlog メソッドを呼び出して、INFO ログレベルを使用してアプリケーションログに情報を記録しています:

_input

スクリプティングエンジンの読み取り専用のインプットアイテムです。利用可能なアトリビュートは、スクリプトを記述するコンテキスト(コネクタのアクションタイプなど)によって異なります。例えば、Transform アクションに設定されたScript コネクタでは、次のアトリビュートを使用できます:
  • ConnectorId
  • WorkspaceId
  • MessageId
  • FilePath
  • FileName
  • Attachment#
  • Header:*
ただし、コネクタにインプットが提供されないTrigger アクションにScript コネクタを設定した場合、利用可能なのはConnectorId とWorkspaceId のみです。 次の例では、コネクタの名前を現在のメッセージのログファイルに出力します:
次の例では、インプットファイルを取得して名前を変更し、元の名前をログに記録してから、新しい名前で同じファイルをプッシュします:
次の例では、インプットファイルの名前をチェックして、それが生鮮品と非生鮮品のどちらのリストであるかを確認します。次に、ファイル名に基づいて生鮮品ヘッダーと値を設定します:

output

単一のアウトプットのみが必要な場合に、独自のアイテムを作成してプッシュする代わりとなる組み込みアイテムです。push() を明示的に呼び出してアウトプットとして送信する必要があるカスタムアイテムとは異なり、output アイテムはスクリプトの完了時に自動的にプッシュされます。そのプロパティを変更するだけで、スクリプトの実行が完了すると、追加のpush() 呼び出しを必要とせずにアウトプットとして自動的にプッシュされます。 アトリビュートをアイテムに直接設定することも、dict を使用して定義することもでき、独自に定義したアイテムに対しても同じことができます。次の例では、いくつかのデータを含むアウトプットファイルをプッシュします:
次の例では、インプットファイルを取得して名前を変更し、元の名前をログに記録してから、新しい名前で同じファイルをプッシュします:

_message

コンテキストにメッセージがロードされている場合に、現在のメッセージへのアクセスを提供します。この変数は、特定のシナリオでコネクタによってメッセージがアクティブに処理されている場合(コンテキストにメッセージがロードされている場合など)にのみアクセスできます。例えば、_message 変数は、アクションTrigger に設定されたコネクタでは利用できません。これは、コネクタが処理を終えるまでメッセージが存在しないためです。この変数が利用できない場合、_message is not defined 例外が表示されます。 次のアトリビュートを使用できます:
  • Header:Message-Id
  • Header:FileName
  • Header:*
  • body
次の例では、メッセージ本文に対していくつかの簡単な文字列操作を行います:
結果として得られるアウトプットは、メッセージのログに出力されます:
次の例は、_message アイテムからCustomerID ヘッダーを読み取り、現在のメッセージのログファイルにエントリとして出力する方法を示しています。

result

特にXML Map スクリプトノードで使用する特別な変数です。これはスクリプト全体の結果として扱われます。この変数の値は、マップ内のノードの値として使用されます。ただし、Script コネクタでのデバッグツールとしても使用できます。 次の例は、XML Map コネクタの宛先ノードのスクリプトで使用されるもので、先頭で宣言されたScript アイテムからソースファイルのaddress/city xpath を読み取り、Python を使用して値を最初の3文字すべて大文字に変更します。新しい値は、result の値として送信されます:
次の例では、result 変数を使用してScript コネクタのログファイルにエントリを追加します:
スクリプトのアウトプットは次のようになります:

オペレーション

log

log(level, message) は、_ctx 変数で利用可能なメソッドで、アプリケーションログにエントリを直接書き込むことができます。利用可能なログレベルは、DEBUG、INFO、WARNING、ERROR です。
前の例では、次のログエントリが生成されます: アクティビティログ内のPython ログ結果

push

push(item) は、指定されたアイテムをスクリプトのアウトプットとしてプッシュします。アウトプットが指定されていない場合は、output アイテムがプッシュされます。 次の例では、新しいアイテムfooScriptContext に作成され、いくつかのデータとファイル名が割り当てられてからプッシュされます。

get

get(attr) は、ScriptItem の指定されたアトリビュートの値を返します。このメソッドは、アトリビュートに名前でプログラム的にアクセスする方法を提供します。これは、ドット表記(_input.myattr など)を使用して直接アトリビュートにアクセスすること、またはディクショナリスタイルのアクセス(_input.get('myattr') など)と機能的に同等です。 次の例では、item オブジェクトのtags アトリビュートの値リストを、現在のスクリプトのログファイルに出力します。

clear

clear() は、メソッドが呼び出されたScriptItem をクリアします。アイテムはそのまま残り、空になるだけです。
前の例では、次のアウトプットが生成されます:
  • Before clear:{"price":"2.99","name":"Milk","tags":["perishable","dairy","noreturn"]}
  • After clear:{}