エージェントがagentsConfig.xmlに追加されると、エージェントをActivityノードに割り当てることで、プロセスインスタンス内でアクティビティとして実行することができます。これにより、エージェントはアクティビティの代わりに実行されます。
agentsConfig.xml環境設定ファイル
エージェントは、agentsConfig.xmlというXMLファイルを使用して構成されます。このファイルは、ワークフロー アプリケーション プロジェクトの一部であり、<DMSRoot>/apps/<アプリケーションID>にあります。
agentsConfig.xmlのサンプルコードを以下に示します。
<ActionAgentList> <ActionAgent> <Name>@TestFrameAgent</Name> <Description>テスト用です。最初の矢印を返します。</Description> <RetryInterval>20</RetryInterval> <EscalationInterval>1</EscalationInterval> <ClassName>com.fujitsu.iflowqa.testframe.TestFrameAgent </ClassName> <ClassPath>IBPMROOT/classes</ClassPath> <ConfigFile></ConfigFile> </ActionAgent> </ActionAgentList>
以下の表は、agentsConfig.xmlで使用されているXMLタグを説明しています。
タグ | 説明 |
---|---|
<ActionAgentList> | エージェントの一覧が記述されます。 |
<ActionAgent> | 単一のエージェント定義が記述されます。エージェントごとに独自の定義をこのタグ内に記述する必要があります。 |
<Name> | エージェントの名前です。名前の先頭は必ず“@”にする必要があります。これは、エージェントであることを指定します。この名前はActivityノードの担当者として指定し、そのアクティビティを“エージェント”アクティビティにする必要があります。つまり、これは通常のアクティビティではなく、エージェントとして機能します。 |
<Description> | エージェントの簡単な説明です。通常は、機能について説明します。 |
<RetryInterval> | エージェントは、外部サービスの呼出しに失敗した場合、指定された間隔をおいてその呼出しを再試行します。RetryIntervalには、その試行間隔を秒単位で指定します。 |
<EscalationInterval> | システム管理者にメールで通知する場合に、失敗回数のしきい値を指定します。 |
<ClassName> | エージェントに関連付けられているJavaクラスの名前です。このクラスは、エージェントの機能部分です。 |
<ClassPath> | エージェントに関連付けられているJavaクラスのクラスパスです。 |
<ConfigFile> | エージェントが使用する環境設定ファイル名です。 |
エージェントクラス
agentsConfig.xmlの<ClassName>タグに指定されたクラスは、エージェントが外部サービスにアクセスする手段です。以降は、エージェントクラスと呼びます。エージェントクラスは、次のインターフェースを実装する必要があります。
package com.fujitsu.iflow.server.intf; public interface ActionAgentInvoke { public String invokeService(ServerEnactmentContext sec, String configFile) throws Exception; }
エージェントクラスは、invokeService()を使用して外部サービスを呼び出し、そのサービスからデータを受け取ります。次に、サービスのアクションを指示するSystemwalker Runbook Automationに、STRING型のデータを返します。
エージェントクラスの実行結果は3つあります。それらは、以下のとおりです。
NULL STRING型、または空のSTRING型のデータが返された場合:
エージェントはサービスの実行を繰り返し試行します。再試行の間隔は、<RetryInterval>タグに指定されます。エージェントは、<EscalationInterval>タグに指定された回数だけ実行を試み、そのたびに管理サーバのServerEmailAddressパラメーターに指定されたアドレスにメールを送ります。
そのほかのSTRING型のデータが返された場合:
エージェントは、そのデータがエージェントアクティビティを起点とした外向き矢印の名前の1つと一致するかどうかを確認します。一致する場合、プロセスインスタンスはその一致する矢印に従って続行します。STRING型の戻り値が矢印に一致しない場合、エージェントはcannot-find-arrow例外を送出し、プロセスインスタンスはエラー状態になります。
エージェントクラスが例外を送出した場合:
エージェントはSystemwalker Runbook Automationにその例外を送り、プロセスインスタンスはエラー状態になります。