第14章 jBPM プロセス定義言語


jBPM プロセス定義言語 (jPDL) は、jBPM フレームワークによって認識され、XML スキーマとして表現されるビジネスプロセスを定義するための表記法です。多くの場合、プロセス定義には、jPDL ドキュメントに加えてサポートファイルが必要です。これらのファイルはすべて、デプロイメントの プロセスアーカイブ にパッケージ化されています。

14.1. プロセスアーカイブ

プロセスアーカイブは、特定の内容レイアウトを持つ単なる ZIP アーカイブです。プロセスアーカイブの中心となるファイルは、processdefinition.xml と呼ばれます。このファイルは、ビジネスプロセスを jPDL 表記で定義し、自動化されたアクションとヒューマンタスクに関する情報を提供します。プロセスアーカイブには、アクションハンドラークラスやユーザーインターフェイスタスクフォームなど、プロセスに関連する他のファイルも含まれます。

14.1.1. プロセスアーカイブのデプロイ

プロセスアーカイブ は、次のいずれかの方法でデプロイできます。
  • Process Designer Tool
  • ant タスク
  • プログラム
Process Designer Tool を使用してプロセスアーカイブをデプロイするには、プロセスアーカイブフォルダーを右クリックし、Deploy process archive オプションを選択します。
jBPM アプリケーションサーバー統合モジュールには、gpd-deployer Web アプリケーションが含まれています。このアプリケーションは、GPD Deployer Servlet と呼ばれる、プロセスアーカイブをアップロードするためのサーブレットを備えています。このサーブレットは、プロセスアーカイブを受信し、設定されたデータベースにデプロイできます。
ant タスクを使用してプロセスアーカイブをデプロイするには、次のようにタスクを定義して呼び出します。
<target name="deploy-process">
  <taskdef name="deployproc" classname="org.jbpm.ant.DeployProcessTask">
    <classpath location="jbpm-jpdl.jar" />
  </taskdef> 
  <deployproc process="build/myprocess.par" />
</target>
Copy to Clipboard Toggle word wrap
より多くのプロセスアーカイブを一度にデプロイするには、ネストされた fileset 要素を使用します。DeployProcessTask の属性は次のとおりです。
Expand
表14.1 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 のメソッド loadProcessDefinitionfindProcessDefinition を介してロードされたプロセス定義、またはアソシエーショントラバーサルを介して到達されたプロセス定義の更新に制限はありません。ただし、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);
Copy to Clipboard Toggle word wrap

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 つのデータを指定できます。
  1. クラス名 (必須): これは委譲クラスの完全修飾名です。
  2. 設定タイプ (オプション): これは、委譲オブジェクトをインスタンス化して設定する方法を指定します。デフォルトでは、コンストラクターが使用され、設定情報は無視されます。
  3. 設定 (オプション): これは委譲オブジェクトの設定であり、設定タイプに必要な形式である必要があります。
設定の各タイプを以下に説明します。

14.2.3.1. config-type フィールド

