Nauticaは、ワークフローアプリケーションの実行を管理するツールエージェントを提供しています。
ツールエージェントは、プロセス定義において自動実行アクティビティに関係付けられたアプリケーションを実行します。
ツールエージェントを使用することで、様々なアプリケーションとの連携が可能になります。
アプリケーションにパラメータを渡す場合には、プロセス定義の際にパラメータマッピングを行います。
自動実行アクティビティのアプリケーション属性において、プロセス変数をパラメータとして設定すると、
ツールエージェントは指定されたプロセス変数を、アプリケーションの実行時にパラメータとして使用します。
(パラメータマッピングの方法はこちらをご覧ください。)
ツールエージェントによって呼び出されたアプリケーションの実行が完了すると、ツールエージェントは、
アプリケーションの実行を指定したアクティビティに関連するワークアイテムを自動的に完了させます。
この時、ツールエージェントは、アプリケーションが正常に完了したか、
異常終了したかの情報もワークフローエンジンに登録します。
ツールエージェントを利用するには、ツールエージェントの実行ユーザの設定を行う必要があります。
どのツールエージェントがアプリケーションを実行するか、
ツールエージェントとアプリケーションのマッピングをワークフローエンジンに設定する必要があります。
Nauticaでは、以下のツールエージェントを提供しています。
ツールエージェントの実行ユーザ |
ツールエージェントの実行ユーザは、各ツールエージェントの実装に任されています。標準で提供されるツールエージェントでは、各設定ファイルのauthenticationタグによって指定されたユーザが使用されます。このユーザは、利用しているユーザ管理にあらかじめ登録されていなければなりません。また、ワークフロー定義を行うときに、「専用属性の設定」によって、自動実行アクティビティにこのユーザ、またはユーザが持つ権限を割り当てる必要があります。
|
ツールエージェントとアプリケーションのマッピング |
アプリケーション名と、そのアプリケーションを実行するのに使用するツールエージェントの対応を、
ワークフローエンジンのツールエージェント設定用XMLファイル(config/toolagent.xml)に記述する必要があります。
toolagent.xmlの例
<?xml version="1.0" encoding="UTF-8"?>
<tool-agents xmlns="http://www.argo21.co.jp/nautica/workflow/ta/config">
<agent classname="jp.co.argo21.nautica.workflow.ta.SystemCommandToolAgentFactory" retry="3">
<app name="DIRECTORY"/>
<app name="LIST"/>
<app name="MAKE_DIR"/>
<app name="MAKE_FOLDER"/>
</agent>
<agent classname="jp.co.argo21.nautica.workflow.ta.MailToolAgentFactory">
<app name="MAIL1"/>
<app name="MAIL2"/>
</agent>
<agent classname="jp.co.argo21.nautica.workflow.ta.ScriptingToolAgentFactory">
<app name="SCRIPT1"/>
<app name="SCRIPT2"/>
</agent>
</tool-agents>
アプリケーションの実行に失敗した場合のリトライが可能です。agentタグのretry属性で、リトライ回数を設定します。設定がない場合、リトライは行われません。
appタグのname属性には、プロセス定義のアプリケーション名を設定します。
|
システムコマンド実行用ツールエージェント |
システムコマンド実行用ツールエージェントは、
プロセス定義で指定されたアプリケーション名に該当するアプリケーションをシステムコマンド(バッチファイル・シェルスクリプト・コマンド等)として実行します。
システムコマンド実行用ツールエージェント設定用XMLファイル(systemcommand.xml)を記述する必要があります。
systemcommand/xmlの例
<?xml version="1.0" encoding="UTF-8"?>
<system-commands xmlns="http://www.argo21.co.jp/nautica/workflow/ta/config">
<authentication user="SYSTEM_COMMAND" password="password"/>
<system-command command="dir">
<app name="DIRECTORY"/>
<app name="LIST"/>
</system-command>
<system-command command="mkdir">
<app name="MAKE_DIR"/>
<app name="MAKE_FOLDER"/>
</system-command>
</system-commands>
- 認証に関する設定
ツールエージェントがワークフローエンジンを操作する際に使用する認証情報を設定します。
ここで設定するユーザ名・パスワードは、ユーザ管理から使用・認証できる必要があります。
- システムコマンドに関する設定
system-commandタグのcommand属性に、実際に実行するコマンド(バッチファイル・シェルスクリプト等)を設定します。
appタグのname属性に、プロセス定義のアプリケーション名を設定します。
例の場合、プロセス定義でアプリケーション名LISTが関連付けられた自動実行アクティビティが実行されると、
システムコマンド実行用ツールエージェントが、LISTに該当するシステムコマンドdirを実行することになります。
プロセス変数をシステムコマンドのパラメータとして使用する際は、プロセス変数名は使用せず、
ただその並び順でパラメータの順序となります。
アプリケーションの実行が完了すると、正常終了か異常終了かをツールエージェントが判断し、
ワークフローエンジンに登録します。
システムコマンドの終了ステータスが0の場合 |
システムコマンドの終了ステータスが0以外の場合 |
|
スクリプト実行用ツールエージェント |
スクリプト実行用ツールエージェントは、プロセス定義で指定されたアプリケーション名に該当するアプリケーションをスクリプトとして実行します。
※サポートするスクリプト言語は、Pnuts等、JavaのScripting API(JSR223)でサポートされているスクリプト言語です。
スクリプト実行用ツールエージェント設定用XMLファイル(scriptingconfig.xml)を記述する必要があります。
scriptingconfig.xmlの例
<?xml version="1.0" encoding="UTF-8"?>
<scripting xmlns="http://www.argo21.co.jp/nautica/workflow/ta/config">
<authentication user="SCRIPTING" password="password"/>
<scripts>
<script type="command" command='println(name + ", HelloWorld!!")'>
<engine name="pnuts"/>
<app name="SCRIPT1"/>
</script>
<script type="file" filename="script.pnut">
<engine name="pnuts"/>
<app name="SCRIPT2"/>
</script>
</scripts>
</scripting>
- 認証に関する設定
ツールエージェントがワークフローエンジンを操作する際に使用する認証情報を設定します。
ここで設定するユーザ名・パスワードは、ユーザ管理から使用・認証できる必要があります。
- スクリプトに関する設定
scriptタグのcommand属性またはfile属性に設定します。
command属性を設定した場合は指定されたコマンドが実行され、
file属性を設定した場合は指定されたスクリプトファイルが実行されます。
engineタグのname属性には、使用するスクリプトエンジン名を指定します。
appタグのname属性には、プロセス定義のアプリケーション名を設定します。
例の場合、プロセス定義でアプリケーション名SCRIPT1が関連付けられた自動実行アクティビティが実行されると、
スクリプト実行用ツールエージェントが、Pnutsスクリプトprintln(name + ", HelloWorld!!")を実行し、
SCRIPT2が実行されるとPnutsスクリプトファイルscript.pnutが実行されます。
スクリプトを記述する場合、プロセス変数名をそのまま仮パラメータの変数名として使用することで、
スクリプトからパラメータが使用できます。
ただし、パラメータとして受け取った変数に値を設定しても、プロセス変数には設定されません。
プロセス変数に値を設定する場合は、別途ワークアイテム操作用APIを使用してプロセス変数を設定する必要があります。
アプリケーションの実行が完了すると、正常終了か異常終了かをツールエージェントが判断し、
ワークフローエンジンに登録します。
スクリプトの実行時に例外が発生しなかった場合 |
スクリプトの実行時に例外が発生した場合 |
|
メール送信用ツールエージェント |
メール送信用ツールエージェントは、プロセス定義で指定されたアプリケーション名に該当するメールサーバにメールを送信します。
※メール送信プロトコルとしてSMTPに対応し、メール送信サーバの認証方法としてPOP over SMTPに対応します。POP over SMTPを使用する場合は、別途POPサーバの設定が必要です。
メール送信用ツールエージェント設定用XMLファイル(mailconfig.xml)を記述する必要があります。
mailconfig.xmlの例
<?xml version="1.0" encoding="UTF-8"?>
<mail xmlns="http://www.argo21.co.jp/nautica/workflow/ta/config">
<authentication user="MAIL" password="password"/>
<servers>
<server auth-type="pop-over-smtp">
<sender protocol="smtp" encode="iso-2022-jp" mime-type="text/plain">
<host address="smtp5.argo21.co.jp" port="25" />
</sender>
<receiver protocol="pop3">
<host address="mail0.argo21.co.jp" port="110"/>
<authentication user="mail" password="nautica"/>
</receiver>
<app name="MAIL1"/>
<app name="MAIL2"/>
</server>
</servers>
</mail>
- 認証に関する設定
ツールエージェントがワークフローエンジンを操作する際に使用する認証情報を設定します。ここで設定するユーザ名・パスワードは、ユーザ管理から使用・認証できる必要があります。
- メールサーバに関する設定
serversタグに記述します。
serversタグには一つの送信メールサーバの設定であるserverタグを複数記述できます。
serverタグは、属性であるauth-type(認証方法)と、子要素であるsender(送信サーバ)とreceiver(受信サーバ)、
app(アプリケーション)の設定からなります。
認証方法と受信サーバは任意の設定項目ですが、認証方法に"pop-over-smtp"を指定した場合は、
受信サーバの設定が必要となります。
送信サーバの設定はsenderタグに記述します。
senderタグは、属性であるprotocol(プロトコル)とencode(エンコード)、mime-type(MIMEタイプ)と、
子要素であるhost(ホスト)の設定からなります。 以下に、送信サーバの任意の設定項目と、そのデフォルト値を示します。
プロトコル | smtp |
エンコード | iso-2022-jp |
MIMEタイプ | text/plane |
ホストのポート番号 | 25 |
以下の表で指定された名前を持つプロセス変数が指定されている場合、メール送信用ツールエージェントはその項目を設定してメール送信を行います。
MAIL_FROM_ADDRESS | 送信元メールアドレス | ○ |
× |
MAIL_FROM_NAME | 送信元名称 |
× |
× |
MAIL_TO_ADDRESS | 送信先(TO)メールアドレス | ○ |
○ |
MAIL_TO_NAME | 送信先(TO)名称 | × |
○ |
MAIL_CC_ADDRESS | 送信先(CC)メールアドレス | × |
○ |
MAIL_CC_NAME | 送信先(CC)名称 | × |
○ |
MAIL_BCC_ADDRESS | 送信先(BCC)メールアドレス | × |
○ |
MAIL_BCC_NAME | 送信先(BCC)名称 | × |
○ |
MAIL_SUBJECT | タイトル | ○ |
× |
MAIL_BODY | 本文 | ○ |
○ |
MAIL_ATTACHMENT_FILE | 添付ファイル名(絶対パス) | × |
○ |
アプリケーションの実行が完了すると、正常終了か異常終了かをツールエージェントが判断し、
ワークフローエンジンに登録します。
メールの送信時に例外が発生しなかった場合 |
メールの送信時に例外が発生した場合 |
|