第14章 jBPM プロセス定義言語
jBPM プロセス定義言語 (jPDL) は、jBPM フレームワークによって認識され、XML スキーマとして表現されるビジネスプロセスを定義するための表記法です。多くの場合、プロセス定義には、jPDL ドキュメントに加えてサポートファイルが必要です。これらのファイルはすべて、デプロイメントの プロセスアーカイブ にパッケージ化されています。
14.1. プロセスアーカイブ リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
プロセスアーカイブは、特定の内容レイアウトを持つ単なる ZIP アーカイブです。プロセスアーカイブの中心となるファイルは、
processdefinition.xml
と呼ばれます。このファイルは、ビジネスプロセスを jPDL 表記で定義し、自動化されたアクションとヒューマンタスクに関する情報を提供します。プロセスアーカイブには、アクションハンドラークラスやユーザーインターフェイスタスクフォームなど、プロセスに関連する他のファイルも含まれます。
14.1.1. プロセスアーカイブのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
プロセスアーカイブ
は、次のいずれかの方法でデプロイできます。
- Process Designer Tool
- ant タスク
- プログラム
Process Designer Tool を使用してプロセスアーカイブをデプロイするには、プロセスアーカイブフォルダーを右クリックし、 オプションを選択します。
jBPM アプリケーションサーバー統合モジュールには、gpd-deployer Web アプリケーションが含まれています。このアプリケーションは、
GPD Deployer Servlet
と呼ばれる、プロセスアーカイブをアップロードするためのサーブレットを備えています。このサーブレットは、プロセスアーカイブを受信し、設定されたデータベースにデプロイできます。
ant タスクを使用してプロセスアーカイブをデプロイするには、次のようにタスクを定義して呼び出します。
より多くのプロセスアーカイブを一度にデプロイするには、ネストされた fileset 要素を使用します。
DeployProcessTask
の属性は次のとおりです。
属性 | 説明 | 必須かどうか |
---|---|---|
process |
プロセスアーカイブへのパス。
|
はい。ネストされたリソースコレクション要素が使用されている場合を除きます。
|
jbpmcfg |
デプロイメント時にロードする jBPM 設定リソース。
|
いいえ。デフォルトは
jbpm.cfg.xml です。
|
failonerror |
false の場合、プロセス定義がデプロイに失敗したときに、警告メッセージをログに記録しますが、ビルドは停止しません。
| いいえ。デフォルトは true です。 |
プロセスアーカイブをプログラムでデプロイするには、
org.jbpm.graph.def.ProcessDefinition
クラスのいずれかの parseXXX
メソッドを使用します。
14.1.2. プロセスのバージョン管理 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
プロセスインスタンスは常に、それが起動されたプロセス定義と同じプロセス定義で実行されます。ただし、jBPM では、同じ名前の複数のプロセス定義がデータベースに共存できます。通常、プロセスインスタンスは、その時点で利用可能な最新バージョンで起動し、その存続期間全体にわたって同じプロセス定義で実行され続けます。新しいバージョンがデプロイされると、新しく作成されたインスタンスは最新バージョンで起動しますが、古いプロセスインスタンスは古いプロセス定義で実行され続けます。
プロセスに Java クラスへの参照が含まれている場合、これら Java クラスは次の 2 つの方法のいずれかで jBPM ランタイム環境で使用できるようになります。
- jBPM クラスローダーがこれらのクラスを認識できるようにするそのためには、委譲クラスを
jbpm-jpdl.jar
の "隣" の.jar
ファイルに入れて、すべてのプロセス定義がそのクラスファイルを参照できるようにします。Java クラスもプロセスアーカイブに含めることができます。委譲クラスをプロセスアーカイブに含めた場合 (そしてそれらが jbpm クラスローダーによって認識されない場合)、jBPM はこれらのクラスをプロセス定義内でバージョン管理します。注記プロセスクラスローディングの詳細は、「委譲」 を参照してください。
プロセスアーカイブがデプロイされると、jBPM データベースに プロセス定義 が作成されます。プロセス定義は、名前に基づいてバージョン管理します。名前付きのプロセスアーカイブがデプロイされると、デプロイヤーがそれにバージョン番号を割り当てます。これは、同じ名前のプロセス定義に割り当てられている最大の番号を検索し、その値に 1 を追加することによって行われます。(名前のないプロセス定義は、常に
-1
という形でバージョン付けされます。)
14.1.3. デプロイされたプロセス定義の変更 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
警告
デプロイ後にプロセス定義を変更することは推奨できません。プロセスインスタンスを新しいバージョンのプロセス定義に移行することを推奨します。
このプロセスを行う前に、次の要因を考慮してください。
org.jbpm.db.GraphSession
のメソッドloadProcessDefinition
、findProcessDefinition
を介してロードされたプロセス定義、またはアソシエーショントラバーサルを介して到達されたプロセス定義の更新に制限はありません。ただし、setStartState(null)
などのいくつかの呼び出しにより、プロセスが台無しになることが 非常によくある ため、注意してください。- プロセス定義は変更されることが想定されていないため、出荷時の Hibernate 設定では、定義クラスとコレクションの
nonstrict-read-write
キャッシュストラテジーが指定されています。このストラテジーにより、コミットされていない更新を他のトランザクションから認識できるようになります。
14.1.4. プロセスインスタンスの移行 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
プロセス定義を変更する別の方法は、各プロセスインスタンスを新しいバージョンに移行することです。ビジネスプロセスは長期にわたって存続するため、移行は簡単ではないことを考慮してください。
注記
これは実験的な機能です。
定義データ、実行データ、ロギングデータは明確に区別されます。この区別が存在するため、まずプロセスの新しいバージョンをまずデプロイする必要があります。その後で、プロセスインスタンスを新しいバージョンに移行します。トークンまたはタスクインスタンスが、ターゲットプロセス定義で削除されたノードまたはタスク定義を参照している場合は、移行時に変換が必要でます。ロギングデータは 2 つのプロセス定義に分散されることに注意してください。これにより、ツールを開発して統計情報の計算を行う際に問題が発生することがあります。
プロセスインスタンスを新しいバージョンに移行するには、以下に示すように
ChangeProcessInstanceVersionCommand
を実行します。
new ChangeProcessInstanceVersionCommand() .processName("commute") .nodeNameMappingAdd("drive to destination", "ride bike to destination") .execute(jbpmContext);
new ChangeProcessInstanceVersionCommand()
.processName("commute")
.nodeNameMappingAdd("drive to destination", "ride bike to destination")
.execute(jbpmContext);
14.2. 委譲 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
委譲 メカニズムを使用して、プロセス実行にカスタムコードを含めます。
14.2.1. jBPM クラスローダー リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
jBPM クラスローダーは、jBPM クラスをロードするローダーです。クラスを jBPM クラスローダーから認識可能にするには、クラスを JAR ファイルにパックし、JAR を
jbpm-jpdl.jar
と同じ場所に配置します。Web アプリケーションの場合、カスタム JAR ファイルを jbpm-jpdl.jar
と一緒に WEB-INF/lib
に配置します。
14.2.2. プロセスクラスローダー リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
委譲クラスは、それぞれの プロセスクラスローダー を介してロードされます。プロセスクラスローダーは、親として jBPM クラスローダーを持ちます。これは、1 つの特定のプロセス定義でデプロイされたクラスを追加します。クラスをプロセス定義に追加するには、それらをプロセスアーカイブの
classes
ディレクトリーに配置します。これは、プロセス定義に追加されたクラスをバージョン管理する場合にのみ役立つことに注意してください。バージョン管理が不要な場合は、代わりにクラスを jBPM クラスローダーで使用できるようにします。
リソース名がスラッシュで始まらない場合、リソースはプロセスアーカイブの
classes
ディレクトリーからも読み込まれます。このディレクトリーの外にあるリソースをロードするには、パスの先頭に二重スラッシュ (//
) を付けます。たとえば、プロセスアーカイブのルートにある data.xml
をロードするには、class.getResource("//data.xml")
を呼び出します。
14.2.3. 委譲の設定 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
委譲クラスには、プロセス実行内から呼び出されるユーザーコードが含まれます。最も一般的な例は アクション です。アクションの場合、プロセス内のイベントで
ActionHandler
インターフェイスの実装を呼び出すことができます。委譲は、processdefinition.xml
ファイルで指定します。委譲を指定するときに、次の 3 つのデータを指定できます。
- クラス名 (必須): これは委譲クラスの完全修飾名です。
- 設定タイプ (オプション): これは、委譲オブジェクトをインスタンス化して設定する方法を指定します。デフォルトでは、コンストラクターが使用され、設定情報は無視されます。
- 設定 (オプション): これは委譲オブジェクトの設定であり、設定タイプに必要な形式である必要があります。
設定の各タイプを以下に説明します。
14.2.3.1. config-type フィールド リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
これはデフォルトの設定タイプです。config-type フィールドは、まず委譲クラスのオブジェクトをインスタンス化してから、設定で指定されたオブジェクトフィールドに値を設定します。設定は XML ファイルに保存されます。このファイルでは、要素名がクラスのフィールド名に対応している必要があります。要素の内容テキストは、対応するフィールドに配置されます。必要かつ可能な場合は、要素の内容テキストがフィールド型に変換されます。
サポートされている型変換は次のとおりです。
- 文字列はトリミングされますが、変換されません。
- int、long、float、double などのプリミティブ型。
- プリミティブ型の基本的なラッパークラス。
- リスト、セット、およびコレクション。このような場合、xml-content の各要素はコレクションの要素と見なされ、変換を適用して再帰的に解析されます。要素の型が
java.lang.String
と異なる場合は、完全修飾型名で type 属性を指定することにより、その型を指定します。たとえば、このコードは文字列のArrayList
を numbers フィールドに挿入します。<numbers> <element>one</element> <element>two</element> <element>three</element> </numbers>
<numbers> <element>one</element> <element>two</element> <element>three</element> </numbers>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要素内のテキストは、文字列コンストラクターを持つ任意のオブジェクトに変換できます。文字列以外の型を使用するには、フィールド (この場合は numbers) で element-type を指定します。マップの別の例を次に示します。<numbers> <entry><key>one</key><value>1</value></entry> <entry><key>two</key><value>2</value></entry> <entry><key>three</key><value>3</value></entry> </numbers>
<numbers> <entry><key>one</key><value>1</value></entry> <entry><key>two</key><value>2</value></entry> <entry><key>three</key><value>3</value></entry> </numbers>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - この場合、フィールド要素のそれぞれに、1 つの key と 1 つの value サブ要素がある必要があります。変換規則を再帰的に使用して、これらの両方を解析します。コレクションと同様に、type 属性を指定しなかった場合は、
java.lang.String
への変換が意図されていると見なされます。 org.dom4j.Element
- その他の型の場合は、文字列コンストラクターが使用されます。
次のクラスを参照してください。
これは、そのクラスの有効な設定です。
14.2.3.2. config-type Bean リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
これは config-type フィールドと同じですが、その場合、プロパティーは "setter" メソッドを介して設定されます。ここでは、プロパティーはフィールドに直接設定されます。同じ変換が適用されます。
14.2.3.3. config-type コンストラクター リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
このメソッドは、委譲 XML 要素のすべての内容を取得し、それらをテキストとして委譲クラスコンストラクターに渡します。
14.2.3.4. config-type configuration-property リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
デフォルトのコンストラクターを使用する場合、このメソッドは委譲 XML 要素のすべての内容を取得し、それをテキストとして
void configure(String);
メソッドに渡します。
14.3. 式 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
JSP/JSF EL ライクな式言語のサポートは限定されています。アクション、割り当て、決定条件では、
expression="#{myVar.handler[assignments].assign}"
のような式を記述できます。
注記
この式言語の詳細は、次のチュートリアルを参照してください。http://java.sun.com/j2ee/1.4/docs/tutorial/doc/JSPIntro7.html
jPDL と JSF の式言語は似ています。jPDL EL は JSF EL をベースとしていますが、後者とは対照的に、jPDL EL は
#{...}
表記を採用し、メソッドバインディングのサポートを備えています。
コンテキストに応じて、次の暗黙的オブジェクトと同様に、プロセスおよびタスクのインスタンス変数を開始変数として使用できます。
- taskInstance (
org.jbpm.taskmgmt.exe.TaskInstance
) - processInstance (
org.jbpm.graph.exe.ProcessInstance
) - processDefinition (
org.jbpm.graph.def.ProcessDefinition
) - token (
org.jbpm.graph.exe.Token
) - taskMgmtInstance (
org.jbpm.taskmgmt.exe.TaskMgmtInstance
) - contextInstance (
org.jbpm.context.exe.ContextInstance
)
この機能は、JBoss SEAM 環境 (http://www.jboss.com/products/seam) で使用した場合に効果的です。JBPM と SEAM は統合されているため、すべての backed Bean や Enterprise Java Bean などにプロセス定義内からアクセスできるようになります。
14.4. jPDL XML スキーマ リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
jPDL スキーマは、プロセスアーカイブの
processdefinition.xml
ファイルで使用されるスキーマです。
14.4.1. 検証 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
jPDL XML ドキュメントを解析するとき、jBPM は次の 2 つの条件が満たされると、それをスキーマに対して検証します。
- スキーマは XML ドキュメントで参照されます。
<process-definition xmlns="urn:jbpm.org:jpdl-3.2"> ... </process-definition>
<process-definition xmlns="urn:jbpm.org:jpdl-3.2"> ... </process-definition>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Xerces パーサーはクラスパスにあります。
注記
jPDL スキーマは
${jbpm.home}/src/java.jbpm/org/jbpm/jpdl/xml/jpdl-3.2.xsd
または http://jbpm.org/jpdl-3.2.xsd で確認してください。
14.4.2. process-definition リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
名前 | タイプ | 多重度 | 説明 |
---|---|---|---|
name | 属性 | 任意 | これはプロセスの名前です。 |
swimlane | 要素 | [0..*] | これはプロセスで使用される swim-lane です。swim-lane はプロセスの役割を表し、タスクの割り当てに使用されます。 |
start-state | 要素 | [0..1] | これはプロセスの開始状態です。start-state のないプロセスは有効ですが、実行できないことに注意してください。 |
{end-state|state|node|task-node|process-state|super-state|fork|join|decision} | 要素 | [0..*] | これらはプロセス定義のノードです。ノードのないプロセスは有効ですが、実行できないことに注意してください。 |
event | 要素 | [0..*] | これはアクションのコンテナーとして機能します。 |
{action|script|create-timer|cancel-timer} | 要素 | [0..*] | これらは、イベントおよび遷移から参照できるグローバルに定義されたアクションです。これらのアクションを参照するには、名前を指定する必要があることに注意してください。 |
task | 要素 | [0..*] | これは、アクションなどで使用できるグローバルに定義されたタスクです。 |
exception-handler | 要素 | [0..*] | これは、このプロセス定義の委譲クラスによって出力されたすべてのエラーに適用される例外ハンドラーのリストです。 |
14.4.3. node リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
名前 | タイプ | 多重度 | 説明 |
---|---|---|---|
{action|script|create-timer|cancel-timer} | 要素 | 1 | これは、このノードの動作を表すカスタムアクションです。 |
共通のノード要素 | 「共通のノード要素」 |
14.4.4. 共通のノード要素 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
名前 | タイプ | 多重度 | 説明 |
---|---|---|---|
name | 属性 | required | これはノードの名前です。 |
async | 属性 | { true | false }、デフォルトは false | true に設定すると、このノードは非同期で実行されます。10章 非同期継続 も併せて参照してください。 |
transition | 要素 | [0..*] | これは退出遷移です。ノードから退出する各遷移には、個別の名前が *必要* です。名前を持たない遷移は、最大 1 つまで許可されます。指定された最初の遷移は、デフォルト遷移と呼ばれます。遷移を指定せずにノードから退出すると、デフォルトの遷移が取得されます。 |
event | 要素 | [0..*] | サポートされているイベントタイプは、{node-enter|node-leave} の 2 つです。 |
exception-handler | 要素 | [0..*] | これは、このプロセスノード内から委譲クラスによって出力されたすべてのバグに適用される例外ハンドラーのリストです。 |
timer | 要素 | [0..*] | これは、このノードでの実行時間をモニタリングするタイマーを指定します。 |
14.4.5. start-state リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
名前 | タイプ | 多重度 | 説明 |
---|---|---|---|
name | 属性 | 任意 | これはノードの名前です。 |
task | 要素 | [0..1] | これは、このプロセスの新しいインスタンスを開始するため、またはプロセスのイニシエーターをキャプチャーするために使用されるタスクです。「 開始タスクのスイムレーン 」 を参照 |
event | 要素 | [0..*] | サポートされているイベントタイプは {node-leave} です。 |
transition | 要素 | [0..*] | これは退出遷移です。ノードから退出する各遷移には、個別の名前が必要です。 |
exception-handler | 要素 | [0..*] | これは、このプロセスノード内から委譲クラスによって出力されたすべてのバグに適用される例外ハンドラーのリストです。 |
14.4.6. end-state リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
名前 | タイプ | 多重度 | 説明 |
---|---|---|---|
name | 属性 | required | これは end-state の名前です。 |
end-complete-process | 属性 | 任意 | end-complete-process が false に設定されている場合、この end-state を完了するトークンのみが完了します。このトークンが最後に終了した子だった場合、親トークンが再帰的に終了します。プロセスインスタンス全体を確実に終了するには、このプロパティーを true に設定します。 |
event | 要素 | [0..*] | サポートされているイベントタイプは {node-enter} です。 |
exception-handler | 要素 | [0..*] | これは、このプロセスノード内から委譲クラスによって出力されたすべてのバグに適用される例外ハンドラーのリストです。 |
14.4.7. state リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
名前 | タイプ | 多重度 | 説明 |
---|---|---|---|
共通のノード要素 | 「共通のノード要素」 を参照 |
14.4.8. task-node リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
名前 | タイプ | 多重度 | 説明 |
---|---|---|---|
signal | 属性 | 任意 | これは {unsynchronized|never|first|first-wait|last|last-wait} で、デフォルトは last です。タスクの完了が プロセスの実行継続 に影響を与える方法を指定します。 |
create-tasks | 属性 | 任意 | これは {yes|no|true|false} で、デフォルトは true です。ランタイム時の計算で、どのタスクを作成する必要があるかを決定する必要がある場合は、false に設定します。その場合、node-enter にアクションを追加し、そのアクションにタスクを作成して create-tasks を false に設定します。 |
end-tasks | 属性 | 任意 | これは {yes|no|true|false} で、デフォルトは false です。node-leave で remove-tasks が true に設定されている場合、開いているすべてのタスクが終了します。 |
task | 要素 | [0..*] | これは、実行がこのタスクノードに到達したときに作成されるタスクです。 |
共通のノード要素 | 「共通のノード要素」 を参照 |
14.4.9. process-state リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
名前 | タイプ | 多重度 | 説明 |
---|---|---|---|
sub-process | 要素 | 1 | これは、このノードに関連付けられているサブプロセスです。 |
variable | 要素 | [0..*] | これは、開始時にスーパープロセスからサブプロセスにデータをコピーする方法と、サブプロセスの完了時にサブプロセスからスーパープロセスにデータをコピーする方法を指定します。 |
共通のノード要素 | 「共通のノード要素」 を参照 |
14.4.10. super-state リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
名前 | タイプ | 多重度 | 説明 |
---|---|---|---|
{end-state|state|node|task-node|process-state|super-state|fork|join|decision} | 要素 | [0..*] | これらはスーパーステートのノードです。スーパーステートはネストできます。 |
共通のノード要素 | 「共通のノード要素」 を参照 |
14.4.11. fork リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
名前 | タイプ | 多重度 | 説明 |
---|---|---|---|
共通のノード要素 | 「共通のノード要素」 を参照 |
14.4.12. join リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
名前 | タイプ | 多重度 | 説明 |
---|---|---|---|
共通のノード要素 | 「共通のノード要素」 を参照 |
14.4.13. decision リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
名前 | タイプ | 多重度 | 説明 |
---|---|---|---|
handler | 要素 | 'handler' 要素または遷移の条件のいずれかを指定する必要があります。 | org.jbpm.jpdl.Def.DecisionHandler 実装の名前 |
transition conditions | 決定から退出する遷移の属性または要素のテキスト |
すべての遷移には保護条件が含まれる場合があります。決定ノードは、条件を持つ退出遷移を調べ、条件が真である最初の遷移を選択します。
条件が満たされない場合は、デフォルト の遷移が取得されます。デフォルト遷移は、存在する場合は最初の無条件遷移であり、存在しない場合は最初の条件付き遷移です。遷移はドキュメント順に考慮されます。
条件付き ("保護された") 遷移のみが使用可能で、遷移の条件がいずれも true と評価されない場合、例外が出力されます。
| |
共通のノード要素 | 「共通のノード要素」 を参照 |
14.4.14. event リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
名前 | タイプ | 多重度 | 説明 |
---|---|---|---|
type | 属性 | required | これは、イベントが配置される要素に対して相対的に表現されるイベントタイプです。 |
{action|script|create-timer|cancel-timer} | 要素 | [0..*] | これは、このイベントで実行する必要があるアクションのリストです。 |
14.4.15. transition リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
名前 | タイプ | 多重度 | 説明 |
---|---|---|---|
name | 属性 | 任意 | これは遷移の名前です。ノードから退出する各遷移には、個別の名前が *必要* であることに注意してください。 |
to | 属性 | required | これは宛先ノードの階層名です。階層名の詳細は、「 階層名 」 を参照してください。 |
condition | 属性または要素のテキスト | 任意 | これは 保護条件 式です。この条件属性 (または子要素) を決定ノードで使用するか、ランタイム時にトークンで使用可能な遷移を計算します。条件は、決定ノードから退出する遷移でのみ許可されます。 |
{action|script|create-timer|cancel-timer} | 要素 | [0..*] | これらは、この遷移が発生したときに実行されるアクションです。遷移のアクションはイベントに入れる必要がないことに注意してください (イベントは 1 つしかないため)。 |
exception-handler | 要素 | [0..*] | これは、このプロセスノード内から委譲クラスによって出力されたすべてのバグに適用される例外ハンドラーのリストです。 |
14.4.16. action リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
名前 | タイプ | 多重度 | 説明 |
---|---|---|---|
name | 属性 | 任意 | これはアクションの名前です。アクションに名前を付けると、プロセス定義から検索できます。これは、ランタイムアクションやアクションの宣言を 1 回だけ行う場合に役立ちます。 |
class | 属性 | ref-name または expression のいずれか | これは、org.jbpm.graph.def.ActionHandler インターフェイスを実装するクラスの完全修飾クラス名です。 |
ref-name | 属性 | ref-name または class のいずれか | これは参照されるアクションの名前です。参照されるアクションが指定されている場合、このアクションの内容はそれ以上処理されません。 |
expression | 属性 | expression、class 、または ref-name のいずれか | これは、メソッドに解決される jPDL 式です。「 式 」 も併せて参照してください。 |
accept-propagated-events | 属性 | 任意 | オプションは {yes|no|true|false} です。デフォルトは yes|true です。false に設定した場合、アクションは、このアクションの要素で発生したイベントでのみ実行されます。詳細は、「 イベントの受け渡し 」 を参照してください。 |
config-type | 属性 | 任意 | オプションは {field|bean|constructor|configuration-property} です。これは、action-object を構築する方法と、この要素の内容をその action-object の設定情報として使用する方法を指定します。 |
async | 属性 | {true|false} | 'async="true" は、イベントでトリガーされた場合にのみ、アクション でサポートされます。デフォルト値は false です。これは、アクション が実行のスレッドで実行されることを意味します。true に設定した場合、メッセージがコマンドエグゼキューターに送信され、そのコンポーネントがアクションを別のトランザクションで非同期に実行します。 |
{content} | 任意 | アクションの内容は、カスタムアクション実装の設定情報として使用できます。これにより、再利用可能な委譲クラスを作成できます。 |
14.4.17. script リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
名前 | タイプ | 多重度 | 説明 |
---|---|---|---|
name | 属性 | 任意 | これはスクリプトアクションの名前です。アクションに名前を付けると、プロセス定義から検索できます。これは、ランタイムアクションやアクションの宣言を 1 回だけ行う場合に役立ちます。 |
accept-propagated-events | 属性 | 任意 [0..*] | {yes|no|true|false}。デフォルトは yes|true です。false に設定すると、アクションは、このアクションの要素で発生したイベントでのみ実行されます。詳細は、「 イベントの受け渡し 」 を参照してください。 |
expression | 要素 | [0..1] | Beanshell スクリプト。variable 要素を指定しない場合は、式を script 要素の内容として記述できます (expression 要素タグは省略します)。 |
variable | 要素 | [0..*] | スクリプトの in 変数。in 変数が指定されていない場合、現在のトークンのすべての変数がスクリプト評価にロードされます。スクリプト評価にロードする変数の数を制限する場合は、in 変数を使用します。 |
14.4.18. expression リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
名前 | タイプ | 多重度 | 説明 |
---|---|---|---|
{content} | Bean シェルスクリプト。 |
14.4.19. variable リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
名前 | タイプ | 多重度 | 説明 |
---|---|---|---|
name | 属性 | required | プロセスの変数名 |
access | 属性 | 任意 | デフォルトは read,write です。これは、アクセス指定子のコンマ区切りリストです。これまでに使用したアクセス指定子は、read 、write 、および required のみです。"required" は、タスク変数をプロセス変数に送信する場合にのみ関係します。 |
mapped-name | 属性 | 任意 | デフォルト設定は変数名です。これは変数名がマップされる名前を指定します。mapped-name の意味は、この要素が使用されるコンテキストに依存します。スクリプトの場合、これは script-variable-name になります。タスクコントローラーの場合、これはタスクフォームパラメーターのラベルになります。プロセス状態の場合、これはサブプロセスで使用される変数名になります。 |
14.4.20. handler リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
名前 | タイプ | 多重度 | 説明 |
---|---|---|---|
expression | 属性 | expression または class のいずれか | jPDL 式。返された結果は toString () メソッドで文字列に変換されます。結果の文字列が退出遷移の 1 つと一致する必要があります。「 式 」も併せて参照してください。 |
class | 属性 | class または ref-name のいずれか | org.jbpm.graph.node.DecisionHandler インターフェイスを実装するクラスの完全修飾クラス名。 |
config-type | 属性 | 任意 | {field|bean|constructor|configuration-property}。action-object を構築する方法と、この要素の内容をその action-object の設定情報として使用する方法を指定します。 |
{content} | 任意 | ハンドラーの内容は、カスタムハンドラー実装の設定情報として使用できます。これにより、再利用可能な委譲クラスを作成できます。 |
14.4.21. timer リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
名前 | タイプ | 多重度 | 説明 |
---|---|---|---|
name | 属性 | 任意 | タイマーの名前。名前が指定されていない場合は、包含するノードの名前が使用されます。すべてのタイマーには一意の名前が必要であることに注意してください。 |
duedate | 属性 | required | タイマーの作成からタイマーの実行までの期間を指定する時間幅 (必要に応じて営業時間で表します)。この構文については、「 期間 」 を参照してください。 |
repeat | 属性 | 任意 | {duration | 'yes' | 'true'}。duedate にタイマーを実行した後、'repeat' により、必要に応じてノードから退出するまでタイマー実行を繰り返す期間を指定します。yes または true を指定した場合、duedate と同じ期間が繰り返されます。この構文については、「 期間 」 を参照してください。 |
transition | 属性 | 任意 | タイマーイベントが発生し、アクション (存在する場合) が実行された後、タイマーが実行されるときに取得される遷移の名前。 |
cancel-event | 属性 | 任意 | この属性は、タスクのタイマーでのみ使用されます。タイマーをキャンセルするイベントを指定します。デフォルトでは、これは task-end イベントですが、たとえば task-assign や task-start にも設定できます。属性のコンマ区切りリストで指定することで、cancel-event タイプを組み合わせることができます。 |
{action|script|create-timer|cancel-timer} | 要素 | [0..1] | このタイマーが起動したときに実行する必要があるアクション。 |
14.4.22. create-timer リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
名前 | タイプ | 多重度 | 説明 |
---|---|---|---|
name | 属性 | 任意 | タイマーの名前。この名前は、cancel-timer アクションでタイマーをキャンセルするために使用できます。 |
duedate | 属性 | required | タイマーの作成からタイマーの実行までの期間を指定する時間幅 (必要に応じて営業時間で表します)。この構文については、「 期間 」 を参照してください。 |
repeat | 属性 | 任意 | {duration | 'yes' | 'true'}。duedate にタイマーを実行した後、'repeat' により、必要に応じてノードから退出するまでタイマー実行を繰り返す期間を指定します。yes または true を指定した場合、duedate と同じ期間が繰り返されます。この構文については、「 期間 」 を参照してください。 |
transition | 属性 | 任意 | タイマーイベントが発生し、アクション (存在する場合) が実行された後、タイマーが実行されるときに取得される遷移の名前。 |
14.4.23. cancel-timer リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
名前 | タイプ | 多重度 | 説明 |
---|---|---|---|
name | 属性 | 任意 | キャンセルするタイマーの名前。 |
14.4.24. task リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
名前 | タイプ | 多重度 | 説明 |
---|---|---|---|
name | 属性 | 任意 | タスクの名前。名前付きのタスクは、TaskMgmtDefinition を介して参照および検索できます。 |
blocking | 属性 | 任意 | {yes|no|true|false}。デフォルトは false です。blocking を true に設定した場合、タスクが完了していないときにノードから退出することはできません。false (デフォルト) に設定すると、トークンのシグナルは実行を継続してノードから退出することができます。blocking は通常、ユーザーインターフェイスによって強制されるため、デフォルトは false に設定されています。 |
signalling | 属性 | 任意 | {yes|no|true|false}。デフォルトは true です。signalling を false に設定した場合、このタスクがトークンの継続をトリガーする機能を持つことはありません。 |
duedate | 属性 | 任意 | 11章 ビジネスカレンダー で説明されているように、絶対時間または営業時間で表される期間です。 |
swimlane | 属性 | 任意 | スイムレーンへの参照。タスクにスイムレーンが指定されている場合、割り当ては無視されます。 |
priority | 属性 | 任意 | {highest, high, normal, low, lowest} のいずれか。または、優先順位として任意の整数を指定できます。参考: (最高 = 1、最低 = 5) |
assignment | 要素 | 任意 | タスクの作成時にアクターにタスクを割り当てる委譲を記述します。 |
event | 要素 | [0..*] | サポートされているイベントタイプは、{task-create|task-start|task-assign|task-end} です。task-assign については、TaskInstance に非永続プロパティー previousActorId が追加されています。 |
exception-handler | 要素 | [0..*] | このプロセスノードでスローされる委譲クラスによってスローされるすべての例外に適用される例外ハンドラーのリスト。 |
timer | 要素 | [0..*] | このタスクの実行時間をモニタリングするタイマーを指定します。タスクタイマーに特化した cancel-event を指定できます。デフォルトでは cancel-event は task-end ですが、task-assign や task-start などにカスタマイズできます。 |
controller | 要素 | [0..1] | プロセス変数をタスクフォームパラメーターに変換する方法を指定します。タスクフォームパラメーターは、タスクフォームをユーザーに表示するためにユーザーインターフェイスによって使用されます。 |
14.4.25. スイムレーン リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
名前 | タイプ | 多重度 | 説明 |
---|---|---|---|
name | 属性 | required | スイムレーンの名前。スイムレーンは、TaskMgmtDefinition を介して参照および検索できます。 |
assignment | 要素 | [1..1] | このスイムレーンの割り当てを指定します。割り当ては、このスイムレーンで最初のタスクインスタンスが作成されたときに実行されます。 |
14.4.26. 割り当て リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
名前 | タイプ | 多重度 | 説明 |
---|---|---|---|
expression | 属性 | 任意 | 歴史的な理由から、この属性式は、jPDL 式を 参照するものではなく、jBPM アイデンティティーコンポーネントの割り当て式です。jBPM アイデンティティーコンポーネント式の記述方法の詳細は、「割り当て式」 を参照してください。この実装は、jbpm アイデンティティーコンポーネントに依存していることに注意してください。 |
actor-id | 属性 | 任意 | actorId。pooled-actors と組み合わせて使用できます。actor-id は式として解決されます。したがって、actor-id="bobthebuilder" のように、固定の actorId を参照できます。または、actor-id="myVar.actorId" のように、文字列を返すプロパティーまたはメソッドを参照できます。これは、タスクインスタンス変数 "myVar" で getActorId メソッドを呼び出します。 |
pooled-actors | 属性 | 任意 | actorId のコンマ区切りリスト。actor-id と組み合わせて使用できます。プールされたアクターの固定セットは、pooled-actors="chicagobulls, pointersisters" のように指定できます。pooled-actors は式として解決されます。そのため、返すべきプロパティーまたはメソッド、String[]、コレクション、またはプールされたアクターのコンマ区切りリストを参照することもできます。 |
class | 属性 | 任意 | org.jbpm.taskmgmt.def.AssignmentHandler の実装の完全修飾クラス名。 |
config-type | 属性 | 任意 | {field|bean|constructor|configuration-property}。assignment-handler-object を構築する方法と、この要素の内容をその assignment-handler-object の設定情報として使用する方法を指定します。 |
{content} | 任意 | assignment-element の内容は、AssignmentHandler 実装の設定情報として使用できます。これにより、再利用可能な委譲クラスを作成できます。 |
14.4.27. Controller リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
名前 | タイプ | 多重度 | 説明 |
---|---|---|---|
class | 属性 | 任意 | org.jbpm.taskmgmt.def.TaskControllerHandler の実装の完全修飾クラス名。 |
config-type | 属性 | 任意 | {field|bean|constructor|configuration-property}。これは、assignment-handler-object を構築する方法と、この要素の内容をその assignment-handler-object の設定情報として使用する方法を指定します。 |
{content} | これは、コントローラーの内容か、指定されたタスクコントローラーハンドラーの設定です (class 属性が指定されている場合。タスクコントローラーハンドラーが指定されていない場合、内容は variable 要素のリストである必要があります)。 | ||
variable | 要素 | [0..*] | class 属性でタスクコントローラーハンドラーが指定されていない場合、controller 要素の内容は変数のリストである必要があります。 |
14.4.28. sub-process リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
名前 | タイプ | 多重度 | 説明 |
---|---|---|---|
name | 属性 | required | 呼び出すサブプロセスの名前。String として評価される必要がある EL 式を指定できます。 |
version | 属性 | 任意 | 呼び出すサブプロセスのバージョン。version が指定されていない場合、process-state は特定のプロセスの最新バージョン使用します。 |
binding | 属性 | 任意 | サブプロセスが解決される瞬間を定義します。オプションは {early|late} です。デフォルトでは early 、つまりデプロイメント時に解決されます。binding が late として定義されている場合、process-state は、実行ごとに特定のプロセスの最新バージョンを解決します。late binding は、固定バージョンと組み合わせると意味がありません。したがって、version 属性は binding="late" の場合、無視されます。 |
14.4.29. condition リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
名前 | タイプ | 多重度 | 説明 |
---|---|---|---|
オプションは {content} です。後方互換性のために、expression 属性で条件を入力することもできますが、この属性はバージョン 3.2 以降非推奨となりました。 | required | condition 要素の内容は、ブール値として評価される必要がある jPDL 式です。決定は、(processdefinition.xml ファイルの順序に従って) 式が true に解決される最初の遷移を取得します。どの条件も true に解決されない場合、デフォルトの退出遷移 (最初の遷移) が使用されます。条件は、決定ノードから退出する遷移でのみ許可されます。 |
14.4.30. exception-handler リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
名前 | タイプ | 多重度 | 説明 |
---|---|---|---|
exception-class | 属性 | 任意 | これは、この例外ハンドラーと一致する Java の "スロー可能" なクラスの完全修飾名を指定します。この属性が指定されていない場合、すべての例外に一致します (java.lang.Throwable )。 |
action | 要素 | [1..*] | これは、この例外ハンドラーによってエラーが処理されているときに実行されるアクションのリストです。 |