これはデフォルトの設定タイプです。config-type フィールドは、まず委譲クラスのオブジェクトをインスタンス化してから、設定で指定されたオブジェクトフィールドに値を設定します。設定は XML ファイルに保存されます。このファイルでは、要素名がクラスのフィールド名に対応している必要があります。要素の内容テキストは、対応するフィールドに配置されます。必要かつ可能な場合は、要素の内容テキストがフィールド型に変換されます。
サポートされている型変換は次のとおりです。
  • 文字列はトリミングされますが、変換されません。
  • int、long、float、double などのプリミティブ型。
  • プリミティブ型の基本的なラッパークラス。
  • リスト、セット、およびコレクション。このような場合、xml-content の各要素はコレクションの要素と見なされ、変換を適用して再帰的に解析されます。要素の型が java.lang.String と異なる場合は、完全修飾型名で type 属性を指定することにより、その型を指定します。たとえば、このコードは文字列の ArrayListnumbers フィールドに挿入します。
    <numbers>
      <element>one</element>
      <element>two</element>
      <element>three</element>
    </numbers>
    Copy to Clipboard Toggle word wrap
    要素内のテキストは、文字列コンストラクターを持つ任意のオブジェクトに変換できます。文字列以外の型を使用するには、フィールド (この場合は 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>
    Copy to Clipboard Toggle word wrap
  • この場合、フィールド要素のそれぞれに、1 つの key と 1 つの value サブ要素がある必要があります。変換規則を再帰的に使用して、これらの両方を解析します。コレクションと同様に、type 属性を指定しなかった場合は、java.lang.String への変換が意図されていると見なされます。
  • org.dom4j.Element
  • その他の型の場合は、文字列コンストラクターが使用されます。
次のクラスを参照してください。
public class MyAction implements ActionHandler {
  // access specifiers can be private, default, protected or public
  private String city;
  Integer rounds;
  ...
}
Copy to Clipboard Toggle word wrap
これは、そのクラスの有効な設定です。
...
<action class="org.test.MyAction">
  <city>Atlanta</city>
  <rounds>5</rounds>
</action>
...
Copy to Clipboard Toggle word wrap

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 つの条件が満たされると、それをスキーマに対して検証します。
  1. スキーマは XML ドキュメントで参照されます。
    <process-definition xmlns="urn:jbpm.org:jpdl-3.2">
      ...
    </process-definition>
    Copy to Clipboard Toggle word wrap
  2. 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

Expand
表14.2 プロセス定義スキーマ
名前 タイプ 多重度 説明
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

Expand
表14.3 ノードスキーマ
名前 タイプ 多重度 説明
{action|script|create-timer|cancel-timer} 要素 1 これは、このノードの動作を表すカスタムアクションです。
共通のノード要素 「共通のノード要素」

14.4.4. 共通のノード要素

Expand
表14.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

Expand
表14.5 開始状態スキーマ
名前 タイプ 多重度 説明
name 属性 任意 これはノードの名前です。
task 要素 [0..1] これは、このプロセスの新しいインスタンスを開始するため、またはプロセスのイニシエーターをキャプチャーするために使用されるタスクです。「 開始タスクのスイムレーン 」 を参照
event 要素 [0..*] サポートされているイベントタイプは {node-leave} です。
transition 要素 [0..*] これは退出遷移です。ノードから退出する各遷移には、個別の名前が必要です。
exception-handler 要素 [0..*] これは、このプロセスノード内から委譲クラスによって出力されたすべてのバグに適用される例外ハンドラーのリストです。

14.4.6. end-state

Expand
表14.6 終了状態スキーマ
名前 タイプ 多重度 説明
name 属性 required これは end-state の名前です。
end-complete-process 属性 任意 end-complete-processfalse に設定されている場合、この end-state を完了するトークンのみが完了します。このトークンが最後に終了した子だった場合、親トークンが再帰的に終了します。プロセスインスタンス全体を確実に終了するには、このプロパティーを true に設定します。
event 要素 [0..*] サポートされているイベントタイプは {node-enter} です。
exception-handler 要素 [0..*] これは、このプロセスノード内から委譲クラスによって出力されたすべてのバグに適用される例外ハンドラーのリストです。

14.4.7. state

Expand
表14.7 状態スキーマ
名前 タイプ 多重度 説明
共通のノード要素 「共通のノード要素」 を参照

14.4.8. task-node

Expand
表14.8 タスクノードスキーマ
名前 タイプ 多重度 説明
signal 属性 任意 これは {unsynchronized|never|first|first-wait|last|last-wait} で、デフォルトは last です。タスクの完了が プロセスの実行継続 に影響を与える方法を指定します。
create-tasks 属性 任意 これは {yes|no|true|false} で、デフォルトは true です。ランタイム時の計算で、どのタスクを作成する必要があるかを決定する必要がある場合は、false に設定します。その場合、node-enter にアクションを追加し、そのアクションにタスクを作成して create-tasksfalse に設定します。
end-tasks 属性 任意 これは {yes|no|true|false} で、デフォルトは false です。node-leaveremove-taskstrue に設定されている場合、開いているすべてのタスクが終了します。
task 要素 [0..*] これは、実行がこのタスクノードに到達したときに作成されるタスクです。
共通のノード要素 「共通のノード要素」 を参照

14.4.9. process-state

Expand
表14.9 プロセス状態スキーマ
名前 タイプ 多重度 説明
sub-process 要素 1 これは、このノードに関連付けられているサブプロセスです。
variable 要素 [0..*] これは、開始時にスーパープロセスからサブプロセスにデータをコピーする方法と、サブプロセスの完了時にサブプロセスからスーパープロセスにデータをコピーする方法を指定します。
共通のノード要素 「共通のノード要素」 を参照

14.4.10. super-state

Expand
表14.10 スーパーステートスキーマ
名前 タイプ 多重度 説明
{end-state|state|node|task-node|process-state|super-state|fork|join|decision} 要素 [0..*] これらはスーパーステートのノードです。スーパーステートはネストできます。
共通のノード要素 「共通のノード要素」 を参照

14.4.11. fork

Expand
表14.11 フォークスキーマ
名前 タイプ 多重度 説明
共通のノード要素 「共通のノード要素」 を参照

14.4.12. join

Expand
表14.12 結合スキーマ
名前 タイプ 多重度 説明
共通のノード要素 「共通のノード要素」 を参照

14.4.13. decision

Expand
表14.13 決定スキーマ
名前 タイプ 多重度 説明
handler 要素 'handler' 要素または遷移の条件のいずれかを指定する必要があります。 org.jbpm.jpdl.Def.DecisionHandler 実装の名前
transition conditions 決定から退出する遷移の属性または要素のテキスト
すべての遷移には保護条件が含まれる場合があります。決定ノードは、条件を持つ退出遷移を調べ、条件が真である最初の遷移を選択します。
条件が満たされない場合は、デフォルト の遷移が取得されます。デフォルト遷移は、存在する場合は最初の無条件遷移であり、存在しない場合は最初の条件付き遷移です。遷移はドキュメント順に考慮されます。
条件付き ("保護された") 遷移のみが使用可能で、遷移の条件がいずれも true と評価されない場合、例外が出力されます。
共通のノード要素 「共通のノード要素」 を参照

14.4.14. event

Expand
表14.14 イベントスキーマ
名前 タイプ 多重度 説明
type 属性 required これは、イベントが配置される要素に対して相対的に表現されるイベントタイプです。
{action|script|create-timer|cancel-timer} 要素 [0..*] これは、このイベントで実行する必要があるアクションのリストです。

14.4.15. transition

Expand
表14.15 遷移スキーマ
名前 タイプ 多重度 説明
name 属性 任意 これは遷移の名前です。ノードから退出する各遷移には、個別の名前が *必要* であることに注意してください。
to 属性 required これは宛先ノードの階層名です。階層名の詳細は、「 階層名 」 を参照してください。
condition 属性または要素のテキスト 任意 これは 保護条件 式です。この条件属性 (または子要素) を決定ノードで使用するか、ランタイム時にトークンで使用可能な遷移を計算します。条件は、決定ノードから退出する遷移でのみ許可されます。
{action|script|create-timer|cancel-timer} 要素 [0..*] これらは、この遷移が発生したときに実行されるアクションです。遷移のアクションはイベントに入れる必要がないことに注意してください (イベントは 1 つしかないため)。
exception-handler 要素 [0..*] これは、このプロセスノード内から委譲クラスによって出力されたすべてのバグに適用される例外ハンドラーのリストです。

14.4.16. action

Expand
表14.16 アクションスキーマ
名前 タイプ 多重度 説明
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

Expand
表14.17 スクリプトスキーマ
名前 タイプ 多重度 説明
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

Expand
表14.18 式スキーマ
名前 タイプ 多重度 説明
{content} Bean シェルスクリプト。

14.4.19. variable

Expand
表14.19 変数スキーマ
名前 タイプ 多重度 説明
name 属性 required プロセスの変数名
access 属性 任意 デフォルトは read,write です。これは、アクセス指定子のコンマ区切りリストです。これまでに使用したアクセス指定子は、readwrite、および required のみです。"required" は、タスク変数をプロセス変数に送信する場合にのみ関係します。
mapped-name 属性 任意 デフォルト設定は変数名です。これは変数名がマップされる名前を指定します。mapped-name の意味は、この要素が使用されるコンテキストに依存します。スクリプトの場合、これは script-variable-name になります。タスクコントローラーの場合、これはタスクフォームパラメーターのラベルになります。プロセス状態の場合、これはサブプロセスで使用される変数名になります。

14.4.20. handler

Expand
表14.20 ハンドラースキーマ
名前 タイプ 多重度 説明
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

Expand
表14.21 タイマースキーマ
名前 タイプ 多重度 説明
name 属性 任意 タイマーの名前。名前が指定されていない場合は、包含するノードの名前が使用されます。すべてのタイマーには一意の名前が必要であることに注意してください。
duedate 属性 required タイマーの作成からタイマーの実行までの期間を指定する時間幅 (必要に応じて営業時間で表します)。この構文については、「 期間 」 を参照してください。
repeat 属性 任意 {duration | 'yes' | 'true'}。duedate にタイマーを実行した後、'repeat' により、必要に応じてノードから退出するまでタイマー実行を繰り返す期間を指定します。yes または true を指定した場合、duedate と同じ期間が繰り返されます。この構文については、「 期間 」 を参照してください。
transition 属性 任意 タイマーイベントが発生し、アクション (存在する場合) が実行された後、タイマーが実行されるときに取得される遷移の名前。
cancel-event 属性 任意 この属性は、タスクのタイマーでのみ使用されます。タイマーをキャンセルするイベントを指定します。デフォルトでは、これは task-end イベントですが、たとえば task-assigntask-start にも設定できます。属性のコンマ区切りリストで指定することで、cancel-event タイプを組み合わせることができます。
{action|script|create-timer|cancel-timer} 要素 [0..1] このタイマーが起動したときに実行する必要があるアクション。

14.4.22. create-timer

Expand
表14.22 タイマー作成スキーマ
名前 タイプ 多重度 説明
name 属性 任意 タイマーの名前。この名前は、cancel-timer アクションでタイマーをキャンセルするために使用できます。
duedate 属性 required タイマーの作成からタイマーの実行までの期間を指定する時間幅 (必要に応じて営業時間で表します)。この構文については、「 期間 」 を参照してください。
repeat 属性 任意 {duration | 'yes' | 'true'}。duedate にタイマーを実行した後、'repeat' により、必要に応じてノードから退出するまでタイマー実行を繰り返す期間を指定します。yes または true を指定した場合、duedate と同じ期間が繰り返されます。この構文については、「 期間 」 を参照してください。
transition 属性 任意 タイマーイベントが発生し、アクション (存在する場合) が実行された後、タイマーが実行されるときに取得される遷移の名前。

14.4.23. cancel-timer

Expand
表14.23 キャンセルタイマースキーマ
名前 タイプ 多重度 説明
name 属性 任意 キャンセルするタイマーの名前。

14.4.24. task

Expand
表14.24 タスクスキーマ
名前 タイプ 多重度 説明
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-eventtask-end ですが、task-assigntask-start などにカスタマイズできます。
controller 要素 [0..1] プロセス変数をタスクフォームパラメーターに変換する方法を指定します。タスクフォームパラメーターは、タスクフォームをユーザーに表示するためにユーザーインターフェイスによって使用されます。

14.4.25. スイムレーン

Expand
表14.25 スイムレーンスキーマ
名前 タイプ 多重度 説明
name 属性 required スイムレーンの名前。スイムレーンは、TaskMgmtDefinition を介して参照および検索できます。
assignment 要素 [1..1] このスイムレーンの割り当てを指定します。割り当ては、このスイムレーンで最初のタスクインスタンスが作成されたときに実行されます。

14.4.26. 割り当て

Expand
表14.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

Expand
表14.27 コントローラースキーマ
名前 タイプ 多重度 説明
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

Expand
表14.28 サブプロセススキーマ
名前 タイプ 多重度 説明
name 属性 required 呼び出すサブプロセスの名前。String として評価される必要がある EL 式を指定できます。
version 属性 任意 呼び出すサブプロセスのバージョン。version が指定されていない場合、process-state は特定のプロセスの最新バージョン使用します。
binding 属性 任意 サブプロセスが解決される瞬間を定義します。オプションは {early|late} です。デフォルトでは early、つまりデプロイメント時に解決されます。bindinglate として定義されている場合、process-state は、実行ごとに特定のプロセスの最新バージョンを解決します。late binding は、固定バージョンと組み合わせると意味がありません。したがって、version 属性は binding="late" の場合、無視されます。

14.4.29. condition

Expand
表14.29 条件スキーマ
名前 タイプ 多重度 説明
オプションは {content} です。後方互換性のために、expression 属性で条件を入力することもできますが、この属性はバージョン 3.2 以降非推奨となりました。 required condition 要素の内容は、ブール値として評価される必要がある jPDL 式です。決定は、(processdefinition.xml ファイルの順序に従って) 式が true に解決される最初の遷移を取得します。どの条件も true に解決されない場合、デフォルトの退出遷移 (最初の遷移) が使用されます。条件は、決定ノードから退出する遷移でのみ許可されます。

14.4.30. exception-handler

Expand
表14.30 例外ハンドラースキーマ
名前 タイプ 多重度 説明
exception-class 属性 任意 これは、この例外ハンドラーと一致する Java の "スロー可能" なクラスの完全修飾名を指定します。この属性が指定されていない場合、すべての例外に一致します (java.lang.Throwable)。
action 要素 [1..*] これは、この例外ハンドラーによってエラーが処理されているときに実行されるアクションのリストです。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat