Menu Close
Settings Close

Language and Page Formatting Options

Red Hat Process Automation Manager でのプロセスサービスの開発

Red Hat Process Automation Manager 7.12

ガイド

概要

本ガイドでは、Business Process Model and Notation (BPMN) 2.0 モデルを使用して、Red Hat Process Automation Manager でプロセスサービスおよびケース定義を開発する方法を説明します。本ガイドでは、プロセスおよびケース管理の概念およびオプションについても説明します。

前書き

プロセスの開発者は、Red Hat Process Automation Manager を使用して、Business Process Model and Notation (BPMN) 2.0 モデルを使用してプロセスサービスおよびケース定義を開発することができます。BPMN プロセスモデルは、ビジネスの目標を達成するために必要なステップをグラフィックで表示します。BPMN の詳細は、Object Management Group (OMG) の 「Business Process Model and Notation 2.0 specification」を参照してください。

オープンソースをより包含的に設定する

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みにより、これらの変更は今後の複数のリリースに対して段階的に実施されます。詳細は、弊社の CTO である Chris Wright のメッセージ を参照してください。

パート I. BPMN モデルを使用したビジネスプロセスの作成

ビジネスプロセス開発者は、Red Hat Process Automation Manager の Business Central または VS Code の Red Hat Process Automation Manager BPMN モデラーを使用して、特定のビジネス要件を満たすようにビジネスプロセスを設計できます。本書では、ビジネスプロセスと、Red Hat Process Automation Manager のプロセスデザイナーを使用してビジネスプロセスを作成するための概念とオプションを説明します。また、Red Hat Process Automation Manager の BPMN2 要素についても説明しています。BPMN2 に関する詳細は、Business Process Model and Notation Version 2.0 仕様を参照してください。

前提条件

第1章 ビジネスプロセス

ビジネスプロセスとは、一連の手順の実行すべき順番を説明し、事前定義済みのノードや接続で構成されるダイアグラムのことです。各ノードは、プロセス内の手順 1 つを表し、接続はノード間の移動方法を指定します。

典型的なビジネスプロセスは、以下のコンポーネントで構成されています。

  • プロセスの名前、インポート、変数などのグローバル要素で構成されるヘッダーセクション
  • プロセスの一部であるすべての異なるノードを含むノードセクション
  • これらのノードを相互にリンクしてフローチャートを作成する接続セクション

図1.1 ビジネスプロセス

This image shows the steps of "self evaluation" through the project manager and HR manager.

Red Hat Process Automation Manager には、レガシーのプロセスデザイナーと、ビジネスプロセスダイアグラムを作成するための新しいプロセスデザイナーが含まれています。新しいプロセスデザイナーのレイアウトと機能セットは改善されており、開発が続けられています。レガシーのプロセスデザイナーのすべての機能が新しいプロセスデザイナーに完全に実装されるまで、両方のデザイナーを Business Central で使用できます。

注記

Business Central のレガシーのプロセスデザイナーは、Red Hat Process Automation Manager 7.12.0 で非推奨になります。このツールは、今後の Red Hat Process Automation Manager リリースで削除予定です。そのため、レガシーのプロセスデザイナーには新しい機能拡張や機能は追加されません。新しいプロセスデザイナーを使用する場合は、お使いのプロセスを新しいデザイナーに移行し始めます。新しいプロセスデザイナーですべての新規プロセスを作成します。新規デザイナーへの移行に関する詳細は、『 Business Central におけるプロジェクトの管理』 を参照してください。

第2章 Red Hat Process Automation Manager の BPMN モデラ―および DMN モデラー

Red Hat Process Automation Manager は、グラフィカルモデラーを使用して Business Process Model and Notation (BPMN) プロセスモデルと、Decision Model and Notation (DMN) デシジョンモデルを設計するのに使用できる次の拡張機能またはアプリケーションを提供します。

  • Business Central: 関連する埋め込みデザイナーで、BPMN モデル、DMN モデル、およびテストシナリオファイルを表示および設計できます。

    Business Central を使用するには、Business Central を含む開発環境を設定してビジネスルールおよびプロセスを作成し、KIE Server を作成して、作成したビジネスルールとプロセスを実行およびテストします。

  • Red Hat Process Automation Manager VS Code 拡張機能: Visual Studio Code(VS Code)で BPMN モデル、DMN モデル、およびテストシナリオファイルを表示して、作成できるようにします。VS Code 拡張機能には VS Code 1.46.0 以降が必要です。

    Red Hat Process Automation Manager VS Code 拡張機能をインストールするには、VS Code の Extensions メニューオプションを選択し、Red Hat Business Automation Bundle 拡張機能を検索し、インストールします。

  • スタンドアロン BPMN および DMN エディター: Web アプリケーションに組み込まれた BPMN モデルおよび DMN モデルを表示して、作成できます。必要なファイルをダウンロードするには、NPM レジストリーから NPM アーティファクトを使用するか、https ://<YOUR_PAGE>/dmn/index.js の DMN スタンドアロンエディターライブラリーと、BPMN スタンドアロンエディターライブラリー(https ://<YOUR_PAGE>/bpmn/index.js )の JavaScript ファイルを直接ダウンロードします。

2.1. Red Hat Process Automation Manager VS Code 拡張機能バンドルのインストール

Red Hat Process Automation Manager は、Red Hat Business Automation Bundle VS Code 拡張機能を提供します。これにより、Decision Model and Notation(DMN)デシジョンモデル、Business Process Model and Notation(BPMN)2.0 ビジネスプロセス、およびテストシナリオを VS Code で直接作成できます。新しいビジネスアプリケーションを開発するのに、VS Code が推奨される統合開発環境(IDE)です。Red Hat Process Automation Manager は、必要に応じて DMN サポートまたは BPMN サポートの DMN Editor および BPMN Editor VS Code 拡張機能をそれぞれ提供します。

重要

VS Code のエディターは Business Central のエディターと部分的に互換性があり、VS Code では複数の Business Central 機能はサポートされません。

前提条件

  • VS Code の最新の安定版がインストールされている。

手順

  1. VS Code IDE で Extensions メニューオプションを選択し、DMN、BPMN、およびテストシナリオファイルのサポートに対して Red Hat Business Automation Bundle を検索します。

    DMN ファイルまたは BPMN ファイルだけをサポートする場合は、DMN Editor または BPMN Editor 拡張機能をそれぞれ検索することもできます。

  2. Red Hat Business Automation Bundle 拡張機能が VS Code に表示される際に、これを選択し、Install をクリックします。
  3. VS Code エディターの動作を最適化するには、拡張機能のインストールが完了した後に、VS Code のインスタンスを再度読み込み、閉じるか、または再起動します。

VS Code 拡張機能バンドルをインストールした後、VS Code で開くか作成する any .dmn ファイル .bpmn2 ファイル、または.bpmn2 ファイルがグラフィカルモデルとして自動的に表示されます。さらに、開くまたは作成する .scesim ファイルは、ビジネスデシジョンの機能をテストするテーブルテストシナリオモデルとして自動的に表示されます。

DMN、BPMN、またはテストシナリオモデラーが DMN、BPMN、またはテストシナリオファイルの XML ソースのみを開き、エラーメッセージが表示される場合は、報告されたエラーおよびモデルファイルを確認して、すべての要素が正しく定義されていることを確認します。

注記

新しい DMN モデルまたは BPMN モデルの場合は、Web ブラウザーで dmn.new または bpmn.new を入力して、オンラインモデラーで DMN モデルまたは BPMN モデルを設計することもできます。モデルの作成が終了したら、オンラインモデラーページで Download をクリックして、VS Code の Red Hat Process Automation Manager プロジェクトに DMN または BPMN ファイルをインポートできます。

2.2. Red Hat Process Automation Manager スタンドアロンのエディターの設定

Red Hat Process Automation Manager は、自己完結型のライブラリーに分散されたスタンドアロンのエディターを提供し、エディターごとにオールインワンの JavaScript ファイルを提供します。JavaScript ファイルは、包括的な API を使用してエディターを設定および制御します。

スタンドアロンのエディターは、以下の方法でインストールできます。

  • 各 JavaScript ファイルを手動でダウンロード
  • NPM パッケージの使用

手順

  1. 以下の方法のいずれかを使用して、スタンドアロンのエディターをインストールします。

    各 JavaScript ファイルを手動でダウンロード: この方法の場合は、以下の手順に従います。

    1. JavaScript ファイルをダウンロードします。
    2. ダウンロードした Javascript ファイルをホスト型アプリケーションに追加します。
    3. 以下の <script> タグを HTML ページに追加します。

      DMN エディターの HTML ページのスクリプトタグ

      <script src="https://<YOUR_PAGE>/dmn/index.js"></script>

      BPMN エディターの HTML ページのスクリプトタグ

      <script src="https://<YOUR_PAGE>/bpmn/index.js"></script>

    NPM パッケージの使用: この方法の場合は、以下の手順に従います。

    1. NPM パッケージを package.json ファイルに追加します。

      NPM パッケージの追加

      npm install @kogito-tooling/kie-editors-standalone

    2. 各エディターライブラリーを TypeScript ファイルにインポートします。

      各エディターのインポート

      import * as DmnEditor from "@kogito-tooling/kie-editors-standalone/dist/dmn"
      import * as BpmnEditor from "@kogito-tooling/kie-editors-standalone/dist/bpmn"

  2. スタンドアロンのエディターをインストールしたら、以下の例のように提供されたエディター API を使用して必要なエディターを開き、DMN エディターを開きます。API はエディターごとに同じです。

    DMN スタンドアロンのエディターを開く

    const editor = DmnEditor.open({
      container: document.getElementById("dmn-editor-container"),
      initialContent: Promise.resolve(""),
      readOnly: false,
      origin: "",
      resources: new Map([
        [
          "MyIncludedModel.dmn",
          {
            contentType: "text",
            content: Promise.resolve("")
          }
        ]
      ])
    });

    エディター API で以下のパラメーターを使用します。

    表2.1 パラメーターの例

    パラメーター説明

    container

    エディターが追加される HTML 要素。

    initialContent

    DMN モデルのコンテンツへの Pomise。以下の例のように、このパラメーターは空にすることができます。

    • Promise.resolve("")
    • Promise.resolve("<DIAGRAM_CONTENT_DIRECTLY_HERE>")
    • fetch("MyDmnModel.dmn").then(content ⇒ content.text())

    readonly (任意)

    エディターでの変更を許可します。コンテンツの編集を許可する場合は false (デフォルト)、エディターで読み取り専用モードの場合は true に設定します。

    origin (任意)

    リポジトリーの起点。デフォルト値は window.location.origin です。

    resources (任意)

    エディターのリソースのマッピング。たとえば、このパラメーターを使用して、BPMN エディターの DMN エディターまたは作業アイテム定義に含まれるモデルを提供します。マップの各エントリーには、リソース名と、content-type (text または binary) および content (initialContent パラメーターと同様) で構成されるオブジェクトが含まれています。

    返されるオブジェクトには、エディターの操作に必要なメソッドが含まれます。

    表2.2 返されたオブジェクトメソッド

    メソッド説明

    getContent(): Promise<string>

    エディターのコンテンツを含む promise を返します。

    setContent(path: string, content: string): void

    エディターの内容を設定します。

    getPreview(): Promise<string>

    現在のダイアグラムの SVG 文字列が含まれる promise を返します。

    subscribeToContentChanges(callback: (isDirty: boolean) ⇒ void): (isDirty: boolean) ⇒ void

    エディターでコンテンツを変更し、サブスクライブ解除に使用されるのと同じコールバックを返す際に呼び出されるコールバックを設定します。

    unsubscribeToContentChanges(callback: (isDirty: boolean) ⇒ void): void

    エディターでコンテンツが変更される際に渡されたコールバックのサブスクライブを解除します。

    markAsSaved(): void

    エディターの内容が保存されることを示すエディターの状態をリセットします。また、コンテンツの変更に関連するサブスクライブされたコールバックをアクティベートします。

    undo(): void

    エディターの最後の変更を元に戻します。また、コンテンツの変更に関連するサブスクライブされたコールバックをアクティベートします。

    redo(): void

    エディターで、最後に元に戻した変更をやり直します。また、コンテンツの変更に関連するサブスクライブされたコールバックをアクティベートします。

    close(): void

    エディターを終了します。

    getElementPosition(selector: string): Promise<Rect>

    要素をキャンバスまたはビデオコンポーネント内に置いた場合に、標準のクエリーセレクターを拡張する方法を提供します。selector パラメーターは、Canvas:::MySquareVideo:::PresenterHand などの <PROVIDER>:::<SELECT> 形式に従う必要があります。このメソッドは、要素の位置を表す Rect を返します。

    envelopeApi: MessageBusClientApi<KogitoEditorEnvelopeApi>

    これは高度なエディター API です。高度なエディター API の詳細は、MessageBusClientApi および KogitoEditorEnvelopeApi を参照してください。

第3章 Maven を使用した DMN モデルおよび BPMN モデルの作成および実行

Maven アーキタイプを使用して、Business Central ではなく Red Hat Process Automation Manager VS Code 拡張機能を使用して、VS Code で DMN モデルおよび BPMN モデルを開発できます。その後、必要に応じて、Business Central で、アーキタイプを Red Hat Process Automation Manager のデシジョンサービスおよびプロセスサービスに統合できます。DMN モデルおよび BPMN モデルを開発する方法は、Red Hat Process Automation Manager VS Code 拡張機能を使用して新しいビジネスアプリケーションを構築する場合に便利です。

手順

  1. コマンドターミナルで、新しい Red Hat Process Automation Manager プロジェクトを保存するローカルディレクトリーに移動します。
  2. 以下のコマンドを入力して、Maven の archtype を使用して、定義したディレクトリーにプロジェクトを生成します。

    Maven アーキタイプを使用したプロジェクトの生成

    mvn archetype:generate \
        -DarchetypeGroupId=org.kie \
        -DarchetypeArtifactId=kie-kjar-archetype \
        -DarchetypeVersion=7.59.0.Final-redhat-00006

    このコマンドにより、必要な依存関係で Maven プロジェクトが生成され、ビジネスアプリケーションを構築するのに必要なディレクトリーとファイルが生成されます。プロジェクト開発時に Git バージョン管理システム(推奨)を使用できます。

    同じディレクトリーに複数のプロジェクトを生成する場合は、直前のコマンドに -DgroupId=<groupid> -DartifactId=<artifactId> を追加して、生成されたビジネスアプリケーションの artifactId および groupId を指定します。

  3. VS Code IDE で File をクリックし、Open Folder を選択し、直前のコマンドを使用して生成されたディレクトリーに移動します。
  4. 最初のアセットを作成する前に、ビジネスアプリケーションのパッケージ (例: org.kie.businessapp) を設定し、以下のパスにそれぞれのディレクトリーを作成します。

    • PROJECT_HOME/src/main/java
    • PROJECT_HOME/src/main/resources
    • PROJECT_HOME/src/test/resources

    たとえば、org.kie.businessapp パッケージの PROJECT_HOME/src/main/java/org/kie/businessapp を作成できます。

  5. VS Code を使用して、ビジネスアプリケーションのアセットを作成します。以下の方法で、Red Hat Process Automation Manager VS Code 拡張機能がサポートするアセットを作成できます。

    • ビジネスプロセスを作成するには、PROJECT_HOME/src/main/java/org/kie/businessapp ディレクトリーに、.bpmn または .bpmn2 の新規ファイルを作成します (例: Process.bpmn)。
    • DMN モデルを作成するには、PROJECT_HOME/src/main/java/org/kie/businessapp ディレクトリーに、.dmn の新規ファイルを作成します (例: AgeDecision.dmn)。
    • テストシナリオシミュレーションモデルを作成するには、PROJECT_HOME/src/main/java/org/kie/businessapp ディレクトリーに、.scesim の新規ファイルを作成します (例: TestAgeScenario.scesim)。
  6. Maven アーキタイプでアセットを作成したら、コマンドラインで (pom.xml がある) プロジェクトのルートディレクトリーに移動し、以下のコマンドを実行してプロジェクトのナレッジ JAR (KJAR) を構築します。

    mvn clean install

    ビルドに失敗したら、コマンドラインのエラーメッセージに記載されている問題に対応し、ビルドに成功するまでプロジェクトの妥当性確認を行います。ただし、ビルドに成功すると、PROJECT_HOME/target ディレクトリーでビジネスアプリケーションのアーティファクトを確認できます。

    注記

    mvn clean install コマンドを使用して、開発中の主要な変更ごとにプロジェクトを検証します。

REST API を使用して実行中の KIE Server に、ビジネスアプリケーションの生成されたナレッジ JAR (KJAR) をデプロイできます。REST API の使用方法は、『 KIE API を使用した Red Hat Process Automation Manager の操作』を参照してください。

第4章 Business Process Modeling and Notation バージョン 2.0

Business Process Modeling and Notation バージョン 2.0 (BPMN2) 仕様は、ビジネスプロセスを描画表現するための標準や要素の実行セマンティクスを定義し、XML 形式でのプロセス定義を指定する Object Management Group (OMG) 仕様です。

プロセスは、定義するか、プロセス定義を使用して判断されます。また、プロセスはナレッジベースに存在しており、ID で識別されます。

表4.1 一般的なプロセスプロパティー

ラベル説明

名前

プロセスの名前を入力します。

ドキュメント

プロセスを記述します。このフィールドのテキストはプロセスドキュメントに含まれます (該当する場合)。

ID

このプロセスの識別子 (orderItems など) を入力します。

Package

Red Hat Process Automation Manager プロジェクトにおけるこのプロセスのパッケージの場所を入力します (例: org.acme)。

ProcessType

プロセスがパブリックまたはプライベートであるかを指定します。ただし、現時点ではサポートされていません。

バージョン

プロセスのアーティファクトバージョンを入力します。

アドホック

このプロセスがアドホックサブプロセスである場合は、このオプションを選択します。

Process Instance Description

プロセスの目的の説明を入力します。

インポート

クリックして Imports ウィンドウを開き、プロセスに必要なデータタイプクラスを追加するか、すでに定義したデータタイプを選択できます。

実行可能

このオプションを選択して、プロセスを Red Hat Process Automation Manager プロジェクトの実行可能な部分にします。

SLA 期日

サービスレベルアグリーメント (SLA) の有効期限の日付を入力します。

プロセス変数

プロセスのプロセス変数を追加します。プロセス変数は、特定のプロセスインスタンス内で表示されます。プロセス変数はプロセスの作成時に初期化され、プロセスの完了時に破棄されます。変数タグを使用すると、変数の動作をより細かく制御できます。たとえば、変数に required タグを付けたり、readonly タグを付けたりできます。変数タグの詳細は、6章変数 を参照してください。

Metadata Attributes

メタデータ属性が存在する場合に何らかのアクションを実装するリスナーなど、カスタムイベントリスナーに使用するカスタムメタデータ属性の名前と値を追加します。

グローバル変数

プロセスにグローバル変数を追加します。グローバル変数は、プロジェクトのすべてのプロセスインスタンスとアセットに表示されます。グローバル変数は通常、ビジネスルールおよび制約によって使用され、ルールまたは制約によって動的に作成されます。

プロセスは、一連のモデリング要素のコンテナーです。これには、フローオブジェクトとフローを使用してビジネスプロセスまたはそのパーツの実行ワークフローを指定する要素が含まれています。各プロセスには、独自の BPMN2 ダイアグラムがあります。Red Hat Process Automation Manager には、BPMN2 ダイアグラムを作成するための新規プロセスデザイナーのほか、.bpmn2 拡張を使用して以前の BPMN2 ダイアグラムを開くレガシープロセスデザイナーが含まれます。新規プロセスデザイナーでは、レイアウトと機能セットが向上され、今後も開発が続けられる予定です。デフォルトでは、新規ダイアグラムは新規プロセスデザイナーで作成されます。

4.1. BPMN2 向けの Red Hat Process Automation Manager サポート

Red Hat Process Automation Manager では、BPMN 2.0 標準を使用して、ビジネスプロセスのモデル化が可能です。Red Hat Process Automation Manager を使用してこれらのビジネスプロセスを実行、管理、監視することができます。包括的な BPMN 2.0 仕様には、コレオグラフィーやコラボレーションなどの項目を表現する方法が含まれます。ただし、Red Hat Process Automation Manager は、実行可能なプロセスの指定に使用可能な仕様の部分のみを使用します。これには、BPMN2 仕様の共通の実行可能なサブクラスに定義されている全要素および属性だけでなく、追加の要素や属性も含まれます。

以下の表は、BPMN2 要素がレガシーのプロセスデザイナーでサポートされているか、レガシーおよび新規プロセスデザイナーでサポートされているか、またはサポートされていないかを示すアイコン一覧を示しています。

表4.2 サポートの状態を示すアイコン

キー説明

grn check

レガシーおよび新規プロセスデザイナーでのサポート

grn star

レガシーのプロセスデザイナーでのみサポート

bk x

サポートなし

アイコンのない要素は、BPMN2 仕様には存在しません。

表4.3 BPMN2 の Catch イベント

要素名開始中間

なし

grn check

 

メッセージ

grn check

grn check

タイマー

grn check

grn check

エラー

grn check

grn check

エスカレーション

grn check

grn check

キャンセル

 

bk x

Compensation

grn check

grn check

条件付き

grn check

grn check

リンク

 

grn check

シグナル

grn check

grn check

複数

bk x

bk x

並列多重

bk x

bk x

表4.4 BPMN2 送出および中断なしイベント

要素名送出 中断なし 
 

終了

中間

開始

中間

なし

grn check

   

メッセージ

grn check

grn check

grn check

grn check

タイマー

  

grn check

grn check

エラー

grn check

   

エスカレーション

grn check

grn check

grn check

grn check

キャンセル

bk x

bk x

 

bk x

Compensation

grn check

grn check

  

条件付き

  

grn check

grn check

リンク

 

grn check

  

シグナル

grn check

grn check

grn check

grn check

終了

grn check

   

複数

bk x

bk x

bk x

bk x

並列多重

  

bk x

bk x

表4.5 BPMN2 要素

要素タイプ要素対応

タスク

ビジネスルール

grn check

 

スクリプト

grn check

 

ユーザータスク

grn check

 

サービスタスク

grn check

複数のインスタンスサブプロセスを含むサブプロセス

組み込み

grn check

 

アドホック

grn check

 

再利用可能

grn check

 

イベント

grn check

ゲートウェイ

含む

grn check

 

排他的

grn check

 

並行

grn check

 

イベントベース

grn check

 

複雑

bk x

オブジェクトの接続

シーケンスフロー

grn check

 

関連フロー

grn check

スイムレーン

スイムレーン

grn check

アーティファクト

グループ

grn star

 

テキストのアノテーション

grn check

 

データオブジェクト

grn check

BPMN2 の背景およびアプリケーションに関する詳細は、OMG Business Process Model and Notation (BPMN) Version 2.0 を参照してください。

4.2. プロセスデザイナーでの BPMN2 イベント

イベントとは、ビジネスプロセスに発生する内容のことです。BPMN2 では、3 つのイベントカテゴリーをサポートします。

  • 開始
  • 終了
  • 中間

開始イベントはイベントトリガーをキャッチし、終了イベントはイベントトリガーをスローします。中間イベントは、イベントトリガーをキャッチおよびスローできます。

以下のビジネスプロセスダイアグラムでは、イベントの例を紹介します。 events

この例では、以下のイベントが発生します。

  • シグナルを受信すると、ATM カード挿入のシグナル開始イベントがトリガーされます。
  • タイムアウトの中間イベントは、タイマートリガーをもとにした割り込みイベントです。つまり、タイマーイベントがトリガーされると、暗証番号待ちのサブプロセスがキャンセルされるという意味です。
  • プロセスへの入力に応じて、Validate User Pin タスクに関連付けられた終了イベント、または Inform User of Timeout タスクに関連付けられた終了イベントが、プロセスを終了します。

4.2.1. 開始イベント

開始イベントを使用して、ビジネスプロセスの始端を示します。開始イベントには、受信シーケンスフローを割り当てることができず、外向きシーケンスフローだけを割り当てる必要があります。「なし (none)」開始イベントは、トップレベルプロセス、埋め込みサブプロセス、呼び出し可能サブプロセス、イベントサブプロセスで使用できます。

「なし (none)」開始イベントの例外を除けば、開始イベントはすべてキャッチイベントです。たとえば、シグナルの開始イベントは、参照のシグナル (イベントトリガー) を受け取った場合にのみプロセスを開始します。イベントサブプロセスの開始イベントを割り込みまたは割り込みなしイベントに設定できます。イベントサブプロセスに対する割り込みありの開始イベントでは、包含プロセスまたは親プロセスの実行を停止または中断します。割り込みなしの開始イベントは、包含プロセスまたは親プロセスの実行を停止したり、中断したりしません。

表4.6 開始イベント

開始イベントタイプトップレベルサブプロセス 
  

割り込み

割り込みなし

なし

bpmn start node

  

条件付き

bpmn conditional start

bpmn conditional start

bpmn conditional non interrupt

補正

bpmn compensation start

bpmn compensation start

 

エラー

 

bpmn error start

 

エスカレーション

bpmn escalation start

bpmn escalation start

bpmn escalation non interrupt

メッセージ

bpmn message node

bpmn message node

bpmn message non interrupt

シグナル

bpmn signal start

bpmn signal start

bpmn signal non interrupt

タイマー

bpmn timer start

bpmn timer start

bpmn timer non interrupt

なし

「なし」の開始イベントは、トリガー条件のない開始イベントです。プロセスまたはサブプロセスには、最大 1 つの「なし」開始イベントを含めることができます。このイベントは、デフォルトでプロセスまたはサブプロセスの開始によりトリガーされ、外向きフローがすぐに実行されます。

サブプロセスで「なし」開始イベントを使用すると、親プロセスからサブプロセスに、プロセスフローの実行が移動し、「なし」開始イベントがトリガーされます。これは、トークン (プロセスフローの内の現在の場所) が親プロセスからサブプロセスのアクティビティーに渡され、サブプロセスの「なし」開始イベントが独自のトークンを生成します。

条件付き

条件付きの開始イベントは、ブール型の条件定義を含む開始イベントです。条件が最初に false と評価され、次に true に評価された場合に実行がトリガーされます。プロセスの実行は、開始イベントがインスタンス化された後に条件が true と評価された場合にのみ開始されます。

プロセスには、複数の条件開始イベントを含めることができます。

補正

補正開始イベントは、補正中間イベントのターゲットアクティビティーとしてサブプロセスを使用した場合に、補正イベントのサブプロセスを開始するのに使用します。

エラー

プロセスまたはサブプロセスには、複数のエラー開始イベントを含めることができます。特定の ErrorRef プロパティーを含むエラーオブジェクトを受け取った場合に、この開始イベントが開始します。エラーオブジェクトは、エラーの終了イベントで生成可能です。これは、プロセスの終端が不正であることを示します。エラーの開始イベントが含まれるプロセスインスタンスは、該当するエラーオブジェクトの受信後に実行が開始されます。エラー開始イベントは、エラーオブジェクトの受信直後に実行されて、外向きフローが実行されます。

エスカレーション

エスカレーション開始イベントは、特定のエスカレーションコードを含むエスカレーションによりトリガーされる開始イベントです。プロセスには、複数のエスカレーション開始イベントを含めることができます。エスカレーション開始イベントが含まれるプロセスインスタンスは、定義されているエスカレーションオブジェクトを受信すると、実行を開始します。プロセスがインスタンス化され、直後にエスカレーション開始イベントが実行され、外向きフローが実行されます。

メッセージ

プロセスまたはイベントのサブプロセスには、複数の「メッセージ」開始イベントを含めることができます。これらのイベントは、通常特定のメッセージにより開始します。「メッセージ」開始イベントが含まれるプロセスインスタンスの実行は、該当のメッセージを受け取った後に、このイベントからのみ開始します。「メッセージ」開始イベントが含まれるプロセスインスタンスの実行は、該当のメセージを受信した後に、このイベントからのみ開始されます。メッセージの受信後に、プロセスはインスタンス化され、「メッセージ」開始イベントが即座に実行されます (外向きフローが実行されます)。

メッセージは、要素なしなど、任意の数のプロセスおよびプロセス要素により消費可能であるため、1 つのメッセージで複数の「メッセージ」開始イベントをトリガーできるので、複数のプロセスがインスタンス化されます。

シグナル

シグナル開始イベントは、特定のシグナルコードを含むシグナルによりトリガーされます。プロセスには、複数のシグナル開始イベントを含めることができます。シグナル開始イベントは、インスタンスが該当のシグナルを受信した後にのみ、プロセスインスタンス内で実行されます。その後に、シグナル開始イベントが実行され、外向きフローが実行されます。

タイマー

タイマー開始イベントは、タイミングのメカニズムを含む開始イベントです。プロセスには、複数のタイマー開始イベントを含めることができます。タイマー開始イベントは、タイミングのメカニズムが適用された後に、プロセスの開始時に発生します。

サブプロセスでタイマー開始イベントを使用すると、プロセスフローの実行が親プロセスからサブプロセスに移動し、タイマー開始イベントが発生します。親サブプロセスアクティビティーからトークンを取得し、サブプロセスのタイマー開始イベントが開始し、タイマーが発生するまで待機します。タイミングの定義で指定した時間が経過したら、外向きフローが実行されます。

4.2.2. 中間イベント

中間イベントは、ビジネスプロセスのフローを駆動します。中間イベントは、ビジネスプロセスの実行中にイベントをキャッチまたはスローするときに使用します。中間イベントは、開始イベントと終了イベントの間に配置され、サブプロセス、人間のタスクなどのアクティビティーの境界にキャッチイベントとして使用することもできます。BPMN モデラーでは、プロセスインスタンスの詳細にアクセスするために追加のプロセスで使用される境界イベントの Data Output and Assignments フィールドにデータの出力を設定できます。補正イベントは、データ出力変数の設定機能をサポートしないことに注意してください。

たとえば、境界イベントに以下のデータ出力変数を設定できます。

  • nodeInstance: 境界イベントがトリガーされたときに追加のプロセスで使用するノードインスタンスの詳細を取得します。
  • signal: シグナルの名前を取得します。
  • event: イベントの詳細を取得します。
  • WorkItem: ワークアイテムの詳細を取得します。この変数は、ワークアイテムまたはユーザータスクに設定できます。

境界キャッチイベントは、割り込みまたは割り込みなしとして設定できます。割り込みありの境界キャッチイベントは、バインドされているアクティビティーを取り消しますが、割り込みなしのイベントは取り消しません。

中間イベントは、プロセス実行時に発生する特定の状況を処理します。このような状況が中間イベントのトリガーになります。プロセスには、外向きフローを 1 つ含む中間イベントを、アクティビティーの境界に配置できます。

アクティビティーの実行時にイベントが発生した場合には、このイベントにより、外向きフローへの実行がトリガーされます。1 つのアクティビティーに、複数の境界中間イベントが含まれる可能性があります。境界中間イベントで、アクティビティーから必要な動作によって、以下のいずれかの中間イベントタイプを使用できる点に注意してください。

  • 割り込みあり: アクティビティーの実行は中断され、中間イベントの実行がトリガーされます。
  • 割り込みなし: 中間イベントがトリガーされ、アクティビティーの実行が続行されます。

表4.7 中間イベント

中間イベントタイプキャッチ境界 送出
  

割り込み

割り込みなし

 

メッセージ

bpmn intermediate message

bpmn intermediate message

bpmn message noninterrupt

bpmn message throwing

タイマー

bpmn intermediate timer

bpmn intermediate timer

bpmn timer noninterrupt

 

エラー

 

bpmn intermediate error

  

シグナル

bpmn intermediate signal

bpmn intermediate signal

bpmn signal noninterrupt

bpmn signal throwing

条件付き

bpmn intermediate conditional

bpmn intermediate conditional

bpmn conditional noninterrupt

 

補正

bpmn intermediate catch

bpmn intermediate catch

 

bpmn intermediate compensation throwing

エスカレーション

bpmn intermediate escalation

bpmn intermediate escalation

bpmn intermediate escalation non interrupting

bpmn intermediate escalation throwing

リンク

bpmn intermediate link

  

bpmn intermediate link throwing

メッセージ

メッセージの中間イベントは、メッセージオブジェクトを管理可能にする中間イベントです。以下のイベントのいずれかを使用します。

  • スローメッセージの中間イベントでは、定義したプロパティーをもとにメッセージオブジェクトを作成します。
  • キャッチメッセージの中間イベントは、定義したプロパティーを使用してメッセージオブジェクトがないかリッスンします。

タイマー

タイマー中間イベントでは、ワークフローの実行を遅延させたり、定期的にトリガーしたりできます。このイベントは、指定した期間が経過したら 1 回または複数回、トリガーできるタイマーを表します。タイマー中間イベントがトリガーされたら、タイマー条件 (定義した時間) がチェックされ、外向きフローが実行されます。タイマー中間イベントがプロセスワークフローに配置されている場合には、内向きフローが 1 つと、外向きフローが 1 つ含まれます。内向きフローがイベントに移動すると、これが実行されます。タイマー中間イベントがアクティビティー境界に配置されている場合には、アクティビティーの実行と同時に、この実行がトリガーされます。

包含のプロセスインスタンスを完了するか、中断するなど、タイマー要素がキャンセルされると、タイマーがキャンセルされます。

条件付き

条件の中間イベントは、ブール型の条件がトリガーとして含まれる中間イベントです。このイベントは、条件で true と判断され、外向きフローが実行された場合に、さらにワークフロー実行をトリガーします。

このイベントは、Expression プロパティーを定義する必要があります。条件の中間イベントがプロセスワークフローに配置されている場合は、内向きフロー 1 つ、外向きフロー 1 つ含まれ、内向きフローがイベントに移動したときに、実行が開始されます。条件の中間イベントがアクティビティー境界に配置されている場合には、アクティビティーの実行時に、この実行がトリガーされます。イベントが割り込みなしの場合には、条件が true の場合は継続して、このイベントがトリガーされます。

シグナル

シグナルの中間イベントでは、シグナルオブジェクトを生成または消費できます。以下のオプションのいずれかを使用してください。

  • スローシグナルの中間イベントは、定義したプロパティーをもとにシグナルオブジェクトを生成します。
  • キャッチシグナルの中間イベントは、定義したプロパティーを使用してシグナルオブジェクトがないかリッスンします。

エラー

エラーの中間イベントは、アクティビティー境界でのみ使用可能な中間イベントです。このイベントでは、プロセスが、該当するアクティビティー内のエラー終了イベントに反応できるようになります。このアクティビティーは、アトミックにしないでください。アクティビティーが、エラー終了イベントで完了し、対応の ErrorCode プロパティーでエラーオブジェクトを生成した場合には、エラーの中間イベントがこのエラーオブジェクトをキャッチして、実行が外向きフローに進みます。

補正

補正中間イベントは、トランザクションサブプロセスのアクティビティーに接続している境界イベントです。補正終了イベントまたはキャンセル終了イベントで、このイベントを終了できます。補正中間イベントは、補正アクティビティーに接続しているフローと関連付ける必要があります。

境界補正の仲介イベントに関連付けられているアクティビティーは、トランザクションサブプロセスが補正終了イベントで終了した場合に実行します。この実行は、対応のフローで続行します。

エスカレーション

エスカレーション中間イベントは、エスカレーションオブジェクトを生成または消費できる中間イベントです。イベント要素が実行すべきアクションに合わせて、以下のオプションのいずれかを使用する必要があります。

  • スローエスカレーションの中間イベントは、定義したプロパティーをもとにエスカレーションオブジェクトを生成します。
  • キャッチエスカレーションの中間イベントは、定義したプロパティーを使用してエスカレーションオブジェクトがないかリッスンします。

以下のオプションのいずれかを使用してください。

  • 発生するリンク中間イベントは、定義されたプロパティーに基づいてリンクオブジェクトを生成します。
  • 取得するリンク中間イベントは、定義されたプロパティーでリンクオブジェクトをリッスンします。

4.2.3. 終了イベント

終了イベントは、ビジネスプロセスの終了に使用します。ビジネスプロセスには複数の終了イベントが存在する場合があります。なし、および中断終了イベント以外の終了イベントはすべてスローイベントです。

終了イベントは、ビジネスプロセスの完了を示します。終了イベントは、特定のワークフローを終了するノードです。このイベントには、1 つまたは複数の内向きシーケンスフローがあり、外向きフローはありません。

プロセスには最低でも 1 つの終了イベントが含まれている必要があります。

ランタイム中は、終了イベントでプロセスワークフローを終了します。終了イベントは、そのイベントに到達したワークフローのみ終了できます。終了イベントタイプによってはプロセスインスタンス内の全ワークフローを終了できます。

表4.8 終了イベント

なし

「なし」終了イベントは、他に特別な動作がプロセスの終端に関連付けられていないことを示します。

メッセージ

フローがメッセージの終了イベントに入ると、このフローは終了し、終了イベントがプロパティーに定義されているようにメッセージを生成します。

シグナル

スローシグナルの終了イベントは、プロセスまたはサブプロセスフローの終了に使用します。実行フローがこの要素に入ると、実行フローが終了し、SignalRef プロパティーで特定されたシグナルを生成します。

エラー

スローエラーの終了イベントは、内向きワークフローを完了します。つまり、内向きのトークンを消費し、エラーオブジェクトを生成します。プロセスまたはサブプロセスで他に実行されているワークフローは、影響を受けません。

補正

補正終了イベントは、トランザクションのサブプロセスを終了し、サブプロセスアクティビティーの境界に接続されている補正中間イベントで定義した補正を発生させるのに使用します。

エスカレーション

エスカレーション終了イベントは、内向きワークフローを終了します。これは、内向きのトークンを消費して、プロパティーに定義されているようにエスカレーションシグナルを生成し、エスカレーションプロセスをトリガーします。

終了

中断終了イベントは、指定したプロセスインスタンス内の全実行フローを終了します。実行中のアクティビティーはキャンセルされます。サブプロセスインスタンスは、中断終了イベントに到達した場合は中断されます。

4.3. プロセスデザイナーでの BPMN2 タスク

タスクは、プロセスモデルに定義されている自動アクティビティーで、プロセスフロー内で最小の作業単位です。BPMN 2 仕様に定義されているタスクタイプで、Red Hat Process Automation Manager のプロセスデザイナーパレットで利用できるのは以下のとおりです。

  • ビジネスルールタスク
  • スクリプトタスク
  • ユーザータスク
  • サービスタスク
  • タスクなし

表4.9 タスク

ビジネスルールタスク

bpmn business rule task

スクリプトタスク

bpmn script task

ユーザータスク

bpmn user task

サービスタスク

bpmn service task

タスクなし

bpmn none task

さらに、BPMN2 仕様では、カスタムタスクの作成が可能になります。カスタムタスクの詳細は、「プロセスデザイナーでの BPMN2 カスタムタスク」 を参照してください。

ビジネスルールタスク

ビジネスルールタスクは、DMN モデルまたはルールフローグループを使用して、意思決定を行う方法を定義します。

bpmn business rule task

プロセスが DMN モデルで定義したビジネスルールタスクに到達したら、プロセスエンジンが、入力された内容を使用して DMN モデルを実行します。

プロセスがルールフローグループで定義したビジネスルールタスクに到達したら、プロセスエンジンは、定義済みのルールフローグループでルールを実行開始します。ルールフローグループにアクティブなルールがない場合には、実行は次の要素に移動します。ルールフローグループの実行中は、アクティブなルールフローグループに所属するアクティベーションは、他のルールで変更されるので、新たにアジェンダに追加できます。

スクリプトタスク

スクリプトタスクは、プロセス実行中に実行されるスクリプトを表します。

bpmn script task

関連付けられたスクリプトは、プロセス変数やグローバル変数にアクセスできます。スクリプトタスクを使用する前に以下の一覧をレビューしてください。

  • プロセスでは詳細にわたる実装の内容は回避してください。スクリプトタスクは、変数の操作に使用できますが、より複雑な操作をモデル化する場合にサービスタスクまたはカスタムタスクの使用を検討してください。
  • 即座にスクリプトを実行するようにしてください。すぐに実行しない場合には、非同期サービスタスクを使用してください。
  • スクリプトタスクを使用して外部のサービスの問い合わせを回避してください。サービスタスクを使用して、外部サービスとの通信をモデル化します。
  • スクリプトで例外がスローされないようにしてください。ランタイムの例外はスクリプト内などで、キャッチし、管理するか、プロセス内で処理できるシグナルまたはエラーに変換する必要があります。

実行中にスクリプトタスクに到達したら、スクリプトが実行され、外向きフローに移動します。

ユーザータスク

ユーザータスクは、システムで自動的に実行できないプロセスワークフローに含まれるタスクなので、ユーザー (人間)、つまり、アクターの介入が必要です。

bpmn user task

実行時に、ユーザータスク要素は、1 つ以上のアクターのタスク一覧に表示されるタスクとしてインスタンス化されます。ユーザータスク要素で Groups 属性が定義されている場合に、このユーザータスク要素は、グループに所属する全ユーザー一覧に表示されます。このグループに所属するメンバーは誰でもタスクを要求できます。

タスクがクレームされると、他のユーザーのタスク一覧からこのタスクは消失します。

ユーザータスクは、ドメイン固有のタスクとして実装され、カスタムタスクのベースとして機能します。

サービスタスク

サービスタスクは、人間の介入を必要としないタスクです。これらは、外部のソフトウェアサービスによって自動的に完了します。

bpmn service task

タスクなし

アクティベーション時に完了するタスクはありません。これは概念モデルのみです。タスクなしは、IT システムによって実際に実行されることはありません。

bpmn none task

4.4. プロセスデザイナーでの BPMN2 カスタムタスク

BPMN2 仕様は、bpmn2:task 要素を拡張してソフトウェア実装でカスタムタスクを作成する機能をサポートします。標準の BPMN タスクと同様に、カスタムタスクは、ビジネスプロセスモデルで完了するアクションを特定しますが、これには、特定のタイプ (REST、電子メール、または Web サービス) の外部サービスとの互換性や、プロセス (milestone) 内のチェックポイント動作などの特化した機能も含まれます。

Red Hat Process Automation Manager は、BPMN モデラーパレットの Custom Tasks の下に、以下の事前定義済みのカスタムタスクを提供します。

表4.10 サポートされるカスタムタスク

カスタムタスクのタイプカスタムタスクのノード

Rest

bpmn rest custom task

電子メール

bpmn email custom task

ログ

bpmn log custom task

WebService

bpmn webservice custom task

マイルストーン

bpmn milestone

DecisionTask

bpmn decision task custom

BusinessRuleTask

bpmn business rule custom task

KafkaPublishMessages

bpmn kafkapublishmessages task

Business Central でカスタムタスクを有効または無効にする方法は、58章Business Central でのカスタムタスクの管理 を参照してください。

BPMN モデラーでは、一部のカスタムタスクに対して以下の一般的なプロパティーを設定できます。

表4.11 一般的なカスタムタスクプロパティー

ラベル説明

名前

タスクの名前を識別します。タスクノードをダブルクリックして名前を編集することもできます。

ドキュメント

タスクについて記述します。このフィールドのテキストはプロセスドキュメントに含まれます (該当する場合)。

非同期です

このタスクが非同期で呼び出されるかどうかを決定します。

アドホックの自動開始

これが自動的に開始されるアドホックタスクであるかどうかを決定します。このオプションを使用すると、タスクは、シグナルイベントにより開始するのではなく、プロセスが作成されたときに自動的に開始します。

開始時アクション

タスクの開始時のアクションを指定する Java、JavaScript、または MVEL スクリプトを定義します。

終了時アクション

タスクの終了時にアクションを指定する Java、JavaScript、または MVEL スクリプトを定義します。

SLA 期日

サービスレベルアグリーメント (SLA) の有効期限が切れるまでの期間 (文字列タイプ) を指定します。期間は、日数、分、秒、およびミリ秒で指定できます。たとえば、SLA due date フィールドの 1m 値は 1 分を示します。

割当

タスクのデータの入力と出力を定義します。

Metadata Attributes

メタデータ属性が存在する場合に一部のアクションを実装するリスナーなど、カスタムイベントリスナーに使用するカスタムメタデータ属性名と値を定義します。

Metadata 属性 により、新しい metaData 拡張を BPMN ダイアグラムに有効化し、タスク全体の動作を変更できます。

Rest

Rest カスタムタスクは、リモートの RESTful サービスを呼び出すか、プロセスから HTTP 要求を実行するために使用されます。

bpmn rest custom task

Rest カスタムタスクを使用するには、プロセスモデラーに URL、HTTP メソッド、および認証情報を設定します。プロセスが Rest カスタムタスクに到達したら、HTTP 要求を生成し、応答を文字列として返します。

Properties パネルで Assignments をクリックし、REST Data I/O ウィンドウを開きます。REST Data I/O ウィンドウで、必要に応じてデータの入力と出力を設定できます。たとえば、Rest カスタムタスクを実行するには、Data Inputs and Assignments フィールドで以下のデータ入力を実行します。

  • URL: REST サービスのエンドポイント URL。この属性は必須です。
  • Method: 呼び出されたエンドポイントのメソッド (例: GET および POST など)。デフォルト値は GET です。
  • ContentType:データ送信時のデータタイプ。この属性は、POST および PUT 要求では必須です。
  • ContentTypeCharset: ContentType に設定された文字セット。
  • Content: 送信するデータ。この属性は後方互換性に対応し、代わりに ContentData 属性を使用します。
  • ContentData: 送信するデータ。この属性は、POST および PUT 要求では必須です。
  • ConnectTimeout: 接続タイムアウト (秒単位)。デフォルト値は 60000 ミリ秒です。入力値はミリ秒単位で指定する必要があります。
  • ReadTimeout: 応答のタイムアウト (秒単位)。デフォルト値は 60000 ミリ秒です。入力値はミリ秒単位で指定する必要があります。
  • Username: 認証用のユーザー名。
  • Password: 認証用のパスワード。
  • AuthUrl: 認証を処理する URL。
  • AuthType: 認証を処理する URL のタイプ。
  • HandleResponseErrors (オプション): 応答コードが失敗した場合に、エラーを発生させるようにハンドラーに指示 (2XX は除く)。
  • ResultClass: 応答がアンマーシャリングされるクラスの有効な名前。指定されない場合は、未加工の応答が文字列形式で返されます。
  • AcceptHeader: Accept ヘッダーの値。
  • AcceptCharset: Accept ヘッダーの文字セット。
  • Headers: REST 呼び出しへ渡すヘッダー(例: content-type=text/html など)。

以下のデータの出力を Data Outputs and Assignments に追加し、タスク実行の出力を保存できます。

  • Result: 残りのカスタムタスクの出力変数 (オブジェクトタイプ)。

電子メール

プロセスからの電子メールの送信には、電子メールのカスタムタスクが使用されます。これには、関連する電子メールボディーが含まれます。

bpmn email custom task

電子メールのカスタムタスクがアクティブになると、電子メールデータがタスクのデータ入力プロパティーに割り当てられます。関連する電子メールが送信されると、電子メールのカスタムタスクを完了します。

Properties パネルで Assignments をクリックし、Email Data I/O ウィンドウを開きます。Email Data I/O ウィンドウで、必要に応じてデータ入力を設定できます。たとえば、電子メールカスタムタスクを実行するには、Data Inputs and Assignments フィールドで以下のデータ入力を実行します。

  • Body: 電子メールのボディー
  • From: 送信者の電子メールアドレス。
  • Subject: 電子メールの件名。
  • To: 受信者の電子メールアドレス。セミコロン (;) で区切られた複数の電子メールアドレスを指定できます。
  • Template (任意): 電子メールのボディーを生成するテンプレート。Template 属性は、入力した場合には Body パラメーターをオーバーライドします。
  • Reply-To: 返信メッセージの送信先となる電子メールアドレス。
  • Cc: カーボンコピーの受信者の電子メールアドレス。セミコロン (;) で区切られた複数の電子メールアドレスを指定できます。
  • Bcc: ブラインドカーボンコピーの受信者の電子メールアドレス。セミコロン (;) で区切られた複数の電子メールアドレスを指定できます。
  • Attachments: 電子メールと共に送信する添付ファイル。
  • Debug: デバッグロギングを有効にするフラグ。

ログ

ログカスタムタスクは、プロセスからメッセージをログに記録する際に使用されます。ビジネスプロセスがログカスタムタスクに到達すると、メッセージデータがデータ入力プロパティーに割り当てられます。

bpmn log custom task

関連付けられたメッセージがログに記録されると、ログカスタムタスクを完了します。Properties パネルで Assignments をクリックし、Log Data I/O ウィンドウを開きます。Log Data I/O ウィンドウで、必要に応じてデータ入力を設定できます。たとえば、ログカスタムタスクを実行するには、Data Inputs and Assignments フィールドで以下のデータ入力を実行します。

  • Message: プロセスからのログメッセージ。

WebService

プロセスから Web サービスを呼び出すために使用される Web サービスのカスタムタスク。このカスタムタスクは、文字列として保存された Web サービス応答を使用して Web サービスクライアントとして機能します。

bpmn webservice custom task

プロセスから Web サービスを呼び出すには、正しいタスクタイプを使用する必要があります。Properties パネルで Assignments をクリックし、WS Data I/O ウィンドウを開きます。WS Data I/O ウィンドウで、必要に応じてデータ入力と出力を設定できます。たとえば、Web サービスタスクを実行するには、Data Inputs and Assignments フィールドで以下のデータ入力を実行します。

  • Endpoint: 呼び出す Web サービスのエンドポイントの場所。
  • Interface: Weather などのサービスの名前。
  • Mode: SYNCASYNC、または ONEWAY などのサービスのモード。
  • 名前空間: Web サービスの名前空間( http://ws.cdyne.com/WeatherWS/ など)。
  • Operation: 呼び出し用のメソッド名。
  • Parameter: 操作に送信するオブジェクトまたは配列。
  • URL: Web サービスの URL( http://wsf.cdyne.com/WeatherWS/Weather.asmx?WSDL など)。

以下のデータの出力を Data Outputs and Assignments に追加し、タスク実行の出力を保存できます。

  • Result: Web サービスタスクの出力変数 (オブジェクトタイプ)。

マイルストーン

マイルストーンは、プロセスインスタンス内の 1 つの達成地点を表します。マイルストーンを使用して、特定のイベントにフラグを付けて他のタスクをトリガーするか、プロセスの進捗を追跡できます。

bpmn milestone

マイルストーンは、重要業績評価指標 (KPI) の追跡や、完了前のタスクの特定に役立ちます。マイルストーンは、プロセスのステージの最後に発生したり、他のマイルストーンを達成した結果として発生したりする場合もあります。

マイルストーンは、プロセスの実行中に以下の状態に到達できます。

  • Active: マイルストーンの条件がマイルストーンノードに対して定義されているが、条件がまだ満たされていない。
  • Completed: マイルストーンの条件が満たされ (該当する場合)、マイルストーンが達成されたので、このプロセスは次のタスクに進むか、または終了することができる。

Properties パネルで Assignments をクリックし、Milestone Data I/O ウィンドウを開きます。Milestone Data I/O ウィンドウで、必要に応じてデータ入力を設定できます。たとえば、マイルストーンを実行するには、Data Inputs and Assignments フィールドで以下のデータ入力を実行します。

  • Condition: マイルストーンが満たす条件。たとえば、プロセス変数を使用する Java 式 (文字列データタイプ) を入力します。

DecisionTask

デシジョンタスクを使用して、DMN ダイアグラムを実行し、プロセスからデシジョンエンジンサービスを呼び出します。デフォルトでは、デシジョンタスクは DMN デシジョンにマッピングします。

bpmn decision task custom

デシジョンタスクを使用して、プロセスで運用上の意思決定を行うことができます。デシジョンタスクは、プロセスにおいて下す必要のある主要なデシジョンを特定する際に役立ちます。

Properties パネルで Assignments をクリックし、Decision Task Data I/O ウィンドウを開きます。Decision Task Data I/O ウィンドウで、必要に応じてデータ入力を設定できます。たとえば、デシジョンタスクを実行するには、Data Inputs and Assignments フィールドで以下のデータ入力を実行します。

  • Decision: プロセスで下すデシジョン。
  • Language: デシジョンタスクの言語。デフォルトは DMN です。
  • Model: DMN モデル名。
  • Namespace: DMN モデルの名前空間。

BusinessRuleTask

ビジネスルールタスクを使用して、DRL ルールを評価し、プロセスからデシジョンエンジンサービスを呼び出します。デフォルトでは、ビジネスルールタスクは DRL ルールにマッピングします。

bpmn business rule custom task

ビジネスルールタスクを使用して、ビジネスプロセスで主要なビジネスルールを評価できます。Properties パネルで Assignments をクリックし、Business Rule Task Data I/O ウィンドウを開きます。Business Rule Task Data I/O ウィンドウで、必要に応じてデータ入力を設定できます。たとえば、ビジネスルールタスクを実行するには、Data Inputs and Assignments フィールドで以下のデータ入力を実行します。

  • KieSessionName: KIE セッションの名前。
  • KieSessionType: KIE セッションのタイプ。
  • Language: ビジネスルールタスクの言語。デフォルトは DRL です。

KafkaPublishMessages

Kafka work items は、イベントを Kafka トピックに送信するために使用されます。このカスタムタスクには、Kafka プロデューサーを使用して特定の Kafka サーバートピックにメッセージを送信するワークアイテムハンドラーが含まれます。たとえば、KafkaPublishMessages タスクは、プロセスから Kafka トピックにメッセージを公開します。

bpmn kafkapublishmessages task

Properties パネルで Assignments をクリックし、KafkaPublishMessages Data I/O ウィンドウを開きます。KafkaPublishMessages Data I/O ウィンドウで、必要に応じてデータ入力と出力を設定できます。たとえば、Kafka のワークアイテムを実行するには、Data Inputs and Assignments フィールドで以下のデータ入力を実行します。

  • Key: 送信される Kafka メッセージのキー。
  • Topic: Kafka トピックの名前。
  • Value: 送信される Kafka メッセージの値

以下のデータの出力を Data Outputs and Assignments に追加し、ワークアイテム実行の出力を保存できます。

  • Result: ワークアイテムの出力変数 (文字列タイプ)。

ビジネスプロセスの KafkaPublishMessages の詳細は、『 Red Hat Process Automation Manager と Red Hat AMQ Streams の統合 』を参照してください。

4.5. プロセスデザイナー内の BPMN2 サブプロセス

サブプロセスは、複数のノードが含まれるアクティビティーです。サブプロセスにメインのプロセスの一部を埋め込むことができます。また、サブプロセスには変数定義を追加できます。これらの変数は、サブプロセス内の全ノードにアクセスできます。

サブプロセスには、内向きの接続と外向きの接続を少なくとも 1 つずつ含める必要があります。サブプロセス内の中断終了イベントは、サブプロセスインスタンスを終了しますが、親プロセスインスタンスを自動的に終了することはありません。サブプロセスからアクティブな要素がなくなると、サブプロセスが終了します。

Red Hat Process Automation Manager では、以下のサブプロセスのタイプがサポートされます。

  • 埋め込みサブプロセス: 親プロセス実行の一部で、親プロセスデータを共有し、独自のローカルサブプロセス変数を宣言します。
  • アドホックサブプロセス: 厳密な要素実行の順番がないサブプロセス。
  • 再利用可能なサブプロセス: 親プロセスから独立しているサブプロセス。
  • イベントサブプロセス: 開始イベントまたはタイマーでのみトリガーされるサブプロセス。
  • マルチインスタンスサブプロセス: 複数回インスタンス化されるサブプロセス。

以下の例では、発注のサブプロセスは、その注文を受けるのに十分な在庫があるかを確認し、注文できた場合に在庫情報を更新します。注文の可否により、メインのプロセス経由で、顧客に通知が行きます。

subprocess

組み込みサブプロセス

埋め込みサブプロセスは、プロセスの一部をカプセル化します。このサブプロセスには、開始イベントと、最低でも 1 つの終了イベントが含まれている必要があります。この要素を使用して、このコンテナー内の全要素にアクセスできるローカルのサブプロセス変数を定義できます。

アドホックサブプロセス。

アドホックサブプロセスまたはプロセスには、埋め込みの内部アクティビティーが複数含まれ、通常のプロセスルーティングに比べて、より柔軟な順番で実行することを目的としています。通常のプロセスとは違い、アドホックサブプロセスには、開始イベントから終了イベントまでといった、完全な体系化された BPMN2 ダイアグラムの説明は含まれません。代わりに、アクティビティー、シーケンスフロー、ゲートウェイ、中間イベントのみが含まれます。また、アドホックサブプロセスには、データオブジェクトやデータの関連付けも含めることができます。アドホックサブプロセス内のアクティビティーでは、内向きおよび外向きのシーケンスフローを含める必要はありません。ただし、その中に含まれているアクティビティー間のシーケンスフローを指定できます。使用する場合、シーケンスフローは通常のプロセスと同じ順序の制約を提供します。意味を持つには、中間イベントに送信シーケンスフローを含める必要があり、アドホックサブプロセスがアクティブなときに複数回トリガーされる可能性があります。

再利用可能なサブプロセス

再利用可能なサブプロセスは、親プロセス内で縮小表示されます。再利用可能なサブプロセスを設定するには、再利用可能なサブプロセスを選択し、 diagram properties をクリックして Implementation/Execution を展開します。以下のプロパティーを設定します。

  • 呼び出された要素: アクティビティーにより呼び出してインスタンス化するサブプロセスの ID。
  • 独立: 選択されている場合は、サブプロセスが独立プロセスとして開始します。選択されていない場合は、親プロセスが中断されると、アクティブなサブプロセスが取り消されます。
  • 親の強制終了: この項目が選択されていて、呼び出したプロセスインスタンスの実行中にエラーが発生した場合は、再利用可能な従属サブプロセスで、親プロセスを中断できます。たとえば、サブプロセスを呼び出そうとしてエラーが発生した時や、サブプロセスインスタンスを中断する時などです。このプロパティーは、Independent プロパティーが選択されている時しか、表示されません。以下のルールが適用されます。

    • 再利用可能なサブプロセスが独立している場合に、親の強制終了 は使用できません。
    • 再利用可能なサブプロセスが独立していない場合 (従属してい場合) は、親の強制終了 を使用できます。
  • 完了するまで待機: 選択されている場合には、呼び出されたサブプロセスインスタンスが終了するまで、指定の 終了時アクション は実行しません。親プロセスの実行は、終了時アクション が完了するまで継続されます。このプロパティーはデフォルトで選択されています (true に設定されています)。
  • 非同期: タスクを非同期で呼び出して、すぐに実行できないようにする場合に選択します。
  • 複数インスタンス: サブプロセス要素を指定の回数実行する場合に選択します。選択されている場合には、以下のオプションを使用できます。

    • MI 実行モード: 複数インスタンスを並行して実行するか、順次実行するかを指定します。Sequential に設定されている場合には、以前のインスタンスが完了するまで新規インスタンスは作成されません。
    • MI コレクション入力: 新規インスタンスを作成する要素コレクションを表現する変数を選択します。サブプロセスは、コレクションのサイズと同じ回数だけ、インスタンス化されます。
    • MI データ入力: コレクションで、選択された要素が含まれる変数名を指定します。この変数は、コレクション内の要素にアクセスする時に使用します。
    • MI コレクション出力: マルチインスタンスノードの出力を収集する要素コレクションを表現する任意の変数。
    • MI データ出力: MI コレクション出力 プロパティーで選択した出力コレクションに追加する変数名を指定します。
    • MI 完了条件 (mvel): 指定した複数のインスタンスノードを完了できるかどうかを確認するために、完了済みのインスタンスを評価する MVEL 式。true と評価された場合には、残りのインスタンスはすべて取り消されます。
  • 開始時アクション: タスクの開始時のアクションを指定する Java または MVEL スクリプト。
  • 終了時アクション: タスクの終了時のアクションを指定する Java または MVEL スクリプト。
  • SLA 期日: サービスレベルアグリーメント (SLA) の有効期限の日付。期間は、日数、分、秒、およびミリ秒で指定できます。たとえば、SLA due date フィールドの 1m 値は 1 分を示します。
  • Metadata Attributes: メタデータ属性が存在する場合に一部のアクションを実装するリスナーなど、カスタムイベントリスナーに使用するカスタムメタデータ属性名と値を追加します。

図4.1 再利用可能なサブプロセスのプロパティー

A screenshot of sub-process properties

Business Central の新規エディターでサブプロセスを開くには、メインプロセスの Place order タスク、Open Sub-process タスクアイコンの順にクリックします。

open sub proc

イベントサブプロセス

イベントサブプロセスは、開始イベントがトリガーされるとアクティブになります。親プロセスのコンテキストを中断するか、並行して実行できます。

外向きまたは内向きの接続では、イベントまたはタイマーがサブプロセスをトリガーできます。サブプロセスは、通常のコントロールフローの一部ではありません。自己完結型ではありますが、バインドされているプロセスのコンテキストで実行されます。

プロセスフロー内のイベントサブプロセスを使用して、主なプロセスフロー外で発生するイベントを処理します。たとえば、飛行機の予約時には、以下の 2 つのイベントが発生する可能性があります。

  • 予約の取り消し (割り込み)
  • 予約ステータスの確認 (割り込みなし)

イベントのサブプロセスを使用して、これらのイベントの両方をモデル化します。

複数インスタンスサブプロセス

マルチインスタンスサブプロセスは、実行がトリガーされると、複数回インスタンス化されます。インスタンスは順次作成されるか、並行して作成されます。順次モードを設定すると、前のインスタンスが完了した後のみ、新しいサブプロセスインスタンスが作成されます。ただし、並列モードを設定すると、全サブプロセスインスタンスが一度に作成されます。

マルチインスタンスサブプロセスには、内向きの接続 1 つと、外向きの接続 1 つが含まれます。

4.6. プロセスデザイナーでの BPMN2 ゲートウェイ

ゲートウェイは、ゲートメカニズムと呼ばれる条件セットを使用して、ワークフロー内にブランチを作成するか、ワークフロー内のブランチを同期するのに使用します。BPMN2 は、2 種類のゲートウェイをサポートします。

  • 収束ゲートウェイ。複数のフローを 1 つにマージします。
  • 分岐ゲートウェイ。1 つのフローを複数のフローに分割します。

1 つのゲートウェイに、複数の内向きと外向きフローを割り当てることはできません。

以下のビジネスプロセスのダイアグラムで、XOR ゲートウェイは、条件が True と評価された内向きフローのみを評価します。 gateway

この例では、顧客の詳細がユーザーにより検証され、ユーザーが承認できるようにプロセスが割り当てられます。承認されると、承認通知がユーザーに送信されます。要求イベントが却下された場合には、却下通知がユーザーに送信されます。

表4.12 ゲートウェイ要素

要素タイプアイコン

排他的論理和 (XOR)

bpmn gateway exclusive

含む

bpmn gateway inclusive

並行

bpmn gateway parallel

イベント

bpmn gateway event

排他的

排他的な分岐ゲートウェイでは、最初の内向きフローで条件が True と評価されたもののみが選択されます。収束ゲートウェイでは、トリガーされた内向きのフローごとに、次のノードがトリガーされます。

このゲートウェイは、1 つだけ外向きフローをトリガーします。フローの条件が True と評価されタナカで、優先順位が 最も低い 数字が選択されます。

重要

実行時に、最低でも 1 つの外向きフローが True と評価されるようにしてください。そうでないと、プロセスインスタンスは、ランタイムの例外で中断されます。

収束ゲートウェイでは、ワークフローブランチが、ゲートウェイに到達すると同時に外向きフローに進むことができます。内向きフローの 1 つがゲートウェイをトリガーすると、ワークフローはゲートウェイの外向きフローに進みます。複数の内向きフローからトリガーされた場合には、トリガーごとに次のノードをトリガーします。

含む

包含的な分岐ゲートウェイでは、内向きフローが選択され、さらに True と評価された外向きフローすべてが選択されます。優先順位の数値が低い接続は、高い接続よりも先にトリガーされます。優先順位は評価されますが、BPMN2 仕様では優先順位の順番は保証されません。ワークフローで priority 属性に依存しないようにしてください。

重要

実行時に、最低でも 1 つの外向きフローが True と評価されるようにしてください。そうでないと、プロセスインスタンスは、ランタイムの例外で中断されます。

包含的な収束ゲートウェイでは、包含的な分岐ゲートウェイでこれまでに作成された内向きフローすべてがマージされます。これは、包含ゲートウェイブランチの同期エントリーポイントとして機能します。

並行

並列ゲートウェイを使用して、並列フローを同期し、作成します。並列の分岐ゲートウェイでは、内向きフローが選択されると同時に、外向きフローもすべて選択されます。収束並列ゲートウェイでは、ゲートウェイは、内向きのフローがすべて到達するまで待機してからでないと、外向きフローをトリガーしません。

イベント

イベントベースのゲートウェイは分岐のみで、データをもとにした排他的ゲートウェイ (プロセスデータに反応) とは対照的に、発生する可能性のあるイベントに反応できます。発生したイベントをもとに、外向きフローに移動します。一度に実行できる外向きフローは 1 つとなっています。ゲートウェイは、イベントベースのゲートウェイに接続されている中間イベントが発生した場合にのみ、プロセスがインスタンス化される、開始イベントとして機能する可能性があります。

4.7. プロセスデザイナーでの BPMN2 接続オブジェクト

接続オブジェクトは、BPMN2 要素 2 つの間の関連性を作成します。接続オブジェクトが転送された場合には、関連付けは順番に行われ、プロセスのインスタンス内で、要素の 1 つが他の要素よりも先に即座に実行されることを指定します。接続オブジェクトは、関連付けられているプロセス要素の上、下、右、左側で開始、終了できます。OMG BPMN2 仕様では、プロセスの動作を簡単に理解して従うことができるように、接続オブジェクトを独断で配置できます。

BPMN2 は主に、2 種類の接続オブジェクトをサポートします。

  • シーケンスフロー: プロセスの要素を接続し、インスタンス内でこれらの要素を実行する順番を定義します。
  • 関連付けフロー: 実行セマンティクスなしでプロセスの要素を接続します。関連付けフローは転送できません。できる場合は、一方向となっています。
注記

新しいプロセスデザイナーは、転送されない関連付けフローのみをサポートします。レガシーのデザイナーは、一方向と単方向のフローをサポートしています。

4.8. プロセスデザイナーでの BPMN2 スイムレーン

スイムレーンは、1 つのグループまたはユーザーに関連のあるタスクを視覚的にグループ化するプロセス要素です。スイムレーンとユーザータスクを組み合わせて使用し、スイムレーンの Autoclaim プロパティーにより、複数のユーザータスクを同じアクターに割り当てることができます。グループの所有者がスイムレーンの最初のタスクを要求すると、他のタスクが同じ所有者に直接割り当てられます。したがって、他のタスクの要求は、グループの残りの所有者が不要です。Autoclaim プロパティーは、スイムレーンに関連するタスクの自動割り当てを有効にします。

注記

スイムレーンの残りのユーザータスクに複数の事前定義された ActorIds が含まれる場合は、ユーザータスクが自動的に割り当てられません。

以下の例では、アナリストレーンは 2 つのユーザータスクで構成されます。 swimlane

Update Customer Details タスクと Resolve Customer Issue タスクの Group フィールドには analyst 値が割り当てられています。プロセスが開始し、Update Customer Details タスクがアナリストにより要求されるか、開始するか、完了すると、Resolve Customer Issue タスクが要求されて、最初のタスクを完了したユーザーに割り当てられます。ただし、Update Customer Details タスクにアナリストグループが割り当てられていて、2 番目のタスクにユーザーやグループが割り当てられていない場合、プロセスは最初のタスク完了後に停止します。

スイムレーンの Autoclaim プロパティーを無効にすることができます。Autoclaim プロパティーが無効になっていると、スイムレーンに関連するタスクは自動的に割り当てられません。デフォルトでは、Autoclaim プロパティーの値は true に設定されます。必要に応じて、Autoclaim プロパティーのデフォルト値を Business Central のプロジェクト設定から、またはデプロイメント記述子ファイルを使用して変更することもできます。

Business Central のスイムレーンの Autoclaim プロパティーのデフォルト値を変更するには、以下を実行します。

  1. プロジェクトの Settings に移動します。
  2. Deployment → Environment entries を開きます。
  3. 指定のフィールドに以下の値を入力します。

    • 名前: Autoclaim
    • : "false”

XML デプロイメント記述子の環境エントリーを設定するには、以下のコードを kie-deployment-descriptor.xml ファイルに追加します。

<environment-entries>
  ..
    <environment-entry>
        <resolver>mvel</resolver>
        <identifier>new String ("false")</identifier>
        <parameters/>
        <name>Autoclaim</name>
    </environment-entry>
  ..
</environment-entries>

4.9. プロセスデザイナーでの BPMN2 アーティファクト

アーティファクトは、プロセスに関する追加情報を渡すのに使用します。アーティファクトは、BPMN2 ダイアグラムに描写されているオブジェクトで、プロセスワークフローの一部出ないものを指します。アーティファクトには、内向きフローオブジェクトも、外向きフローオブジェクトもありません。アーティファクトの目的は、ダイアグラムを理解するのに必要な追加情報を提供することです。アーティファクトの表には、レガシーのプロセスデザイナーでサポートされているアーティファクトが一覧で表示されています。

表4.13 アーティファクト

アーティファクトのタイプ説明

グループ

全体的なプロセスに大きな影響のあるタスクまたはプロセスを整理します。新しいプロセスデザイナーでは、グループアーティファクトはサポートされません。

テキストのアノテーション

BPMN2 ダイアグラムの文字情報を追加で提供します。

データオブジェクト

BPMN2 のダイアグラムにプロセスを通過するデータフローを表示します。

4.9.1. データオブジェクトの作成

データオブジェクトは、たとえば、物理およびデジタルの形式のプロセスで使用されるドキュメントを表します。データオブジェクトは、右上隅に折りたたまれたページとして表示されます。次の手順は、データオブジェクトの作成の一般的な概要です。

注記

Red Hat Process Automation Manager 7.12.0 では、データ入力、データ出力、および関連付けのサポートを除く、限定されたサポートをデータオブジェクトに提供しています。

手順

  1. ビジネスプロセスを作成します。
  2. プロセスデザイナーで、ツールパレットから Artifacts → Data Object を選択します。
  3. データオブジェクトをプロセスデザイナーキャンバスにドラッグアンドドロップするか、キャンバスの空白エリアをクリックします。
  4. 必要に応じて、画面の右上隅で、Properties アイコンをクリックします。
  5. 必要に応じて、以下の表に一覧表示されているデータオブジェクト情報を追加または定義します。

    表4.14 データオブジェクトのパラメーター

    ラベル説明

    名前

    データオブジェクトの名前。データオブジェクトシェイプをダブルクリックして名前を編集することもできます。

    Metadata Attributes

    メタデータ属性が存在する場合に何らかのアクションを実装するリスナーなど、カスタムイベントリスナーに使用するカスタムメタデータ属性の名前と値を追加します。

    Metadata 属性を使用すると、新しい metaData 拡張が BPMN ダイアグラムに拡張でき、データオブジェクト全体の動作を変更できます。

    タイプ

    データオブジェクトのタイプを選択します。

    重要

    データオブジェクトのデータタイプを定義するときに、ImportsData Assignments などの他の データタイプフィールドに同じデータタイプを使用できます。

  6. Save をクリックします。

第5章 Business Central でのビジネスプロセスの作成

プロセスデザイナーは、Red Hat Process Automation Manager のプロセスモデラーです。モデラーの出力は、BPMN 2.0 プロセス定義ファイルです。この定義は、定義に基づいてプロセスインスタンスを作成する Red Hat Process Automation Manager プロセスエンジンの入力として使用されます。

このセクションの手順では、簡単なビジネスプロセスを作成する方法の概要を説明します。より詳細なビジネスプロセスの例については、『 プロセスサービスの使用ガイド』を 参照してください。

前提条件

手順

  1. Business Central で、MenuDesignProjects に移動します。
  2. プロジェクト名をクリックして、プロジェクトのアセットリストを開きます。
  3. Add Asset → Business Process の順にクリックします。
  4. Create new Business Process ウィザードで、以下の値を入力します。

    • Business Process: 新しいビジネスプロセス名
    • Package: 新しいビジネスプロセスのパッケージの場所 (例: com.myspace.myProject)
  5. OK をクリックしてプロセスデザイナーを開きます。
  6. 右上隅の Properties diagram properties アイコンをクリックし、プロセスデータや変数などのビジネスプロセスプロパティー情報を追加します。

    1. スクロールダウンして、Process Data を展開します。
    2. Process Variables の横にある btn plus をクリックして、ビジネスプロセスで使用するプロセス変数を定義します。

    表5.1 一般的なプロセスプロパティー

    ラベル説明

    名前

    プロセスの名前を入力します。

    ドキュメント

    プロセスを記述します。このフィールドのテキストはプロセスドキュメントに含まれます (該当する場合)。

    ID

    このプロセスの識別子 (orderItems など) を入力します。

    Package

    Red Hat Process Automation Manager プロジェクトでのこのプロセスのパッケージの場所を入力します (例: org.acme)。

    ProcessType

    プロセスがパブリックであるかプライベートであるかを指定します (該当しない場合は null を指定)。

    バージョン

    プロセスのアーティファクトバージョンを入力します。

    アドホック

    このプロセスがアドホックサブプロセスである場合は、このオプションを選択します。

    Process Instance Description

    プロセスの目的の説明を入力します。

    インポート

    クリックして Imports ウィンドウを開き、プロセスに必要なデータオブジェクトクラスを追加します。

    実行可能

    このオプションを選択して、プロセスを Red Hat Process Automation Manager プロジェクトの実行可能な部分にします。

    SLA 期日

    サービスレベルアグリーメント (SLA) の有効期限の日付を入力します。

    プロセス変数

    プロセスのプロセス変数を追加します。プロセス変数は、特定のプロセスインスタンス内で表示されます。プロセス変数はプロセスの作成時に初期化され、プロセスの完了時に破棄されます。変数 タグ を使用すると、変数の動作をより細かく制御できます。たとえば、変数は required または readonly になります。変数タグの詳細は、6章変数 を参照してください。

    Metadata Attributes

    メタデータ属性が存在する場合に何らかのアクションを実装するリスナーなど、カスタムイベントリスナーに使用するカスタムメタデータ属性の名前と値を追加します。

    グローバル変数

    プロセスにグローバル変数を追加します。グローバル変数は、プロジェクトのすべてのプロセスインスタンスとアセットに表示されます。グローバル変数は通常、ビジネスルールおよび制約によって使用され、ルールまたは制約によって動的に作成されます。

    Metadata Attributes エントリーは、新しい metaData 拡張を BPMN ダイアグラムに有効にするという点で Process Variables タグに似ています。ただし、プロセス変数タグは、特定の変数が required または readonly かどうかなど、特定のプロセス変数の動作を変更しますが、メタデータ属性はプロセス全体の動作を変更する key-value 定義になります。

    たとえば、BPMN プロセスの以下のカスタムメタデータ属性 riskLevel および値 low は、プロセスを開始するためのカスタムイベントリスナーに対応します。

    図5.1 BPMN モデラーのメタデータ属性と値の例

    Image of custom metadata attribute and value

    BPMN ファイルのメタデータ属性と値の例

    <bpmn2:process id="approvals" name="approvals" isExecutable="true" processType="Public">
      <bpmn2:extensionElements>
        <tns:metaData name="riskLevel">
          <tns:metaValue><![CDATA[low]]></tns:metaValue>
        </tns:metaData>
      </bpmn2:extensionElements>

    メタデータ値を持つイベントリスナーの例

    public class MyListener implements ProcessEventListener {
        ...
        @Override
        public void beforeProcessStarted(ProcessStartedEvent event) {
            Map < String, Object > metadata = event.getProcessInstance().getProcess().getMetaData();
            if (metadata.containsKey("low")) {
                // Implement some action for that metadata attribute
            }
        }
    }

  7. プロセスデザイナーキャンバスで、左側のツールバーを使用して BPMN コンポーネントをドラッグアンドドロップし、ビジネスプロセスロジック、接続、イベント、タスク、またはその他の要素を定義します。

    注記

    Red Hat Process Automation Manager のタスクおよびイベントには、1 つの受信フローと 1 つの送信フローが必要です。複数の受信フローおよび複数の送信フローでビジネスプロセスを設計する場合は、ゲートウェイを使用してビジネスプロセスを再設計することを検討してください。ゲートウェイを使用すると、シーケンスフローが実行しているロジックが明確になります。そのため、ゲートウェイは複数の接続に対するベストプラクティスとみなされます。

    ただし、タスクまたはイベントに複数の接続を使用する必要がある場合は、JVM (Java 仮想マシン) システムプロパティー jbpm.enable.multi.contrue に設定する必要があります。Business Central および KIE Server が異なるサーバーで実行する場合は、いずれのサーバーにも jbpm.enable.multi.con システムプロパティーの両方が有効になっていないと、プロセスエンジンが例外をスローします。

  8. ビジネスプロセスのすべてのコンポーネントを追加して定義した後に、Save をクリックし、完了したビジネスプロセスを保存します。

5.1. ビジネスルールタスクの作成

ビジネスルールタスクは、Decision Model and Notation (DMN) モデルまたはルールフローグループを使用して意思決定を行うために使用されます。

手順

  1. ビジネスプロセスを作成します。
  2. プロセスデザイナーで、ツールパレットから Activities ツールを選択します。
  3. Business Rule を選択します。
  4. プロセスデザイナーキャンバスの空白エリアをクリックします。
  5. 必要に応じて、画面の右上隅で、Properties アイコンをクリックします。
  6. 必要に応じて、以下の表に一覧表示されているタスク情報を追加または定義します。

    表5.2 ビジネスルールタスクのパラメーター

    ラベル説明

    名前

    ビジネスルールタスクの名前。また、ビジネスルールタスクシェイプをダブルクリックして名前を編集することもできます。

    ルール言語

    タスクの出力言語。Decision Model and Notation (DMN) または Drools (DRL) を選択します。

    ルールフローグループ

    このビジネスタスクに関連付けられたルールフローグループ。一覧からルールフローグループを選択するか、新しいルールフローグループを指定します。

    開始時アクション

    タスクの開始時のアクションを指定する Java、JavaScript、または MVEL スクリプト。

    終了時アクション

    タスクの終了時のアクションを指定する Java、JavaScript、または MVEL スクリプト。

    非同期です

    このタスクを非同期で呼び出す必要がある場合に選択します。外部サービスによって実行されるタスクなど、タスクを瞬時に実行できない場合は、タスクを非同期にします。

    アドホックの自動開始

    これが自動的に開始される必要があるアドホックタスクである場合に選択します。AdHoc Autostart を使用すると、タスクは、開始タスクにより開始するのではなく、プロセスまたはケースインスタンスが作成されたときに自動的に開始します。多くの場合、ケース管理で使用されます。

    SLA 期日

    サービスレベルアグリーメント (SLA) の有効期限の日付。

    割当

    クリックしてローカル変数を追加します。

    Metadata Attributes

    メタデータ属性が存在する場合に何らかのアクションを実装するリスナーなど、カスタムイベントリスナーに使用するカスタムメタデータ属性の名前と値を追加します。

    Metadata 属性 により、新しい metaData 拡張を BPMN ダイアグラムに有効化し、タスク全体の動作を変更できます。

  7. Save をクリックします。

5.2. スクリプトタスクの作成

スクリプトタスクは、Java、JavaScript、または MVEL で記述されたコードを実行するために使用されます。これらには、スクリプトタスクのアクションを指定するコードスニペットが含まれています。スクリプトにグローバル変数とプロセス変数を含めることができます。

MVEL は有効な Java コードをすべて受け入れ、さらにパラメーターのネストされたアクセスをサポートすることに留意してください。たとえば、Java 呼び出し person.getName() に相当する MVEL は、person.name です。MVEL は Java に対して他の改善も提供し、MVEL 式は一般にビジネスユーザーにとってより便利です。

手順

  1. ビジネスプロセスを作成します。
  2. プロセスデザイナーで、ツールパレットから Activities ツールを選択します。
  3. Script を選択します。
  4. プロセスデザイナーキャンバスの空白エリアをクリックします。
  5. 必要に応じて、画面の右上隅で、Properties アイコンをクリックします。
  6. 必要に応じて、以下の表に一覧表示されているタスク情報を追加または定義します。

    表5.3 スクリプトタスクのパラメーター

    ラベル説明

    名前

    スクリプトタスクの名前。また、スクリプトタスクシェイプをダブルクリックして名前を編集することもできます。

    ドキュメント

    タスクの説明を入力します。このフィールドのテキストは、プロセスのドキュメントに含まれています。プロセスデザイナーキャンバスの左上にある Documentation タブをクリックして、プロセスドキュメントを表示します。

    スクリプト

    タスクによって実行されるスクリプトを Java、JavaScript、または MVEL で入力し、スクリプトタイプを選択します。

    非同期です

    このタスクを非同期で呼び出す必要がある場合に選択します。外部サービスによって実行されるタスクなど、タスクを瞬時に実行できない場合は、タスクを非同期にします。

    アドホックの自動開始

    これが自動的に開始される必要があるアドホックタスクである場合に選択します。AdHoc Autostart を使用すると、タスクは、開始タスクにより開始するのではなく、プロセスまたはケースインスタンスが作成されたときに自動的に開始します。多くの場合、ケース管理で使用されます。

    Metadata Attributes

    メタデータ属性が存在する場合に何らかのアクションを実装するリスナーなど、カスタムイベントリスナーに使用するカスタムメタデータ属性の名前と値を追加します。

    Metadata 属性 により、新しい metaData 拡張を BPMN ダイアグラムに有効化し、タスク全体の動作を変更できます。

  7. Save をクリックします。

5.3. サービスタスクの作成

サービスタスクは、Web サービス呼び出しまたは Java クラスメソッドを基にアクションを実行するタスクです。サービスタスクの例には、これらのタスクの実行時の電子メールおよびログメッセージの送信が含まれます。サービスタスクに関連付けられているパラメーター(入力)と結果(出力)を定義できます。1 つのオブジェクトに対する全入力が含まれるラップパラメーターを定義することも可能です。ラップパラメーターを定義するには、データ割り当てで Wrapped` : `True を使用して、新しいワークアイテムハンドラーを作成します。サービスタスクには、内向きの接続 1 つと外向きの接続 1 つが必要です。

手順

  1. Business Central で、画面の右上隅にある Admin アイコンを選択し、Artifacts を選択します。
  2. Upload をクリックして、Artifact upload ウィンドウを開きます。
  3. .jar ファイルを選択し、 upload button をクリックします。

    重要

    .jar ファイルには、Web サービスのデータタイプ (データオブジェクト)、および Java サービスタスクの Java クラスが含まれます。

  4. 使用するプロジェクトを作成します。
  5. プロジェクトの Settings → Dependencies に移動します。
  6. Add from repository をクリックしてアップロードした .jar ファイルを見つけ、Select をクリックします。
  7. プロジェクトの Settings → Work Item Handler を開きます。
  8. 指定のフィールドに以下の値を入力します。

    • Name: Service Task
    • Value: new org.jbpm.process.workitem.bpmn2.ServiceTaskHandler(ksession, classLoader)
  9. プロジェクトを保存します。

    Web サービスタスクの作成例

    BPMN2 仕様のサービスタスクのデフォルトの実装は Web サービスです。Web サービスのサポートは Apache CXF 動的クライアントをベースとしています。これは、WorkItemHandler インターフェースを実装する専用のサービスタスクハンドラーを提供します。

    org.jbpm.process.workitem.bpmn2.ServiceTaskHandler

    Web サービスを使用してサービスタスクを作成するには、Web サービスを設定する必要があります。

    1. ビジネスプロセスを作成します。
    2. 必要に応じて、画面の右上隅で、Properties アイコンをクリックします。
    3. Imports プロパティーの import property icon をクリックして、Imports ウィンドウを開きます。
    4. WSDL Imports の横にある +Add をクリックして、必要な WSDL (Web Services Description Language) の値をインポートします。以下に例を示します。

      • Location: http://localhost:8080/sample-ws-1/SimpleService?wsdl

        この場所は、サービスの WSDL ファイルを参照します。

      • Namespace: http://bpmn2.workitem.process.jbpm.org/

        名前空間は、WSDL ファイルの targetNamespace と一致している必要があります。

    5. プロセスデザイナーで、ツールパレットから Activities ツールを選択します。
    6. Service Task を選択します。
    7. プロセスデザイナーキャンバスの空白エリアをクリックします。
    8. 必要に応じて、以下の表に一覧表示されているタスク情報を追加または定義します。

      表5.4 Web サービスタスクパラメーター

      ラベル説明

      名前

      サービスタスクの名前。サービスタスクシェイプをダブルクリックして名前を編集することもできます。

      ドキュメント

      タスクの説明を入力します。このフィールドのテキストは、プロセスのドキュメントに含まれています。プロセスデザイナーキャンバスの左上にある Documentation タブをクリックして、プロセスドキュメントを表示します。

      Implementation

      Web サービスを指定します。

      Interface

      CountriesPortService などのスクリプトの実装に使用されるサービス。

      操作

      getCountry などのインターフェースによって呼び出される操作。

      割当

      クリックしてローカル変数を追加します。

      アドホックの自動開始

      これが自動的に開始される必要があるアドホックタスクである場合に選択します。AdHoc Autostart を使用すると、タスクは、開始タスクにより開始するのではなく、プロセスまたはケースインスタンスが作成されたときに自動的に開始します。多くの場合、ケース管理で使用されます。

      非同期です

      このタスクを非同期で呼び出す必要がある場合に選択します。外部サービスによって実行されるタスクなど、タスクを瞬時に実行できない場合は、タスクを非同期にします。

      Is Multiple Instance

      このタスクに複数のインスタンスがある場合に選択します。

      MI 実行モード

      複数のインスタンスが並列または順次実行されるかどうかを選択します。

      MI コレクション入力

      inputCountryNames などの、新規インスタンスが作成される要素のコレクションを表す変数を指定します。

      MI データ入力

      Parameter などの Web サービスに転送される入力データ割り当てを指定します。

      MI コレクション出力

      outputCountries などの Web サービスタスクから返された値を保存する配列の一覧。

      MI データ出力

      Result などのサーバーでのクラス実行の結果を保存する Web サービスタスクの出力データ割り当てを指定します。

      MI 完了条件 (mvel)

      指定した複数のインスタンスノードを完了できるかどうかを確認するために、完了済みの各インスタンスを評価する MVEL 式を指定します。

      開始時アクション

      タスクの開始時のアクションを指定する Java、JavaScript、または MVEL スクリプト。

      終了時アクション

      タスクの終了時のアクションを指定する Java、JavaScript、または MVEL スクリプト。

      SLA 期日

      サービスレベルアグリーメント (SLA) の有効期限の日付。

      Metadata Attributes

      メタデータ属性が存在する場合に何らかのアクションを実装するリスナーなど、カスタムイベントリスナーに使用するカスタムメタデータ属性の名前と値を追加します。

      Metadata 属性 により、新しい metaData 拡張を BPMN ダイアグラムに有効化し、タスク全体の動作を変更できます。

    Java サービスタスクの作成例

    Java メソッドを使用してサービスタスクを作成する場合、メソッドにはパラメーターを 1 つだけ含み、単一の値を返すことができます。Java メソッドを使用してサービスタスクを作成するには、Java クラスをプロジェクトの依存関係に追加する必要があります。

    1. ビジネスプロセスを作成します。
    2. プロセスデザイナーで、ツールパレットから Activities ツールを選択します。
    3. Service Task を選択します。
    4. プロセスデザイナーキャンバスの空白エリアをクリックします。
    5. 必要に応じて、画面の右上隅で、Properties アイコンをクリックします。
    6. 必要に応じて、以下の表に一覧表示されているタスク情報を追加または定義します。

      表5.5 Java サービスタスクパラメーター

      ラベル説明

      名前

      サービスタスクの名前。サービスタスクシェイプをダブルクリックして名前を編集することもできます。

      ドキュメント

      タスクの説明を入力します。このフィールドのテキストは、プロセスのドキュメントに含まれています。プロセスデザイナーキャンバスの左上にある Documentation タブをクリックして、プロセスドキュメントを表示します。

      Implementation

      タスクが Java に実装されるように指定します。

      Interface

      org.xyz.HelloWorld などのスクリプトの実装に使用されるクラス。

      操作

      sayHello などのインターフェースによって呼び出されるメソッド。

      割当

      クリックしてローカル変数を追加します。

      アドホックの自動開始

      これが自動的に開始される必要があるアドホックタスクである場合に選択します。AdHoc Autostart を使用すると、タスクは、開始タスクにより開始するのではなく、プロセスまたはケースインスタンスが作成されたときに自動的に開始します。多くの場合、ケース管理で使用されます。

      非同期です

      このタスクを非同期で呼び出す必要がある場合に選択します。外部サービスによって実行されるタスクなど、タスクを瞬時に実行できない場合は、タスクを非同期にします。

      Is Multiple Instance

      このタスクに複数のインスタンスがある場合に選択します。

      MI 実行モード

      複数のインスタンスが並列または順次実行されるかどうかを選択します。

      MI コレクション入力

      InputCollection などの、新規インスタンスが作成される要素のコレクションを表す変数を指定します。

      MI データ入力

      Java クラスに転送される入力データ割り当てを指定します。たとえば、入力データの割り当てを Parameter および ParameterType に設定できます。ParameterType は、Parameter のタイプを表し、Java メソッドの実行に引数を送信します。

      MI コレクション出力

      OutputCollection など、Java クラスから返される値を保存する配列リスト。

      MI データ出力

      Result など、サーバーでクラス実行の結果を保存する Java サービスタスクへの出力データ割り当てを指定します。

      MI 完了条件 (mvel)

      指定した複数のインスタンスノードを完了できるかどうかを確認するために、完了済みの各インスタンスを評価する MVEL 式を指定します。たとえば、OutputCollection.size() <= 3 は、3 人以上のユーザーがアドレス指定されていないことを示します。

      開始時アクション

      タスクの開始時のアクションを指定する Java、JavaScript、または MVEL スクリプト。

      終了時アクション

      タスクの終了時のアクションを指定する Java、JavaScript、または MVEL スクリプト。

      SLA 期日

      サービスレベルアグリーメント (SLA) の有効期限の日付。

      Metadata Attributes

      メタデータ属性が存在する場合に何らかのアクションを実装するリスナーなど、カスタムイベントリスナーに使用するカスタムメタデータ属性の名前と値を追加します。

      Metadata 属性 により、新しい metaData 拡張を BPMN ダイアグラムに有効化し、タスク全体の動作を変更できます。

  10. Save をクリックします。

5.4. ユーザータスクの作成

ユーザータスクは、ビジネスプロセスに人間が行うアクションをインプットとして追加するために使用します。

手順

  1. ビジネスプロセスを作成します。
  2. プロセスデザイナーで、ツールパレットから Activities ツールを選択します。
  3. User を選択します。
  4. ユーザータスクをプロセスデザイナーキャンバスにドラッグアンドドロップします。
  5. 必要に応じて、画面の右上隅で、Properties アイコンをクリックします。
  6. 必要に応じて、以下の表に一覧表示されているタスク情報を追加または定義します。

    表5.6 ユーザータスクパラメーター

    ラベル説明

    名前

    ユーザータスクの名前。ユーザータスクシェイプをダブルクリックして名前を編集することもできます。

    ドキュメント

    タスクの説明を入力します。このフィールドのテキストは、プロセスのドキュメントに含まれています。プロセスデザイナーキャンバスの左上にある Documentation タブをクリックして、プロセスドキュメントを表示します。

    タスク名

    ヒューマンタスクの名前。

    件名

    タスクの件名を入力します。

    アクター

    ヒューマンタスクの実行を担当するアクター。Add をクリックして行を追加し、一覧からアクターを選択するか、New をクリックして新しいアクターを追加します。

    Groups

    ヒューマンタスクの実行を担当するグループ。Add をクリックして行を追加し、一覧からグループを選択するか、New をクリックして新しいグループを追加します。

    割当

    このタスクのローカル変数。Task Data I/O ウィンドウをクリックして開き、必要に応じてデータの入力と出力を追加します。MVEL 式をデータ入力および出力の割り当てとして追加することもできます。MVEL 言語の詳細は、「 Language Guide for 2.0 」を参照してください。

    再割り当て

    別のアクターを指定して、このタスクを完了します。

    通知

    クリックして、タスクに関連付けられた通知を指定します。

    非同期です

    このタスクを非同期で呼び出す必要がある場合に選択します。外部サービスによって実行されるタスクなど、タスクを瞬時に実行できない場合は、タスクを非同期にします。

    省略可能

    このタスクが必須ではない場合に選択します。

    優先順位

    タスクの優先度を指定します。

    説明

    ヒューマンタスクの説明を入力します。

    作成者

    このタスクを作成したユーザー。

    アドホックの自動開始

    これが自動的に開始される必要があるアドホックタスクである場合に選択します。AdHoc Autostart を使用すると、タスクは、開始タスクにより開始するのではなく、プロセスまたはケースインスタンスが作成されたときに自動的に開始します。多くの場合、ケース管理で使用されます。

    複数のインスタンス

    このタスクに複数のインスタンスがある場合に選択します。

    開始時アクション

    タスクの開始時のアクションを指定する Java、JavaScript、または MVEL スクリプト。

    終了時アクション

    タスクの終了時のアクションを指定する Java、JavaScript、または MVEL スクリプト。

    コンテンツ

    スクリプトのコンテンツ。

    SLA 期日

    サービスレベルアグリーメント (SLA) の有効期限の日付。

    Metadata Attributes

    メタデータ属性が存在する場合に何らかのアクションを実装するリスナーなど、カスタムイベントリスナーに使用するカスタムメタデータ属性の名前と値を追加します。

    Metadata 属性 により、新しい metaData 拡張を BPMN ダイアグラムに有効化し、タスク全体の動作を変更できます。

  7. Save をクリックします。

5.4.1. ユーザータスク割り当てストラテジーの設定

ユーザータスク割り当てストラテジーは、タスクを自動的に適切なユーザーに割り当てるために使用します。割り当てストラテジーにより、見込みオーナー、タスクの優先順位、タスクデータなどの関連するプロパティーに基づいて、より効率的なタスクの割り当てが可能になります。org.jbpm.task.assignment.strategy は、Red Hat Process Automation Manager のユーザータスク割り当てストラテジーのシステムプロパティーです。Business Central でユーザータスクの割り当てストラテジーを明示的に定義することもできます。

前提条件

  • Business Central でプロジェクトを作成している。
  • org.jbpm.task.assignment.enabled システムプロパティーを true に設定する必要があります。

手順

  1. ビジネスプロセスを作成します。

    Business Central でのビジネスプロセスの作成に関する詳細は、5章Business Central でのビジネスプロセスの作成 を参照してください。

  2. ユーザータスクを作成します。

    Business Central でユーザータスクを作成する方法は、「ユーザータスクの作成」 を参照してください。

  3. 画面の右上隅で、Properties アイコンをクリックします。
  4. Implementation/Execution を展開し、Assignments の下の btn assign をクリックして、Data I/O ウィンドウを開きます。
  5. 名前に AssignmentStrategy、タイプに String、コンスタントソースにストラテジー名などを指定してデータの入力を追加します。

    注記

    AssignmentStrategy が null に設定されている場合には、そのタスクには割り当てストラテジーは使用されません。

  6. OK をクリックします。

    AssignmentStrategy 変数は、ユーザータスクへのデータ入力として追加されます。

5.5. プロセスデザイナーでの BPMN2 ユーザータスクのライフサイクル

プロセスインスタンスの実行時にユーザータスク要素をトリガーしてユーザータスクを作成できます。プロセスインスタンスは、関連のあるユーザータスクが完了した場合か、中断した場合にのみ実行が継続されます。プロセスインスタンスは、関連するユーザータスクが完了したか、または中止された場合にのみ実行を継続します。ユーザータスクのライフサイクルは以下のとおりです。

  • プロセスインスタンスがユーザータスク要素に入ると、ユーザータスクは Created ステージに入ります。
  • Created は一時的なステージで、ユーザータスクはすぐに Ready ステージに入ります。タスクを実行可能な全アクターのタスク一覧に、タスクは表示されます。
  • アクターがユーザータスクをクレームすると、タスクは Reserved になります。
注記

ユーザータスクに、利用可能なアクターが 1 つある場合には、タスクは作成されるとそのアクターに割り当てられます。

  • ユーザータスクをクレームしたアクターが実行を開始すると、ユーザータスクのステータスは InProgress に変更されます。
  • アクターがユーザータスクを完了したら、実行の結果に応じて、ステータスが Completed または Failed に変わります。

以下のように、他にもライフサイクルメソッドが複数あります。

  • ユーザータスクが別のアクターに割り当てられるように、ユーザータスクを委任または転送する。
  • ユーザータスクを取り消すと、ユーザータスクは単一のアクターにより要求されなくなりますが、それを実行することを許可されているすべてのアクターが使用できます。
  • ユーザータスクを一時停止して再開する。
  • 進行中のユーザータスクを停止する。
  • タスクの実行が一時停止されたユーザータスクをスキップする。

ユーザータスクのライフサイクルの詳細は、「Web Services Human Task specification」 を参照してください。

5.6. プロセスデザイナーでの BPMN2 タスクパーミッションのマトリックス

ユーザータスクのパーミッションマトリックスは、特定のユーザーロールで可能なアクションをまとめています。ユーザーロールは以下のとおりです。

  • 潜在的な所有者: タスク (以前にクレームされた後に解放、転送されたタスク) をクレーム可能なユーザー。ステータスが Ready のタスクはクレーム可能で、潜在的な所有者はタスクの実際の所有者になります。
  • 実際の所有者: タスクをクレームし、タスクが完了するか、失敗するまで進めるユーザー。
  • ビジネス管理者: ステータスを変更して、タスクのライフサイクルのどの時点にでもタスクを進めることができるスーパーユーザー。

以下のパーミッションマトリックスは、タスクの変更操作すべての承認を表します。

  • + は、ユーザーロールが指定の操作を実行できることを表します。
  • - は、ユーザーロールが指定の操作を実行できないか、操作がユーザーのロールと一致しないことを表します。

表5.7 主な操作のパーミッションマトリックス

操作Potential_Owner実際の所有者ビジネス管理者

アクティベート

-

-

+

クレーム

+

-

+

完了

-

+

+

権限委譲

+

+

+

失敗

-

+

+

進む

+

+

+

ノミネート

-

-

+

リリース

-

+

+

削除

-

-

+

再開

+

+

+

スキップ

+

+

+

開始

+

+

+

停止

-

+

+

一時停止

+

+

+

5.7. ビジネスプロセスのコピーの作成

Business Central でビジネスプロセスのコピーを作成し、必要に応じてコピーしたプロセスを変更できます。

手順

  1. ビジネスプロセスデザイナーで、右上のツールバーの Copy をクリックします。
  2. Make a Copy ウィンドウで、コピーしたビジネスプロセスの新しい名前を入力し、ターゲットパッケージを選択して、オプションでコメントを追加します。
  3. Make a Copy をクリックします。
  4. 必要に応じてコピーしたビジネスプロセスを変更し、Save をクリックして、更新されたビジネスプロセスを保存します。

5.8. 要素のサイズを変更し、ズーム機能を使用したビジネスプロセスの表示

ビジネスプロセスの個々の要素のサイズを変更し、ズームインまたはズームアウトして、ビジネスプロセスの表示を変更できます。

手順

  1. ビジネスプロセスデザイナーで、要素を選択し、要素の右下隅にある赤い点をクリックします。
  2. 赤い点をドラッグして、要素のサイズを変更します。

    図5.2 要素のサイズ変更

    Resizing an element
  3. ズームインまたはズームアウトしてダイアグラム全体を表示するには、キャンバスの右下にあるプラス記号またはマイナス記号をクリックします。

    図5.3 ビジネスプロセスの拡大または縮小

    Zooming to view the entire diagram

5.9. Business Central でのプロセスドキュメントの生成

Business Central のプロセスデザイナーでは、プロセス定義のレポートを表示し、出力できます。プロセスドキュメントには、コンポーネント、データ、プロセスの視覚的なフローが簡単に出力して共有できるように PDF 形式でまとめられています。

手順

  1. Business Central で、ビジネスプロセスが含まれるプロジェクトに移動し、プロセスを選択します。
  2. プロセスデザイナーの Documentation タブでプロセスファイルの概要を表示し、画面の右上隅の Print をクリックして PDF レポートを出力します。

    図5.4 プロセスドキュメントの生成

    Project-level service task settings

第6章 変数

ランタイム時に使用するデータを格納する変数。プロセスデザイナーは、3 種類の変数を使用します。

グローバル変数

グローバル変数は、特定のセッションのすべてのプロセスインスタンスとアセットに表示されます。これらは、主にビジネスルールおよび制約によって使用されることを目的としており、ルールまたは制約によって動的に作成されます。

プロセス変数

プロセス変数は、BPMN2 定義ファイルのプロパティーとして定義され、プロセスインスタンス内で表示されます。プロセスの作成時に初期化され、プロセスの完了時に破棄されます。

ローカル変数

ローカル変数は、アクティビティーなどの特定のプロセス要素に関連付けられ、その中で使用できます。要素コンテキストが初期化されると、ローカル変数は初期化されます。つまり、実行ワークフローがノードに入り、onEntry アクションの実行が終了した場合に初期化されます (該当する場合)。要素コンテキストが破棄されると、ローカル変数は破棄されます。つまり、実行ワークフローが要素を離れる場合に破棄されます。

プロセス、サブプロセス、またはタスクなどの要素は、独自のコンテキストと親コンテキストの変数にのみアクセスできます。要素は、要素の子要素で定義された変数にアクセスできません。したがって、実行時に要素が変数へのアクセスを必要とする場合、独自のコンテキストが最初に検索されます。

変数が要素のコンテキストで直接見つからない場合、直接の親コンテキストが検索されます。検索は、プロセスコンテキストに到達するまで続行されます。グローバル変数の場合、検索はセッションコンテナーで直接実行されます。

変数が見つからない場合、読み取りアクセス要求は null を返し、書き込みアクセスはエラーメッセージを生成して、プロセスは実行を継続します。変数は ID に基づいて検索されます。

6.1. 変数タグ

変数の動作をより細かく制御するには、BPMN プロセスファイルでプロセス変数とローカル変数にタグ付けすることができます。タグは、特定の変数にメタデータとして追加する単純な文字列値です。

Red Hat Process Automation Manager は、プロセス変数とローカル変数の以下のタグをサポートします。

  • required: プロセスインスタンスを開始するための要件として変数を設定します。必要な変数なしでプロセスインスタンスが起動すると、Red Hat Process Automation Manager は VariableViolationException エラーを生成します。
  • readonly: 変数が情報提供のみを目的としており、設定できるのはプロセスインスタンスの実行中に 1 回のみであることを示します。readonly 変数の値がいずれかの時点で変更されると、Red Hat Process Automation Manager は VariableViolationException エラーを生成します。
  • restricted: VariableGuardProcessEventListener で使用される特別なタグで、必要かつ既存のロールに基づいて変数を変更する権限が付与されていることを示します。

    VariableGuardProcessEventListener は、DefaultProcessEventListener から拡張されたもので、2 つの異なるコンストラクターをサポートします。

    • VariableGuardProcessEventListener

      public VariableGuardProcessEventListener(String requiredRole, IdentityProvider identityProvider) {
          this("restricted", requiredRole, identityProvider);
      }
    • VariableGuardProcessEventListener

      public VariableGuardProcessEventListener(String tag, String requiredRole, IdentityProvider identityProvider) {
          this.tag = tag;
          this.requiredRole = requiredRole;
          this.identityProvider = identityProvider;
      }

      したがって、以下の例に示すように、許可されたロール名とユーザーロールを返す ID プロバイダーを使用して、イベントリスナーをセッションに追加する必要があります。

      ksession.addEventListener(new VariableGuardProcessEventListener("AdminRole", myIdentityProvider));

    上記の例では、VariableGuardProcessEventListener メソッドで、変数にセキュリティー制約タグ (restricted) が付いているかどうかを確認します。ユーザーに必要なロールがない場合、Red Hat Process Automation Manager は VariableViolationException エラーを生成します。

注記

Business Central UI に表示される変数タグ (internalinputoutputbusiness-relevanttracked など) は、Red Hat Process Automation Manager ではサポートされません。

タグは、![CDATA[TAG_NAME]] 形式で定義されたタグ値を使用し、customTags メタデータプロパティーとして BPMN プロセスソースファイルに直接追加できます。

たとえば、以下の BPMN プロセスは、required タグを approver プロセス変数に適用します。

図6.1 BPMN モデラーでタグ付けされた変数の例

Image of variable tags in BPMN modeler

BPMN ファイルでタグ付けされた変数の例

<bpmn2:property id="approver" itemSubjectRef="ItemDefinition_9" name="approver">
  <bpmn2:extensionElements>
    <tns:metaData name="customTags">
      <tns:metaValue><![CDATA[required]]></tns:metaValue>
    </tns:metaData>
  </bpmn2:extensionElements>
</bpmn2:property>

必要に応じて、変数に複数のタグを使用できます。BPMN ファイルでカスタム変数タグを定義して、Red Hat Process Automation Manager プロセスイベントリスナーが変数データを利用できるようにすることも可能です。カスタムタグは、標準の変数タグのように Red Hat Process Automation Manager のランタイムに影響を与えることはせず、情報提供のみを目的としています。カスタム変数タグは、標準の Red Hat Process Automation Manager 変数タグに使用する場合と同じ customTags メタデータプロパティー形式で定義します。

6.2. グローバル変数の定義

グローバル変数はナレッジセッションに存在し、アクセスが可能で、そのセッションのすべてのアセットで共有されます。これらはナレッジベースの特定のセッションに属し、エンジンに情報を渡すために使用されます。すべてのグローバル変数は、その ID とアイテムサブジェクト参照を定義します。ID は変数名として機能し、プロセス定義内で一意である必要があります。アイテムサブジェクト参照は、変数が保存するデータタイプを定義します。

重要

ルールは、ファクトが挿入されたときに評価されます。したがって、ファクトパターンを制約するためにグローバル変数を使用していて、グローバルが設定されていない場合、システムは NullPointerException を返します。

グローバル変数は、変数定義を持つプロセスがセッションに追加されるとき、またはセッションがパラメーターとしてグローバルで初期化されるときに初期化されます。

グローバル変数の値は通常、割り当て中に変更できます。これは、プロセス変数とアクティビティー変数間のマッピングになります。続いてグローバル変数は、ローカルアクティビティーコンテキスト、ローカルアクティビティー変数、または子コンテキストから変数への直接呼び出しによって関連付けられます。

前提条件

  • Business Central でプロジェクトを作成済みである。これにはビジネスプロセスアセットが 1 つ以上含まれます。

手順

  1. ビジネスプロセスアセットを開きます。
  2. プロセスデザイナーキャンバスの空白エリアをクリックします。
  3. 画面の右上にある Properties アイコンをクリックして、Properties パネルを開きます。
  4. 必要に応じて、Process セクションを展開します。
  5. Global Variables のサブセクションで、プラスアイコンをクリックします。
  6. Name ボックスに変数の名前を入力します。
  7. Data Type メニューからデータタイプを選択します。

6.3. プロセス変数の定義

プロセス変数は、BPMN2 定義ファイルのプロパティーとして定義され、プロセスインスタンス内で表示されます。プロセスの作成時に初期化され、プロセスの完了時に破棄されます。

プロセス変数は、プロセスコンテキストに存在する変数であり、そのプロセスまたはその子要素からアクセスできます。プロセス変数は特定のプロセスインスタンスに属し、他のプロセスインスタンスからアクセスすることはできません。すべてのプロセス変数は、その ID とアイテムサブジェクト参照を定義します。アイテムサブジェクト参照は、変数が保存するデータタイプを定義します。

プロセス変数は、プロセスインスタンスの作成時に初期化されます。それらの値は、グローバル変数がローカルアクティビティーコンテキスト、ローカルアクティビティー変数に関連付けられている場合に、割り当てを使用するプロセスアクティビティーによって、または子コンテキストから変数への直接呼び出しによって変更できます。

プロセス変数は、ローカル変数にマッピングする必要があることに注意してください。

前提条件

  • Business Central でプロジェクトを作成済みである。これにはビジネスプロセスアセットが 1 つ以上含まれます。

手順

  1. ビジネスプロセスアセットを開きます。
  2. プロセスデザイナーキャンバスの空白エリアをクリックします。
  3. 画面の右上にある Properties アイコンをクリックして、Properties パネルを開きます。
  4. 必要に応じて、Process Data セクションを展開します。
  5. Process Variables サブセクションで、プラスアイコンをクリックします。
  6. Name ボックスに変数の名前を入力します。
  7. Data Type メニューからデータタイプを選択します。

6.4. ローカル変数の定義

ローカル変数は、アクティビティーなどのプロセス要素内で使用できます。要素コンテキストが初期化されると、ローカル変数は初期化されます。つまり、実行ワークフローがノードに入り、onEntry アクションの実行が終了した場合に初期化されます (該当する場合)。要素コンテキストが破棄されると、ローカル変数は破棄されます。つまり、実行ワークフローが要素を離れる場合に破棄されます。

ローカル変数の値は、グローバル変数またはプロセス変数にマッピングできます。これにより、ローカル変数を収容する親要素の相対的な独立性を維持できます。このような分離は、技術的な例外の防止に役立つ場合があります。

ローカル変数は、プロセスの子要素コンテキストに存在する変数であり、このコンテキスト内からのみアクセスできます。ローカル変数は、プロセスの特定の要素に属します。

スクリプトタスクを除くタスクの場合、Assignments プロパティーの Data Input Assignments および Data Output Assignments を定義できます。Data Input Assignments は、Task に入る変数を定義し、タスクの実行に必要な入力データを提供します。Data Output Assignments は、実行後の Task のコンテキストを参照して、出力データを取得できます。

ユーザータスクは、ユーザータスクを実行しているアクターに関連するデータを提示します。さらに、ユーザータスクは、実行に関連する結果データを提供するようにアクターに要求します。

データを要求および提供するには、タスクフォームを使用し、Data Input Assignment パラメーターのデータを変数にマッピングします。データを出力として保持する場合は、Data Output Assignment パラメーターでユーザーが提供したデータをマッピングします。

前提条件

  • Business Central でプロジェクトを作成済みである。プロジェクトには、スクリプトタスクではないタスクが 1 つ以上あるビジネスプロセスアセットが 1 つ以上含まれます。

手順

  1. ビジネスプロセスアセットを開きます。
  2. スクリプトタスクではないタスクを選択します。
  3. 画面の右上にある Properties アイコンをクリックして、Properties パネルを開きます。
  4. Assignments サブセクションの下のボックスをクリックします。Task Data I/O ダイアログボックスが開きます。
  5. Data Inputs and Assignments または Data Outputs and Assignments の横にある Add をクリックします。
  6. Name ボックスにローカル変数の名前を入力します。
  7. Data Type メニューからデータタイプを選択します。
  8. ソースまたはターゲットを選択してから、Save をクリックします。

6.5. プロセス変数値の編集

プロセスインスタンスを開始したら、Business Central でプロセス変数の値を編集できます。サポート対象の変数タイプは、Boolean、Float、Integer、Enums です。

前提条件

  • Business Central でプロジェクトを作成しており、プロセスインスタンスを開始している。

手順

  1. Business Central で、MenuManageProcess Instances に移動します。
  2. Process Variables タブを選択し、編集する変数名の Edit をクリックします。
  3. 変数値 を追加または変更して、Save をクリックします。

図6.2 Business Central の変数値の編集ボタン

Process variable value edit button

第7章 アクションスクリプト

アクションスクリプトは、Script プロパティーまたは要素のインターセプターアクションを定義するコードの一部です。アクションスクリプトは、グローバル変数、プロセス変数、および事前定義変数 kcontext にアクセスできます。kcontext は、ProcessContext インターフェースのインスタンスです。kcontext 変数の詳細は、ProcessContext Javadoc を参照してください。

Java および MVEL は、アクションスクリプト定義の方言としてサポートされます。MVEL は有効な Java コードを受け入れ、さらにパラメーターへのネストされたアクセスをサポートします。たとえば、MVEL 呼び出し person.name は Java 呼び出し person.getName() と同等です。

Java 方言および MVEL 方言でのアクションスクリプトの例

// Java dialect
System.out.println(person.getName());

// MVEL dialect
System.out.println(person.name);

アクションスクリプトを使用して、プロセスインスタンスに関する情報を表示することもできます。たとえば、以下のコマンドを使用して以下を使用します。

  • プロセスインスタンスの ID を返します。

    System.out.println(kcontext.getProcessInstance().getId());
  • プロセスインスタンスに親がある場合は、親プロセスインスタンス ID を返します。

    System.out.println(kcontext.getProcessInstance().getParentProcessInstanceId());
  • プロセスインスタンスに関連するプロセス定義の ID を返します。

    System.out.println(kcontext.getProcessInstance().getProcessId());
  • プロセスインスタンスに関連するプロセス定義の名前を返します。

    System.out.println(kcontext.getProcessInstance().getProcessName());
  • プロセスインスタンスの状態を返します。

    System.out.println(kcontext.getProcessInstance().getState());

アクションスクリプトにプロセス変数を設定するには、kcontext.setVariable("VARIABLE_NAME", "VALUE") を使用します。

第8章 タイマー

タイマーを使用して、特定の期間後にロジックをトリガーするか、または一定の間隔で特定のアクションを繰り返すことができます。タイマーは、1 回または繰り返しトリガーするまで、事前定義の時間を待ちます。

8.1. Red Hat Process Automation Manager でサポート対象のタイマー

Red Hat Process Automation Manager は、2 種類のタイマーをサポートします。

  • Quartz: Spring Boot と Tomcat での使用を推奨しています。
  • EJB: オンプレミスおよび Red Hat OpenShift Container Platform 両方で Red Hat JBoss EAP と使用する場合に推奨しています。
注記

以下のビジネスストラテジーにはタイマーを使用しないでください。

  • プロセスポーリングストラテジーとしてタイマーを使用しないでください。たとえば、外部サービスを直接呼び出して 1 秒タイマーを追加する代わりに、Fuse を使用して非同期ルートを登録します。Fuse コールバックを使用して、想定していた応答を受け取ると、プロセスが次に移動するイベントを実行します。Business Process Model and Notation (BPMN) プロセスモデル以外のビジネスストラテジーの一部としてワークアイテムハンドラーを作成し、タイマーをワークアイテムハンドラーに移動します。
  • プロセスの実行中にセーフポイントやコミットを強制的に実行するタイマーを使用しないでください。タイマーは、ビジネスプロセスで期間 (duration) を表すように設計されていますが、エンジン固有の動作を強制的に実行するためのものではありません。

8.2. 遅延と期間を使用したタイマーの設定

遅延と特定の期間を使用してタイマーを設定できます。遅延は、ノードのアクティブ化後の待機時間を指定し、期間は後続のトリガーのアクティベーションの間隔を定義します。期間の値が 0 の場合は、1 回限りのタイマーが作成されます。遅延および期間式は、[#d][#h][#m][#s][#[ms]] 形式で指定できます。これは、日数、時間、分、秒、およびミリ秒 (デフォルト) を示します。たとえば、1h の式は、タイマーを再度トリガーするまで 1 時間待機する時間を示します。

8.3. ISO-8601 の日付形式を使用したタイマーの設定

1 回限りのタイマーと繰り返し可能なタイマーの両方をサポートする ISO-8601 日付形式でタイマーを設定できます。タイマーは、日時表現、期間、または間隔として定義できます。以下に例を示します。

  • 日付 2020-12-24T20:00:00.000+02:00 記号は、タイマーが 8:00 p.m を完全にトリガーすることを表します。
  • 期間 PT1S 記号で、1 秒後にタイマーが 1 回トリガーされます。
  • 繰り返し間隔 R/PT1S 記号は、タイマーが制限なしで 1 秒ごとにトリガーされることを示します。タイマー R5/PT1S は、1 秒ごとに 5 回トリガーします。

8.4. プロセス変数でのタイマーの設定

また、遅延と期間の文字列表現、または ISO8601 日付形式で構成されるプロセス変数を使用してタイマーを指定することもできます。#{variable} を指定する場合、エンジンは式を解析し、式の値を変数に置き換えます。プロセスでは、以下の方法でタイマーを使用できます。

  • タイマーイベントをプロセスフローに追加します。プロセスのアクティブ化によりタイマーが開始され、タイマーがトリガーされると (1 回または繰り返し)、タイマーノードの後続ノードがアクティブ化されます。その後、正の期間値を持つタイマーの送信接続が複数回トリガーされます。タイマーノードがキャンセルされると、関連付けられたタイマーもキャンセルされ、トリガーはこれ以上発生しません。
  • タイマーを境界イベントとしてサブプロセスまたはタスクに関連付けます。

8.5. 実行中のプロセスインスタンス内でのタイマー更新

場合によっては、遅延、期間、または制限の繰り返しなど、新しい要件を満たすようにスケジュールされたタイマーを再スケジュールする必要があります。タイマーの更新には多くの低レベルの操作が含まれるため、Red Hat Process Automation Manager は以下のコマンドを実行して、タイマーの更新に関連する低レベルの操作をアトミック操作として実行します。以下のコマンドは、すべての操作が同じトランザクション内で実行されるようにします。

org.jbpm.process.instance.command.UpdateTimerCommand

注記

更新には、境界タイマーイベントと中間タイマーイベントのみがサポートされます。

タイマーを再スケジューリングするには、2 つの必須パラメーターと UpdateTimerCommand クラスの 3 つの任意のパラメーターセットを指定します。

表8.1 UpdateTimerCommand クラスのパラメーターおよびパラメーターセット

パラメーターまたはパラメーターセットタイプ

プロセスインスタンス ID (必須)

long

タイマーノード名 (必須)

String

delay (任意)

long

period (任意)

long

繰り返しの制限 (任意)

init

再スケジュール時間イベントの例

// Start the process instance and record its ID:
long id = kieSession.startProcess(BOUNDARY_PROCESS_NAME).getId();

// Set the timer delay to 3 seconds:
kieSession.execute(new UpdateTimerCommand(id, BOUNDARY_TIMER_ATTACHED_TO_NAME, 3));

第9章 制約

制約は、制約が含まれる要素が実行される場合に評価されるブール式です。分岐ゲートウェイなど、プロセスのさまざまな場所で制約を使用できます。

Red Hat Process Automation Manager は、以下を含む 2 種類の制約をサポートします。

  • コード制約: Java、Javascript、Drools、または MVEL で定義される制約。コード制約は、グローバル変数やプロセス変数など、作業メモリー内のデータにアクセスできます。以下のコード制約の例には、プロセスの person を変数として含めます。

    Java コード制約の例

    return person.getAge() > 20;

    MVEL コード制約の例

    return person.age > 20;

    Javascript コード制約の例

    person.age > 20

  • ルール制約: DRL ルール条件の形式で定義される制約。ルール制約は、グローバル変数など、作業メモリー内のデータにアクセスできます。ただし、ルール制約はプロセス内で直接変数にアクセスできず、プロセスインスタンスを使用します。親プロセスインスタンスの参照を取得するには、WorkflowProcessInstance タイプの processInstance 変数を使用します。

    注記

    必要に応じてプロセスインスタンスをセッションに挿入して更新できます (たとえば、プロセスで Java コードや on-entry、on-exit、または明示的なアクションを使用)。

    以下の例は、プロセス内の name 変数の値と同じ名前を持つユーザーを検索するルール制約を示しています。

    プロセス変数の割り当てを使用したルール制約の例

    processInstance : WorkflowProcessInstance()
    Person( name == ( processInstance.getVariable("name") ) )
    # add more constraints here ...

第10章 Business Central でのビジネスプロセスのデプロイ

Business Central でビジネスプロセスを設計したら、Business Central でプロジェクトをビルドおよびデプロイして、KIE Server でプロセスを使用できるようにします。

前提条件

手順

  1. Business Central で、MenuDesignProjects に移動します。
  2. デプロイするプロジェクトをクリックします。
  3. Deploy をクリックします。

    注記

    Build & Install オプションを選択してプロジェクトをビルドし、KJAR ファイルを KIE Server にデプロイせずに設定済みの Maven リポジトリーに公開することもできます。開発環境では、Deploy をクリックすると、ビルドされた KJAR ファイルを KIE Server に、実行中のインスタンス (がある場合はそれ) を停止せずにデプロイできます。または Redeploy をクリックして、ビルドされた KJAR ファイルをデプロイしてすべてのインスタンスを置き換えることもできます。次回、ビルドされた KJAR ファイルをデプロイまたは再デプロイすると、以前のデプロイメントユニット (KIE コンテナー) が同じターゲット KIE Server で自動的に更新されます。実稼働環境では Redeploy オプションは無効になっており、Deploy をクリックして、ビルドされた KJAR ファイルを KIE Server 上の新規デプロイメントユニット (KIE コンテナー) にデプロイすることのみが可能です。

    KIE Server の環境モードを設定するには、org.kie.server.mode システムプロパティーを org.kie.server.mode=development または org.kie.server.mode=production に設定します。Business Central の対応するプロジェクトでのデプロイメント動作を設定するには、プロジェクトの SettingsGeneral SettingsVersion に移動し、Development Mode オプションを選択します。デフォルトでは、KIE Server および Business Central のすべての新規プロジェクトは開発モードになっています。Development Mode をオンにしたプロジェクトをデプロイしたり、実稼働モードになっている KIE Server に手動で SNAPSHOT バージョンのサフィックスを追加したプロジェクトをデプロイしたりすることはできません。

    プロジェクトのデプロイメントに関する詳細を確認するには、画面の上部にあるデプロイメントバナーの View deployment details か、Deploy のドロップダウンメニューをクリックします。このオプションを使用すると、MenuDeployExecution Servers ページに移動します。

第11章 Business Central でのビジネスプロセスの実行

ビジネスプロセスを含むプロジェクトをビルドおよびデプロイした後、ビジネスプロセスに定義された機能を実行できます。

例として、この手順では Business Central の Mortgage_Process のサンプル例を使用します。このシナリオでは、住宅ローンブローカーとして、住宅ローン申請書にデータを入力します。MortgageApprovalProcess ビジネスプロセスが実行し、プロジェクトで定義しておいたデシジョンルールに基づいて、申請者が条件に合った頭金を提示したかどうかを判断します。このビジネスプロセスは、ルールのテストを終了するか、続行するために頭金の増額を依頼します。申請書がビジネスルールのテストをパスしたら、銀行の承認者が申請書を見直し、ローンを承認または却下します。

前提条件

手順

  1. Business Central で、MenuProjects に移動して、スペースを選択します。デフォルトのスペースは MySpace です。
  2. ウィンドウの右上隅にある Add Project の横の矢印をクリックし、Try Samples を選択します。
  3. Mortgage_Process サンプルを選択し、OK をクリックします。
  4. プロジェクトページで、Mortgage_Process を選択します。
  5. Mortgage_Process ページで、Build をクリックします。
  6. プロジェクトがビルドされたら、Deploy をクリックします。
  7. MenuManageProcess Definitions の順にクリックします。
  8. MortgageApprovalProcess 行の任意の場所をクリックし、プロセスの詳細を表示します。
  9. Diagram タブをクリックし、エディターでビジネスプロセスダイアグラムを表示します。
  10. New Process Instance をクリックすると Application フォームが開き、以下の値をフォームフィールドに入力します。

    • Down Payment: 30000
    • Years of amortization: 10
    • Name: Ivo
    • Annual Income: 60000
    • SSN: 123456789
    • Age of property: 8
    • Address of property: Brno
    • Locale: Rural
    • Property Sale Price: 50000
  11. Submit をクリックして、新しいプロセスインスタンスを開始します。プロセスインスタンスを開始すると、Instance Details ビューが開きます。
  12. Diagram タブをクリックして、プロセスダイアグラムのプロセスフローを表示します。各タスクを通過した時のプロセスの状態が強調表示されます。
  13. MenuManageTasks をクリックします。

    この例では、対応するタスクで作業しているユーザーは、以下のグループのメンバーです。

    • approver: Qualify タスクの場合
    • broker: Correct Data タスクおよび Increase Down Payment タスクの場合
    • manager: Final Approval タスクの場合
  14. 承認者として、Qualify タスク情報を確認し、Claim をクリックしてから Start をクリックしてタスクを開始します。続いて、Is mortgage application in limit? を選択し、Complete をクリックしてタスクフローを完了します。
  15. Tasks ページで、Final Approval 行の任意の場所をクリックし、Final Approval タスクを開きます。
  16. Claim をクリックして、タスクの担当を要求し、Complete をクリックして、ローンの承認プロセスを終了します。
注記

Save ボタンおよび Release ボタンは、承認プロセスを中断したり、(フィールド値を待っている場合は) インスタンスを保存したり、別のユーザーが修正するタスクを解除したりするために使用します。

第12章 ビジネスプロセスのテスト

ビジネスプロセスは動的に更新でき、エラーを発生させる可能性があるため、プロセスビジネスのテストは、他の開発アーティファクトと同様のビジネスプロセスライフサイクルの一部でもあります。

ビジネスプロセスのユニットテストにより、特定のユースケースでプロセスが想定通りに動作するようになります。たとえば、特定の入力に基づいて出力をテストできます。単体テストを簡素化するために、Red Hat Process Automation Manager には org.jbpm.test.JbpmJUnitBaseTestCase クラスが含まれています。

JbpmJUnitBaseTestCase は、Red Hat Process Automation Manager 関連のテストに使用するベーステストケースクラスとして実行されます。JbpmJUnitBaseTestCase は、以下の使用領域を提供します。

  • JUnit ライフサイクルメソッド

    表12.1 JUnit ライフサイクルメソッド

    メソッド説明

    setUp

    このメソッドは @Before のアノテーションが付けられます。データソースおよび EntityManagerFactory を設定し、シングルトンのセッション ID を削除します。

    tearDown

    このメソッドは @After としてアノテーションが付けられます。履歴を削除し、EntityManagerFactory およびデータソースを閉じ、RuntimeManager および RuntimeEngines を破棄します。

  • ナレッジベースおよびナレッジセッション管理メソッド: セッションを作成するには、RuntimeManager および RuntimeEngine を作成します。以下のメソッドを使用して RuntimeManager を作成および破棄します。

    表12.2 RuntimeManager および RuntimeEngine の管理方法

    メソッド説明

    createRuntimeManager

    特定のアセットセットと選択したストラテジーに対して RuntimeManager を作成します。

    disposeRuntimeManager

    テストの範囲でアクティブな RuntimeManager を破棄します。

    getRuntimeEngine

    指定されたコンテキスト用に新しい RuntimeEngine を作成します。

  • アサーション: アセットの状態をテストするには、以下のメソッドを使用します。

    表12.3 管理メソッド RuntimeManager および RuntimeEngine

    アサーション説明

    assertProcessInstanceActive(long processInstanceId, KieSession ksession)

    指定した processInstanceId を持つプロセスインスタンスがアクティブかどうかを確認します。

    assertProcessInstanceCompleted(long processInstanceId)

    指定した processInstanceId を持つプロセスインスタンスが完了しているかどうかを確認します。セッション永続性が有効な場合にこのメソッドを使用できます。それ以外の場合は、assertProcessInstanceNotActive(long processInstanceId, KieSession ksession) を使用します。

    assertProcessInstanceAborted(long processInstanceId)

    指定された processInstanceId を持つプロセスインスタンスが中断されているかどうかを確認します。セッション永続性が有効な場合にこのメソッドを使用できます。それ以外の場合は、assertProcessInstanceNotActive(long processInstanceId, KieSession ksession) を使用します。

    assertNodeExists(ProcessInstance process, String…​ nodeNames)

    指定したプロセスに指定されたノードが含まれているかどうかを検証します。

    assertNodeActive(long processInstanceId, KieSession ksession, String…​ name)

    指定した processInstanceId を持つプロセスインスタンスに、指定されたノード名を持つアクティブなノードが 1 つ以上含まれるかどうかを確認します。

    assertNodeTriggered(long processInstanceId, String…​ nodeNames)

    指定したプロセスインスタンスの実行中に、指定した各ノードに対してノードインスタンスがトリガーされているかどうかを確認します。

    assertProcessVarExists(ProcessInstance process, String…​ processVarNames)

    指定したプロセスに指定されたプロセス変数が含まれているかどうかを検証します。

    assertProcessNameEquals(ProcessInstance process, String name)

    指定した名が指定されたプロセス名と一致するかどうかを確認します。

    assertVersionEquals(ProcessInstance process, String version)

    指定したプロセスバージョンが指定されたプロセスバージョンと一致するかどうかを確認します。

  • ヘルパーメソッド: 以下のメソッドを使用して、永続性を使用または使用しない特定のプロセスセットに対して新しい RuntimeManager および RuntimeEngine を作成します。永続性の詳細は、『Red Hat Process Automation Manager のプロセスエンジン 』を参照してください。

    表12.4 管理メソッド RuntimeManager および RuntimeEngine

    メソッド説明

    setupPoolingDataSource

    データソースを設定します。

    getDs

    設定したデータソースを返します。

    getEmf

    設定済みの EntityManagerFactory を返します。

    getTestWorkItemHandler

    デフォルトのワークアイテムハンドラーに加えて登録できるテストワークアイテムハンドラーを返します。

    clearHistory

    履歴ログを消去します。

以下の例は、開始イベント、スクリプトタスク、および終了イベントが含まれます。JUnit テスト例では、新規セッションを作成し、hello.bpmn プロセスを開始し、プロセスインスタンスが完了し、StartProcess ノード、Hello ノード、および EndProcess ノードが実行されているかどうかを確認します。

図12.1 hello.bpmn プロセスの JUnit テストの例

Example JUnit Test Process
public class ProcessPersistenceTest extends JbpmJUnitBaseTestCase {

    public ProcessPersistenceTest() {
        super(true, true);
    }

    @Test
    public void testProcess() {

        createRuntimeManager("hello.bpmn");

        RuntimeEngine runtimeEngine = getRuntimeEngine();

        KieSession ksession = runtimeEngine.getKieSession();

        ProcessInstance processInstance = ksession.startProcess("com.sample.bpmn.hello");

        assertProcessInstanceNotActive(processInstance.getId(), ksession);

        assertNodeTriggered(processInstance.getId(), "StartProcess", "Hello", "EndProcess");
    }
}

JbpmJUnitBaseTestCase は、ユニットテストの一環として事前定義された RuntimeManager ストラテジーをすべてサポートします。そのため、1 つのテストの一部として RuntimeManager を作成するときに使用されるストラテジーを指定するだけで十分です。以下の例は、ユーザータスクを管理するタスクサービスでの PerProcessInstance ストラテジーの使用を示しています。

public class ProcessHumanTaskTest extends JbpmJUnitBaseTestCase {

    private static final Logger logger = LoggerFactory.getLogger(ProcessHumanTaskTest.class);

    public ProcessHumanTaskTest() {
        super(true, false);
    }

    @Test
    public void testProcessProcessInstanceStrategy() {
        RuntimeManager manager = createRuntimeManager(Strategy.PROCESS_INSTANCE, "manager", "humantask.bpmn");
        RuntimeEngine runtimeEngine = getRuntimeEngine(ProcessInstanceIdContext.get());
        KieSession ksession = runtimeEngine.getKieSession();
        TaskService taskService = runtimeEngine.getTaskService();

        int ksessionID = ksession.getId();
        ProcessInstance processInstance = ksession.startProcess("com.sample.bpmn.hello");

        assertProcessInstanceActive(processInstance.getId(), ksession);
        assertNodeTriggered(processInstance.getId(), "Start", "Task 1");

        manager.disposeRuntimeEngine(runtimeEngine);
        runtimeEngine = getRuntimeEngine(ProcessInstanceIdContext.get(processInstance.getId()));

        ksession = runtimeEngine.getKieSession();
        taskService = runtimeEngine.getTaskService();

        assertEquals(ksessionID, ksession.getId());

        // let John execute Task 1
        List<TaskSummary> list = taskService.getTasksAssignedAsPotentialOwner("john", "en-UK");
        TaskSummary task = list.get(0);
        logger.info("John is executing task {}", task.getName());
        taskService.start(task.getId(), "john");
        taskService.complete(task.getId(), "john", null);

        assertNodeTriggered(processInstance.getId(), "Task 2");

        // let Mary execute Task 2
        list = taskService.getTasksAssignedAsPotentialOwner("mary", "en-UK");
        task = list.get(0);
        logger.info("Mary is executing task {}", task.getName());
        taskService.start(task.getId(), "mary");
        taskService.complete(task.getId(), "mary", null);

        assertNodeTriggered(processInstance.getId(), "End");
        assertProcessInstanceNotActive(processInstance.getId(), ksession);
    }
}

12.1. 外部サービスとの統合テスト

ビジネスプロセスには、多くの場合、外部サービスの呼び出しが含まれます。ビジネスプロセスのユニットテストでは、特定のサービスが正しく要求されているかどうかを検証するテストハンドラーを登録し、要求されたサービスのテスト応答を提供できます。

外部サービスとの対話をテストするには、デフォルトの TestWorkItemHandler ハンドラーを使用します。TestWorkItemHandler を登録して、特定タイプの作業アイテムをすべて収集できます。また、TestWorkItemHandler にはタスクに関連するデータも含まれます。ワークアイテムは、特定の電子メールを送信したり特定のサービスを呼び出すなど、作業単位 1 つを表します。TestWorkItemHandler は、プロセスの実行中に特定のワークアイテムが要求されているかどうかを確認し、関連付けられたデータが正しいことを確認します。

以下の例は、メールタスクを検証する方法と、電子メールが送信されていない場合に例外が発生するかどうかを示しています。ユニットテストは、メールの要求時に実行されるテストハンドラーを使用し、送信者や受信者などの電子メールに関連するデータをテストできます。abortWorkItem() メソッドがメール配信の失敗についてエンジンに通知すると、ユニットテストではエラーを生成してアクションをログに記録することにより、プロセスがこのようなケースを処理することを検証します。この場合、プロセスインスタンスは最終的に中止されます。

図12.2 メールプロセスの例

Example email process for testing
public void testProcess2() {

    createRuntimeManager("sample-process.bpmn");

    RuntimeEngine runtimeEngine = getRuntimeEngine();

    KieSession ksession = runtimeEngine.getKieSession();

    TestWorkItemHandler testHandler = getTestWorkItemHandler();

    ksession.getWorkItemManager().registerWorkItemHandler("Email", testHandler);

    ProcessInstance processInstance = ksession.startProcess("com.sample.bpmn.hello2");

    assertProcessInstanceActive(processInstance.getId(), ksession);
    assertNodeTriggered(processInstance.getId(), "StartProcess", "Email");

    WorkItem workItem = testHandler.getWorkItem();
    assertNotNull(workItem);
    assertEquals("Email", workItem.getName());
    assertEquals("me@mail.com", workItem.getParameter("From"));
    assertEquals("you@mail.com", workItem.getParameter("To"));

    ksession.getWorkItemManager().abortWorkItem(workItem.getId());
    assertProcessInstanceNotActive(processInstance.getId(), ksession);
    assertNodeTriggered(processInstance.getId(), "Gateway", "Failed", "Error");

}

第13章 Business Central でのプロセス定義とプロセスインスタンス

プロセス定義は、Business Process Model and Notation (BPMN) 2.0 ファイルであり、プロセスとその BPMN ダイアグラムのコンテナーとして機能します。プロセス定義には、関連するサブプロセスや、選択した定義に参加しているユーザーとグループの数など、ビジネスプロセスに関する利用可能な情報がすべて表示されます。

プロセス定義は、プロセス定義が使用するインポートされたプロセスの import エントリー、および relationship エントリーも定義します。

プロセス定義の BPMN2 ソース

<definitions id="Definition"
               targetNamespace="http://www.jboss.org/drools"
               typeLanguage="http://www.java.com/javaTypes"
               expressionLanguage="http://www.mvel.org/2.0"
               xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"Rule Task
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
               xmlns:g="http://www.jboss.org/drools/flow/gpd"
               xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI"
               xmlns:dc="http://www.omg.org/spec/DD/20100524/DC"
               xmlns:di="http://www.omg.org/spec/DD/20100524/DI"
               xmlns:tns="http://www.jboss.org/drools">

    <process>
      PROCESS
    </process>

    <bpmndi:BPMNDiagram>
     BPMN DIAGRAM DEFINITION
    </bpmndi:BPMNDiagram>

    </definitions>

ビジネスプロセスを含むプロジェクトを作成して設定し、デプロイした後に、Business Central の MenuManageProcess Definitions ですべてのプロセス定義の一覧を確認できます。右上の更新ボタンをクリックすれば、デプロイしたプロセス定義の一覧をいつでも更新できます。

プロセス定義の一覧には、プラットフォームにデプロイした利用可能なすべてのプロセス定義が表示されます。各プロセス定義をクリックすると、対応するプロセス定義の詳細が表示されます。そのプロセスに関連するサブプロセスが存在するかどうか、プロセス定義にユーザーおよびグループがいくつ存在するかなど、プロセス定義の情報が表示されます。プロセス定義の詳細ページの ダイアグラム タブには、プロセス定義の BPMN2 ベースのダイアグラムが含まれます。

選択したプロセス定義内からそれぞれ、右上隅の New Process Instance ボタンをクリックして、プロセス定義用の新規プロセスインスタンスを起動できます。利用可能なプロセスから起動したプロセスインスタンスは、Menu → ManageProcess Instances に一覧表示されます。

Manage ドロップダウンメニュー (Process DefinitionProcess InstancesTasksJobs および Execution Errors) と MenuTrackTask Inbox で、全ユーザーのデフォルトページネーションオプションを定義することも可能です。

Business Central でのプロセスおよびタスクの管理に関する詳細は、『Business Central でのビジネスプロセスの管理とモニタリング』を参照してください。

13.1. プロセス定義ページからのプロセスインスタンスの開始

MenuManageProcess Definitions からプロセスインスタンスを起動できます。これは、同時に複数のプロジェクトまたはプロセス定義を使用する環境では有用です。

前提条件

  • Business Central に、プロセス定義が設定されたプロジェクトがデプロイされている。

手順

  1. Business Central で MenuManageProcess Definitions に移動します。
  2. 一覧から、新しいプロセスインスタンスを開始するプロセス定義を選択します。定義の詳細ページが開きます。
  3. 右上隅の New Process Instance をクリックし、新しいプロセスインスタンスを開始します。
  4. プロセスインスタンスに必要な情報を提供します。
  5. Submit をクリックして、プロセスインスタンスを作成します。
  6. MenuManageProcess Instances で新規プロセスインスタンスを表示します。

13.2. プロセスインスタンスページからプロセスインスタンスの開始

MenuManageProcess Instances で、新規プロセスインスタンスを作成するか、実行中のプロセスインスタンスの全リストを表示することができます。

前提条件

  • Business Central に、プロセス定義が設定されたプロジェクトがデプロイされている。

手順

  1. Business Central で、MenuManageProcess Instances に移動します。
  2. 右上隅の New Process Instance をクリックし、ドロップダウンリストから新しいプロセスインスタンスを開始するプロセス定義を選択します。
  3. 新しいプロセスインスタンスを開始するために必要な情報を入力します。
  4. Start をクリックして、プロセスインスタンスを作成します。

    Manage Process Instances 一覧に新しいプロセスインスタンスが表示されます。

13.3. XML でのプロセス定義

BPMN 2.0 仕様を使用して、XML 形式でプロセスを直接作成できます。これらの XML プロセスの構文は、BPMN 2.0 XML スキーマ定義を使用して定義されます。

プロセス XML ファイルは、以下のコアセクションで構成されます。

  • process: これは、さまざまなノードとそのプロパティーの定義を含むプロセス XML の最上部になります。プロセス XML ファイルは、1 つの <process> 要素で構成されます。この要素には、プロセスに関連するパラメーター (そのタイプ、名前、ID、およびパッケージ名) が含まれ、3 つのサブセクションで構成されます。つまり、変数、グローバル、インポート、レーンなどのプロセスレベル情報が定義されるヘッダーセクション、プロセス内の各ノードを定義するノードセクション、およびプロセス内のすべてのノード間の接続を含む接続セクションの 3 つです。
  • BPMNDiagram: これは、ノードの場所など、すべての描画情報を含むプロセス XML ファイルの下の部分になります。ノードセクションには、各ノードの特定の要素が含まれ、そのノードタイプのさまざまなパラメーターとサブ要素を定義します。

以下のプロセス XML ファイルのフラグメントは、開始イベント、"Hello World" をコンソールに出力するスクリプトタスク、および終了イベントを含むシンプルなプロセスを示しています。

<?xml version="1.0" encoding="UTF-8"?>

<definitions
  id="Definition"
  targetNamespace="http://www.jboss.org/drools"
  typeLanguage="http://www.java.com/javaTypes"
  expressionLanguage="http://www.mvel.org/2.0"
  xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
  xmlns:g="http://www.jboss.org/drools/flow/gpd"
  xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI"
  xmlns:dc="http://www.omg.org/spec/DD/20100524/DC"
  xmlns:di="http://www.omg.org/spec/DD/20100524/DI"
  xmlns:tns="http://www.jboss.org/drools">

  <process processType="Private" isExecutable="true" id="com.sample.hello" name="Hello Process">
    <!-- nodes -->
    <startEvent id="_1" name="Start" />

    <scriptTask id="_2" name="Hello">
      <script>System.out.println("Hello World");</script>
    </scriptTask>

    <endEvent id="_3" name="End" >
      <terminateEventDefinition/>
    </endEvent>

    <!-- connections -->

    <sequenceFlow id="_1-_2" sourceRef="_1" targetRef="_2" />
    <sequenceFlow id="_2-_3" sourceRef="_2" targetRef="_3" />
  </process>

  <bpmndi:BPMNDiagram>
    <bpmndi:BPMNPlane bpmnElement="com.sample.hello" >

      <bpmndi:BPMNShape bpmnElement="_1" >
        <dc:Bounds x="16" y="16" width="48" height="48" />
      </bpmndi:BPMNShape>

      <bpmndi:BPMNShape bpmnElement="_2" >
        <dc:Bounds x="96" y="16" width="80" height="48" />
      </bpmndi:BPMNShape>

      <bpmndi:BPMNShape bpmnElement="_3" >
        <dc:Bounds x="208" y="16" width="48" height="48" />
      </bpmndi:BPMNShape>

      <bpmndi:BPMNEdge bpmnElement="_1-_2" >
        <di:waypoint x="40" y="40" />
        <di:waypoint x="136" y="40" />
      </bpmndi:BPMNEdge>

      <bpmndi:BPMNEdge bpmnElement="_2-_3" >
        <di:waypoint x="136" y="40" />
        <di:waypoint x="232" y="40" />
      </bpmndi:BPMNEdge>

    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>

</definitions>

第14章 Business Central のフォーム

フォームは、HTML として定義されたページのレイアウト定義であり、プロセスおよびタスクのインスタンス化の間にユーザーにダイアログウィンドウとして表示されます。タスクフォームは、プロセスとタスクインスタンスの両方の実行のためにユーザーからデータを取得しますが、プロセスフォームはプロセス変数から入力と出力を受け取ります。

入力は、Data Input Assignment を使用してタスクにマッピングされ、タスク内で使用できます。タスクが完了すると、データは Data Output Assignment としてマッピングされ、データを親プロセスインスタンスに提供します。

14.1. フォームモデラ―

Red Hat Process Automation Manager は、Form Modeler と呼ばれるフォームを定義するためのカスタムエディターを提供します。Form Modeler を使用すると、コードを記述せずに、データオブジェクトのフォーム、タスクフォーム、およびプロセス開始フォームを生成できます。Form Modeler には、複数のデータタイプをバインドするためのウィジェットライブラリーと、フォームの値が変更されたときに通知を送信するコールバックメカニズムが含まれています。Form Modeler は、Bean ベースの検証を使用し、フォームフィールドの静的または動的モデルへのバインドをサポートします。

Form Modeler には以下の機能が含まれています。

  • フォームのフォームモデリングユーザーインターフェース
  • データモデルまたは Java オブジェクトからのフォーム自動生成
  • Java オブジェクトのデータバインディング
  • 公式と式
  • カスタマイズされたフォームレイアウト
  • 埋め込みフォーム

Form Modeler には、フォームを作成するためにキャンバスに配置する定義済みのフィールドタイプが付属します。

図14.1 住宅ローンの申し込みフォームの例

5011

14.2. Business Central でのプロセスフォームおよびタスクフォームの生成

プロセスをインスタンス化したときに、プロセスをインスタンス化したユーザーに表示されるビジネスプロセスからプロセスフォームを生成できます。また、ビジネスプロセスからタスクフォームを生成することもできます。このタスクフォームは、実行フローがタスクに到達すると、ユーザータスクのインスタンス化時にユーザータスクのアクターに表示されます。

手順

  1. Business Central で、MenuDesignProjects に移動します。
  2. プロジェクト名をクリックしてアセットビューを開いてから、ビジネスプロセス名をクリックします。
  3. プロセスデザイナーで、フォームを作成するプロセスタスクをクリックします (該当する場合)。
  4. 右上のツールバーで、Form Generation アイコンをクリックして、生成するフォームを選択します。

    • Generate process form: プロセス全体のフォームを生成します。これは、プロセスインスタンスの起動時にユーザーが入力する必要がある初期フォームです。
    • Generate all forms: プロセス全体およびすべてのユーザータスクのフォームを生成します。
    • Generate forms for selection: 選択したユーザータスクノードのフォームを生成します。

    図14.2 フォーム生成メニュー

    auto form create

    フォームは、プロジェクトのルートディレクトリーに作成されます。

  5. Business Central で、プロジェクトのルートディレクトリーに移動して新しいフォーム名をクリックし、Form Modeler を使用して要件に合わせてフォームをカスタマイズします。

14.3. Business Central での手動によるフォームの作成

プロジェクトアセットビューから、タスクおよびプロセスフォームを手動で作成できます。これは、ビジネスプロセスからフォームを生成することを選択せずにフォームを生成する別の方法です。たとえば、Form Modeler は外部データオブジェクトからのフォームの作成をサポートするようになりました。

手順

  1. Business Central で、MenuDesignProjects に移動して、プロジェクト名をクリックします。
  2. Add AssetForm をクリックします。
  3. Create new Form ウィンドウで、以下の情報を入力します。

    • フォーム名 (一意である必要があります)
    • パッケージ名
    • モデルタイプ: Business Process または Data Object のいずれかを選択します。

      • Business Process モデルタイプの場合、Select Process ドロップダウンメニューからビジネスプロセスを選択し、Select Form ドロップダウンメニューから作成するフォームを選択します。
      • Data Object モデルタイプの場合、Select Data Object from Project のドロップダウンメニューから、プロジェクトデータオブジェクトの 1 つを選択します。
  4. OK をクリックして、Form Modeler を開きます。
  5. Form Modeler の左側の Components ビューで、Model Fields および Form Controls メニューを展開し、必要なフィールドとフォームコントロールをキャンバスにドラッグして新しいフォームを作成します。
  6. Save をクリックして変更を保存します。

14.4. フォームまたはプロセスでのドキュメントの添付

Red Hat Process Automation Manager は、Document フォームフィールドを使用したフォームでのドキュメントの添付をサポートしています。Document フォームフィールドを使用すると、フォームまたはプロセスの一部として必要なドキュメントをアップロードできます。

フォームおよびプロセスでドキュメントの添付を有効にするには、以下の手順を実行します。

  1. ドキュメントマーシャリング戦略を設定します。
  2. ビジネスプロセスでドキュメント変数を作成します。
  3. タスクの入力と出力をドキュメント変数にマッピングします。

14.4.1. ドキュメントマーシャリングストラテジーの設定

プロジェクトのドキュメントマーシャリングストラテジーにより、フォームおよびプロセスで使用するドキュメントの保存場所が決まります。Red Hat Process Automation Manager のデフォルトのドキュメントマーシャリングストラテジーは org.jbpm.document.marshalling.DocumentMarshallingStrategy です。このストラテジーでは、PROJECT_HOME/.docs ディレクトリーにドキュメントをローカルに保存する DocumentStorageServiceImpl クラスを使用します。Business Central または kie-deployment-descriptor.xml ファイルのプロジェクトに、このドキュメントマーシャリング戦略またはカスタムドキュメントマーシャリング戦略を設定できます。

手順

  1. Business Central で、MenuDesignProjects に移動します。
  2. プロジェクトを選択します。プロジェクトの Assets ウィンドウが開きます。
  3. Settings タブをクリックします。

    図14.3 設定タブ

    Selecting the settings tab
  4. DeploymentsMarshalling StrategiesAdd Marshalling Strategy をクリックします。
  5. Name フィールドにドキュメントマーシャリング戦略の識別子を入力し、Resolver のドロップダウンメニューで、対応するリゾルバータイプを選択します。

    • 1 つのドキュメントの場合: ドキュメントマーシャリング戦略として org.jbpm.document.marshalling.DocumentMarshallingStrategy を入力し、リゾルバータイプを Reflection に設定します。
    • 複数のドキュメントの場合: ドキュメントマーシャリング戦略として new org.jbpm.document.marshalling.DocumentCollectionImplMarshallingStrategy(new org.jbpm.document.marshalling.DocumentMarshallingStrategy()) を入力し、リゾルバータイプを MVEL に設定します。
    • カスタムドキュメントサポートの場合: カスタムドキュメントマーシャリング戦略の識別子を入力し、関連するリゾルバータイプを選択します。
  6. Test をクリックして、デプロイメント記述子ファイルを検証します。
  7. Deploy をクリックして、更新されたプロジェクトをビルドおよびデプロイします。

    または、Business Central を使用していない場合は、PROJECT_HOME/src/main/resources/META_INF/kie-deployment-descriptor.xml (該当する場合) に移動し、必要な <marshalling-strategies> 要素を使用してデプロイメント記述子ファイルを編集します。

  8. Save をクリックします。

複数のドキュメントのドキュメントマーシャリング戦略を使用したデプロイメント記述子ファイルの例

<deployment-descriptor
    xsi:schemaLocation="http://www.jboss.org/jbpm deployment-descriptor.xsd"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <persistence-unit>org.jbpm.domain</persistence-unit>
  <audit-persistence-unit>org.jbpm.domain</audit-persistence-unit>
  <audit-mode>JPA</audit-mode>
  <persistence-mode>JPA</persistence-mode>
  <runtime-strategy>SINGLETON</runtime-strategy>
  <marshalling-strategies>
    <marshalling-strategy>
      <resolver>mvel</resolver>
      <identifier>new org.jbpm.document.marshalling.DocumentCollectionImplMarshallingStrategy(new org.jbpm.document.marshalling.DocumentMarshallingStrategy());</identifier>
    </marshalling-strategy>
  </marshalling-strategies>

14.4.1.1. コンテンツ管理システム (CMS) でのカスタムドキュメントマーシャリング戦略の使用

プロジェクトのドキュメントマーシャリングストラテジーにより、フォームおよびプロセスで使用するドキュメントの保存場所が決まります。Red Hat Process Automation Manager のデフォルトのドキュメントマーシャリングストラテジーは org.jbpm.document.marshalling.DocumentMarshallingStrategy です。このストラテジーでは、PROJECT_HOME/.docs ディレクトリーにドキュメントをローカルに保存する DocumentStorageServiceImpl クラスを使用します。集中型のコンテンツ管理システム (CMS) などのカスタムの場所にフォームおよびプロセスドキュメントを保存する場合は、カスタムドキュメントマーシャリング戦略をプロジェクトに追加します。このドキュメントマーシャリング戦略は、Business Central または kie-deployment-descriptor.xml ファイルで直接設定できます。

手順

  1. org.kie.api.marshalling.ObjectMarshallingStrategy インターフェースの実装を含むカスタムマーシャリング戦略 .java ファイルを作成します。このインターフェースを使用すると、カスタムドキュメントマーシャリング戦略に必要な変数の永続性を実装できます。

    このインターフェースの以下のメソッドは、戦略の作成に役立ちます。

    • boolean accept(Object object): 指定されたオブジェクトを戦略でマーシャリングできるかどうかを決定します。
    • byte[] marshal(Context context, ObjectOutputStream os, Object object): 指定されたオブジェクトをマーシャリングし、マーシャリングされたオブジェクトを byte[] として返します。
    • Object unmarshal(Context context, ObjectInputStream is, byte[] object, ClassLoader classloader): 受信したオブジェクトを byte[] として読み取り、マーシャリングされていないオブジェクトを返します。
    • void write(ObjectOutputStream os, Object object): 下位互換性のために提供されている marshal メソッドと同じです。
    • Object read(ObjectInputStream os): 下位互換性のために提供されている unmarshal メソッドと同じです。

    以下のコードサンプルは、コンテンツ管理相互運用サービス (CMIS) システムからデータを保存および取得するための ObjectMarshallingStrategy 実装例です。

    CMIS システムからデータを保存および取得するための実装例

    package org.jbpm.integration.cmis.impl;
    
    import java.io.ByteArrayInputStream;
    import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;
    import java.util.HashMap;
    
    import org.apache.chemistry.opencmis.client.api.Folder;
    import org.apache.chemistry.opencmis.client.api.Session;
    import org.apache.chemistry.opencmis.commons.data.ContentStream;
    import org.apache.commons.io.IOUtils;
    import org.drools.core.common.DroolsObjectInputStream;
    import org.jbpm.document.Document;
    import org.jbpm.integration.cmis.UpdateMode;
    
    import org.kie.api.marshalling.ObjectMarshallingStrategy;
    
    public class OpenCMISPlaceholderResolverStrategy extends OpenCMISSupport implements ObjectMarshallingStrategy {
    
    	private String user;
    	private String password;
    	private String url;
    	private String repository;
    	private String contentUrl;
    	private UpdateMode mode = UpdateMode.OVERRIDE;
    
    	public OpenCMISPlaceholderResolverStrategy(String user, String password, String url, String repository) {
    		this.user = user;
    		this.password = password;
    		this.url = url;
    		this.repository = repository;
    	}
    
    	public OpenCMISPlaceholderResolverStrategy(String user, String password, String url, String repository, UpdateMode mode) {
    		this.user = user;
    		this.password = password;
    		this.url = url;
    		this.repository = repository;
    		this.mode = mode;
    	}
    
    	   public OpenCMISPlaceholderResolverStrategy(String user, String password, String url, String repository, String contentUrl) {
    	        this.user = user;
    	        this.password = password;
    	        this.url = url;
    	        this.repository = repository;
    	        this.contentUrl = contentUrl;
    	    }
    
    	    public OpenCMISPlaceholderResolverStrategy(String user, String password, String url, String repository, String contentUrl, UpdateMode mode) {
    	        this.user = user;
    	        this.password = password;
    	        this.url = url;
    	        this.repository = repository;
    	        this.contentUrl = contentUrl;
    	        this.mode = mode;
    	    }
    
    	public boolean accept(Object object) {
    		if (object instanceof Document) {
    			return true;
    		}
    		return false;
    	}
    
    	public byte[] marshal(Context context, ObjectOutputStream os, Object object) throws IOException {
    		Document document = (Document) object;
    		Session session = getRepositorySession(user, password, url, repository);
    		try {
    			if (document.getContent() != null) {
    				String type = getType(document);
    				if (document.getIdentifier() == null || document.getIdentifier().isEmpty()) {
    					String location = getLocation(document);
    
    					Folder parent = findFolderForPath(session, location);
    					if (parent == null) {
    						parent = createFolder(session, null, location);
    					}
    					org.apache.chemistry.opencmis.client.api.Document doc = createDocument(session, parent, document.getName(), type, document.getContent());
    					document.setIdentifier(doc.getId());
    					document.addAttribute("updated", "true");
    				} else {
    					if (document.getContent() != null && "true".equals(document.getAttribute("updated"))) {
    						org.apache.chemistry.opencmis.client.api.Document doc = updateDocument(session, document.getIdentifier(), type, document.getContent(), mode);
    
    						document.setIdentifier(doc.getId());
    						document.addAttribute("updated", "false");
    					}
    				}
    			}
    			ByteArrayOutputStream buff = new ByteArrayOutputStream();
    	        ObjectOutputStream oos = new ObjectOutputStream( buff );
    	        oos.writeUTF(document.getIdentifier());
    	        oos.writeUTF(object.getClass().getCanonicalName());
    	        oos.close();
    	        return buff.toByteArray();
    		} finally {
    			session.clear();
    		}
    	}
    
    	public Object unmarshal(Context context, ObjectInputStream ois, byte[] object, ClassLoader classloader) throws IOException, ClassNotFoundException {
    		DroolsObjectInputStream is = new DroolsObjectInputStream( new ByteArrayInputStream( object ), classloader );
    		String objectId = is.readUTF();
    		String canonicalName = is.readUTF();
    		Session session = getRepositorySession(user, password, url, repository);
    		try {
    			org.apache.chemistry.opencmis.client.api.Document doc = (org.apache.chemistry.opencmis.client.api.Document) findObjectForId(session, objectId);
    			Document document = (Document) Class.forName(canonicalName).newInstance();
    			document.setAttributes(new HashMap<String, String>());
    
    			document.setIdentifier(objectId);
    			document.setName(doc.getName());
    			document.setLastModified(doc.getLastModificationDate().getTime());
    			document.setSize(doc.getContentStreamLength());
    			document.addAttribute("location", getFolderName(doc.getParents()) + getPathAsString(doc.getPaths()));
    			if (doc.getContentStream() != null && contentUrl == null) {
    				ContentStream stream = doc.getContentStream();
    				document.setContent(IOUtils.toByteArray(stream.getStream()));
    				document.addAttribute("updated", "false");
    				document.addAttribute("type", stream.getMimeType());
    			} else {
    			    document.setLink(contentUrl + document.getIdentifier());
    			}
    			return document;
    		} catch(Exception e) {
    			throw new RuntimeException("Cannot read document from CMIS", e);
    		} finally {
    			is.close();
    			session.clear();
    		}
    	}
    
    	public Context createContext() {
    		return null;
    	}
    
    	// For backward compatibility with previous serialization mechanism
    	public void write(ObjectOutputStream os, Object object) throws IOException {
    		Document document = (Document) object;
    		Session session = getRepositorySession(user, password, url, repository);
    		try {
    			if (document.getContent() != null) {
    				String type = document.getAttribute("type");
    				if (document.getIdentifier() == null) {
    					String location = document.getAttribute("location");
    
    					Folder parent = findFolderForPath(session, location);
    					if (parent == null) {
    						parent = createFolder(session, null, location);
    					}
    					org.apache.chemistry.opencmis.client.api.Document doc = createDocument(session, parent, document.getName(), type, document.getContent());
    					document.setIdentifier(doc.getId());
    					document.addAttribute("updated", "false");
    				} else {
    					if (document.getContent() != null && "true".equals(document.getAttribute("updated"))) {
    						org.apache.chemistry.opencmis.client.api.Document doc = updateDocument(session, document.getIdentifier(), type, document.getContent(), mode);
    
    						document.setIdentifier(doc.getId());
    						document.addAttribute("updated", "false");
    					}
    				}
    			}
    			ByteArrayOutputStream buff = new ByteArrayOutputStream();
    	        ObjectOutputStream oos = new ObjectOutputStream( buff );
    	        oos.writeUTF(document.getIdentifier());
    	        oos.writeUTF(object.getClass().getCanonicalName());
    	        oos.close();
    		} finally {
    			session.clear();
    		}
    	}
    
    	public Object read(ObjectInputStream os) throws IOException, ClassNotFoundException {
    		String objectId = os.readUTF();
    		String canonicalName = os.readUTF();
    		Session session = getRepositorySession(user, password, url, repository);
    		try {
    			org.apache.chemistry.opencmis.client.api.Document doc = (org.apache.chemistry.opencmis.client.api.Document) findObjectForId(session, objectId);
    			Document document = (Document) Class.forName(canonicalName).newInstance();
    
    			document.setIdentifier(objectId);
    			document.setName(doc.getName());
    			document.addAttribute("location", getFolderName(doc.getParents()) + getPathAsString(doc.getPaths()));
    			if (doc.getContentStream() != null) {
    				ContentStream stream = doc.getContentStream();
    				document.setContent(IOUtils.toByteArray(stream.getStream()));
    				document.addAttribute("updated", "false");
    				document.addAttribute("type", stream.getMimeType());
    			}
    			return document;
    		} catch(Exception e) {
    			throw new RuntimeException("Cannot read document from CMIS", e);
    		} finally {
    			session.clear();
    		}
    	}
    
    }

  2. Business Central で、MenuDesignProjects に移動します。
  3. プロジェクトの名前をクリックしてから、Settings をクリックします。

    図14.4 設定タブ

    Selecting the settings tab
  4. DeploymentsMarshalling StrategiesAdd Marshalling Strategy をクリックします。
  5. Name フィールドに、この例の org.jbpm.integration.cmis.impl.OpenCMISPlaceholderResolverStrategy のように、カスタムドキュメントマーシャリング戦略の識別子を入力します。
  6. この例の Reflection のように、Resolver ドロップダウンメニューから関連オプションを選択します。
  7. Test をクリックして、デプロイメント記述子ファイルを検証します。
  8. Deploy をクリックして、更新されたプロジェクトをビルドおよびデプロイします。

    または、Business Central を使用していない場合は、PROJECT_HOME/src/main/resources/META_INF/kie-deployment-descriptor.xml (該当する場合) に移動し、必要な <marshalling-strategies> 要素を使用してデプロイメント記述子ファイルを編集します。

    カスタムドキュメントマーシャリング戦略を使用したデプロイメント記述子ファイルの例

    <deployment-descriptor
        xsi:schemaLocation="http://www.jboss.org/jbpm deployment-descriptor.xsd"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <persistence-unit>org.jbpm.domain</persistence-unit>
      <audit-persistence-unit>org.jbpm.domain</audit-persistence-unit>
      <audit-mode>JPA</audit-mode>
      <persistence-mode>JPA</persistence-mode>
      <runtime-strategy>SINGLETON</runtime-strategy>
      <marshalling-strategies>
        <marshalling-strategy>
          <resolver>reflection</resolver>
          <identifier>
            org.jbpm.integration.cmis.impl.OpenCMISPlaceholderResolverStrategy
          </identifier>
        </marshalling-strategy>
      </marshalling-strategies>

  9. カスタムの場所に保存されたドキュメントをフォームおよびプロセスにアタッチできるようにするには、関連するプロセスでドキュメント変数を作成し、Business Central でそのドキュメント変数にタスクの入力と出力をマッピングします。

14.4.2. ビジネスプロセスでのドキュメント変数の作成

ドキュメントマーシャリング戦略を設定したら、関連プロセスでドキュメント変数を作成して、ドキュメントをヒューマンタスクにアップロードし、Business Central の Process Instances ビューにドキュメントを表示できるようにします。

前提条件

手順

  1. Business Central で、MenuDesignProjects に移動します。
  2. プロジェクト名をクリックしてアセットビューを開き、ビジネスプロセス名をクリックします。
  3. キャンバスをクリックし、ウィンドウの右側にある diagram properties をクリックし、Diagram properties パネルを開きます。
  4. Process Data を展開し、 6176 をクリックして、以下の値を入力します。

    • Name: document
    • Custom Type: 1 つのドキュメントの場合は org.jbpm.document.Document、複数のドキュメントの場合は org.jbpm.document.DocumentCollection

14.4.3. ドキュメント変数へのタスクの入力と出力のマッピング

タスクフォーム内の添付ファイルを表示または変更する場合は、タスクの入力および出力の中に割り当てを作成します。

前提条件

  • 1 つ以上のユーザータスクを持つビジネスプロセスアセットを含むプロジェクトがある。

手順

  1. Business Central で、MenuDesignProjects に移動します。
  2. プロジェクト名をクリックしてアセットビューを開き、ビジネスプロセス名をクリックします。
  3. ユーザータスクをクリックし、ウィンドウの右側にある diagram properties をクリックし、Properties パネルを開きます。
  4. Implementation/Execution を展開し、Assignments の横の btn assign をクリックして、Data I/O ウィンドウを開きます。
  5. Data Inputs and Assignments の横の Add をクリックして、以下の値を入力します。

    • Name: taskdoc_in
    • Data Type: 1 つのドキュメントの場合は org.jbpm.document.Document で、複数のドキュメントの場合は org.jbpm.document.DocumentCollection
    • Source: document
  6. Data Outputs and Assignments の横の Add をクリックし、以下の値を入力します。

    • Name: taskdoc_out
    • Data Type: 1 つのドキュメントの場合は org.jbpm.document.Document で、複数のドキュメントの場合は org.jbpm.document.DocumentCollection
    • Target: document

    Source および Target フィールドには、前に作成したプロセス変数の名前が含まれています。

  7. Save をクリックします。

第15章 詳細にわたるプロセスの概念およびタスク

15.1. ビジネスプロセスで Decision Model and Notation (DMN) サービスを呼び出す

Decision Model and Notation (DMN) を使用して、Business Central の意思決定要件ダイアグラム (DRD) でデシジョンサービスを描画を使ってモデル化し、Business Central のビジネスプロセスの一環としてそのDMN サービスを呼び出すことができます。ビジネスプロセスは、DMN サービスを識別し、DMN 入力とビジネスプロセスプロパティー間でビジネスデータをマッピングすることにより、DMN サービスと対話します。

例として、この手順では、列車の経路ロジックを定義する TrainStation プロジェクトの例を使用します。このサンプルプロジェクトには、経路決定ロジック用に Business Central で設計された以下のデータオブジェクトと DMN コンポーネントが含まれています。

Train オブジェクトの例

public class Train {

     private String departureStation;

     private String destinationStation;

     private BigDecimal railNumber;

     // Getters and setters
}

図15.1 Compute Rail DMN モデルの例

dmn execution graph

図15.2 Rail DMN デシジョンテーブルの例

dmn execution expression

図15.3 tTrain DMN データタイプの例

dmn execution data type

Business Central での DMN モデルの作成方法に関する詳細は、『 DMN モデルを使用したデシジョンサービスの作成』を参照してください

前提条件

  • 必要なすべてのデータオブジェクトと DMN モデルコンポーネントは、プロジェクトで定義済みである。

手順

  1. Business Central で、MenuDesignProjects に移動して、プロジェクト名をクリックします。
  2. DMN サービスを呼び出すビジネスプロセスアセットを選択または作成します。
  3. プロセスデザイナーで、左側のツールバーを使用して通常どおりに BPMN コンポーネントをドラッグアンドドロップし、ビジネスプロセスロジック、接続、イベント、タスク、またはその他の要素全体を定義します。
  4. ビジネスプロセスに DMN サービスを組み込むには、左側のツールバーまたは開始ノードオプションから Business Rule タスクを追加し、プロセスフローの関連する場所にタスクを挿入します。

    この例では、以下の Accept Train ビジネスプロセスは、DMN サービスを Route To Rail ノードに組み込みます。

    図15.4 DMN サービスを使用した Accept Train ビジネスプロセスの例

    dmn execution business process
  5. DMN サービスに使用するビジネスルールタスクノードを選択し、プロセスデザイナーの右上隅にある Properties をクリックしてから、Implementation/Execution で、以下のフィールドを定義します。

    • Rule Language: DMN を選択します。
    • Namespace: DMN モデルファイルから一意の名前空間を入力します。例: https://www.drools.org/kie-dmn
    • Decision Name: 選択したプロセスノードで呼び出す DMN デシジョンノードの名前を入力します。例: Rail
    • DMN Model Name: DMN モデル名を入力します。例: Compute Rail

      重要

      root ノードを使用する場合には、NamespaceDMN Model Name フィールドに DMN ダイアグラムと同じ BPMN の値で構成されるようにします。

  6. Data AssignmentsAssignments 配下で、Edit アイコンをクリックし、DMN の入力および出力データを追加して、DMN サービスとプロセスデータ間のマッピングを定義します。

    この例の Route To Rail DMN サービスノードの場合、DMN モデルの入力ノードに対応する Train の入力割り当てを追加し、DMN モデルのデシジョンノードに対応する Rail の出力割り当てを追加します。Data Type は、DMN モデルでそのノードに設定したタイプに一致する必要があり、Source および Target の定義は、指定されたオブジェクトに関連する変数またはフィールドです。

    図15.5 Route To Rail DMN サービスノードの入力および出力マッピングの例

    dmn execution io mapping
  7. Save をクリックして、入力データおよび出力データを保存します。
  8. 完了した DMN サービスの処理方法に応じて、ビジネスプロセスの残りを定義します。

    この例では、PropertiesImplementation/ExecutionOn Exit Action の値が以下のコードに設定され、Route To Rail DMN サービスの完了後にレール番号を保存します。

    On Exit Action のサンプルコード

    train.setRailNumber(rail);

    レール番号が計算されない場合は、プロセスは、以下の条件式で定義された No Appropriate Rail 終了エラーノードに到達します。

    図15.6 No Appropriate Rail 終了エラーノードの条件の例

    dmn execution negative condition

    レール番号が計算されると、プロセスは、以下の条件式で定義された Accept Train スクリプトタスクに到達します。

    図15.7 Accept Train スクリプトタスクノードの条件の例

    dmn execution positive condition

    Accept Train スクリプトタスクは、PropertiesImplementation/ExecutionScript で、以下のスクリプトも使用して、列車のルートと現在のレールに関するメッセージを出力します。

    com.myspace.trainstation.Train t =
        (com.myspace.trainstation.Train) kcontext.getVariable("train");
    System.out.println("Train from: " + t.getDepartureStation() +
                       ", to: " + t.getDestinationStation() +
                       ",  is on rail: " + t.getRailNumber());
  9. 組み込まれた DMN サービスでビジネスプロセスを定義した後、プロセスデザイナーでプロセスを保存してプロジェクトをデプロイし、対応するプロセス定義を実行して DMN サービスを呼び出します。

    この例では、TrainStation プロジェクトをデプロイし、対応するプロセス定義を実行する際に、Accept Train プロセス定義のプロセスインスタンスフォームを開いて departure station フィールドおよび destination station フィールドを設定し、実行をテストします。

    図15.8 Accept Train プロセス定義のプロセスインスタンスフォームの例

    dmn execution process instance form

    プロセスが実行されると、サーバーログに指定した列車のルートを示すメッセージが表示されます。

    Accept Train プロセスのサーバーログ出力の例

    Train from: Zagreb, to: Belgrade,  is on rail: 1

第16章 関連情報

パート II. プロセスおよびタスクとの対話

ナレッジワーカーは、Red Hat Process Automation Manager で Business Central を使用して、シチズンデベロッパーが開発したビジネスプロセスアプリケーションのプロセスやタスクを実行します。ビジネスプロセスとは、プロセスフローで定義されているとおりに、実行する一連の手順のことです。プロセスとタスクを効率的に対話するには、ビジネスプロセスを明確に理解し、プロセスまたはタスクの現在の手順が何かを判断できなければなりません。タスクの開始、停止、タスクおよびプロセスインスタンスの検索およびフィルタリング、タスクへのコメントの追加や表示、タスクの履歴ログの表示などができます。

前提条件

第17章 Business Central のビジネスプロセス

Business Central では、シチズンデベロッパーが作成したビジネスプロセスアプリケーションは、ビジネスプロセスのフローを一連のステップとして表します。各ステップは、プロセスのフローチャートに従って実行されます。プロセスは、小さい個別タスク 1 つまたは複数で構成されます。ナレッジワーカーが、ビジネスプロセスの実行時に発生するプロセスおよびタスクに取り組みます。

たとえば、Red Hat Process Automation Manager を使用して、金融機関の住宅ローン部門が住宅ローンのビジネスプロセスをすべて自動化できます。新しい住宅ローンの依頼が入ると、住宅ローンアプリケーションに新しいプロセスインスタンスが作成されます。要求はすべて、同じルールセットに従い処理されるので、全ステップで一貫性が確保されます。これにより、処理時間と労力を削減する効率的なプロセスが実現されます。

17.1. ナレッジワーカーのユーザー

金融機関で住宅ローンの依頼を処理する顧客アカウント担当者の例を考えてみましょう。顧客アカウント担当者は、次のタスクを実行できます。

  • 住宅ローンの依頼を承認および拒否する
  • 依頼を検索およびフィルタリングする
  • 依頼を委任、要求、およびリリースする
  • 依頼の期日と優先順位を設定する
  • 依頼を表示してコメントを追加する
  • 依頼の履歴ログを表示する

第18章 Business Central でのナレッジワーカーのタスク

タスクは、特定のユーザーがー要求して実行できるビジネスプロセスフローの一部を指します。タスクの処理は、Business Central の MenuTrackTask Inbox から行います。タスク受信箱には、ログイン中のユーザーのタスクリストが表示されます。タスクは、特定のユーザー、複数のユーザー、ユーザーのグループに割り当てることができます。タスクが複数のユーザーがユーザーグループに割り当てられる場合には、全ユーザーのタスクリストに表示され、誰でもそのタスクを要求できます。タスクがユーザーから要求された場合には、他のユーザーのタスクリストからそのタスクが削除されます。

18.1. タスクの開始

Business Central の MenuManageTasks および MenuTrackTask Inbox でユーザータスクを開始できます。

注記

ログインされていること、タスクの開始/停止の適切な権限が割り当てられていることを確認してください。

手順

  1. Business Central で MenuTrackTask Inbox に移動します。
  2. Task Inbox ページで、タスクをクリックして開きます。
  3. タスクページの Work タブで、Start をクリックします。タスクを開始したら、タスクのステータスが InProgress に変わります。

    タスクのステータスは、Task InboxManage Tasks ページで、確認できます。

注記

process-admin ロールが割り当てられたユーザーのみが、Manage Tasks ページのタスク一覧を表示できます。admin ロールを持つユーザーは、Manage Tasks ページにアクセスできますが、空のタスクリストのみが表示されます。

18.2. タスクの停止

Tasks および Task Inbox ページからユーザータスクを停止できます。

手順

  1. Business Central で MenuTrackTask Inbox に移動します。
  2. Task Inbox ページで、タスクをクリックして開きます。
  3. タスクページの Work タブで、Complete をクリックします。

18.3. タスクの委譲

Business Central でタスクを作成したら、他のユーザーにタスクを委譲できます。

注記

ロールを割り当てられたユーザーは、そのユーザーに表示されているタスクを委譲、要求またはリリースできます。Task Inbox ページの Actual Owner 列には、対象のタスクの現在の所有者名が表示されます。

手順

  1. Business Central で MenuTrackTask Inbox に移動します。
  2. Task Inbox ページで、タスクをクリックして開きます。
  3. タスクページで、Assignments タブをクリックします。
  4. User フィールドに、タスクを委譲するユーザーまたはグループの名前を入力します。
  5. Delegate をクリックします。タスクが委譲されたら、タスクの所有者が変更されます。

18.4. タスクの要求

Business Central でタスクを作成した後には、リリースされたタスクを要求できます。ユーザーは、自分が所属するグループに、タスクが割り当てられている場合にのみ、Task Inbox ページからタスクを要求できます。

手順

  1. Business Central で MenuTrackTask Inbox に移動します。
  2. Task Inbox ページで、タスクをクリックして開きます。
  3. タスクページの Work タブで、Claim をクリックします。
  4. リリースされたタスクを Task Inbox ページから要求するには、次のタスクのいずれかを実行します。

    • Actions 列の 3 つの点をクリックし、Claim を選択します。
    • Actions 列の 3 つの点をクリックし、Claim and Work を選択してタスクの詳細を表示、確認、変更します。

タスクを要求したユーザーがタスクの所有者になります。

18.5. タスクのリリース

Business Central でタスクを作成したら、他のユーザーが要求できるように、タスクをリリースできます。

手順

  1. Business Central で MenuTrackTask Inbox に移動します。
  2. Task Inbox ページで、タスクをクリックして開きます。
  3. タスクページで、Release をクリックします。リリースされたタスクには所有者が割り当てられていません。

18.6. タスクの一括アクション

Business Central の Tasks および Task Inbox ページでは、1 回の操作で複数のタスクに対して一括アクションを実行できます。

注記

指定された一括アクションがタスクステータスに基づいて許可されていない場合は、通知が表示され、そのタスクでは操作は実行されません。

18.6.1. タスクを一括で要求する

Business Central でタスクを作成した後、使用可能なタスクを一括して要求できます。

手順

  1. Business Central で、以下のいずれかの手順を実行します。

    • MenuTrackTask Inbox の順に選択すると、Task Inbox ページが表示されます。
    • MenuManageTasks の順に選択すると、Tasks ページが表示されます。
  2. タスクを一括して請求するには、Task Inbox ページまたは Manage Tasks ページで、Task テーブルから 2 つ以上のタスクを選択します。
  3. Bulk Actions ドロップダウンリストから、Bulk Claim を選択します。
  4. 確認するには、Claim selected tasks ウィンドウで、Claim をクリックします。

選択したタスクごとに、結果を示す通知が表示されます。

18.6.2. タスクを一括でリリースする

所有しているタスクを一括してリリースし、他のユーザーが要求できるようにすることができます。

手順

  1. Business Central で、以下のいずれかの手順を実行します。

    • MenuTrackTask Inbox の順に選択すると、Task Inbox ページが表示されます。
    • MenuManageTasks の順に選択すると、Tasks ページが表示されます。
  2. タスクを一括してリリースするには、Task Inbox ページまたは Manage Tasks ページで、Task テーブルから 2 つ以上のタスクを選択します。
  3. Bulk Actions のドロップダウンリストから、Bulk Releaseを選択します。
  4. 確認するには、Release selected tasks ウィンドウで、Release をクリックします。

選択したタスクごとに、結果を示す通知が表示されます。

18.6.3. タスクを一括で再開する

Business Central に一時停止されたタスクがある場合は、それらを一括して再開できます。

手順

  1. Business Central で、以下のいずれかの手順を実行します。

    • MenuTrackTask Inbox の順に選択すると、Task Inbox ページが表示されます。
    • MenuManageTasks の順に選択すると、Tasks ページが表示されます。
  2. タスクを一括して再開するには、Task Inbox ページまたは Manage Tasks ページで、Task テーブルから 2 つ以上のタスクを選択します。
  3. Bulk Actions のドロップダウンリストから、Bulk Resume を選択します。
  4. 確認するには、Resume selected tasks ウィンドウで Resume をクリックします。

選択したタスクごとに、結果を示す通知が表示されます。

18.6.4. タスクを一括で一時停止する

Business Central でタスクを作成した後、タスクを一括して一時停止できます。

手順

  1. Business Central で、以下のいずれかの手順を実行します。

    • MenuTrackTask Inbox の順に選択すると、Task Inbox ページが表示されます。
    • MenuManageTasks の順に選択すると、Tasks ページが表示されます。
  2. タスクを一括して一時停止するには、Task Inbox ページまたは Manage Tasks ページで、Task テーブルから 2 つ以上のタスクを選択します。
  3. Bulk Actions のドロップダウンリストから、Bulk Suspend を選択します。
  4. 確認するには、Suspend selected tasks ウィンドウで Suspend をクリックします。

選択したタスクごとに、結果を示す通知が表示されます。

18.6.5. タスクを一括で再割り当てする

Business Central でタスクを作成した後、タスクを一括して再割り当てし、他のユーザーに委任できます。

手順

  1. Business Central で、以下のいずれかの手順を実行します。

    • MenuTrackTask Inbox の順に選択すると、Task Inbox ページが表示されます。
    • MenuManageTasks の順に選択すると、Tasks ページが表示されます。
  2. タスクを一括して再割り当てするには、Task Inbox ページまたは Manage Tasks ページで、Task テーブルから 2 つ以上のタスクを選択します。
  3. Bulk Actions のドロップダウンリストから、Bulk Reassign を選択します。
  4. Tasks reassignment ウィンドウで、タスクを再割り当てするユーザーのユーザー ID を入力します。
  5. Delegate をクリックします。

選択したタスクごとに、結果を示す通知が表示されます。

第19章 Business Central でのタスクのフィルタリング

Business Central には、タスクの検索ができるように、フィルター機能が含まれています。StatusFilter ByProcess Definition Id および Created On などの属性でタスクをフィルタリングできます。Advanced Filters オプションを使用して、カスタムのタスクフィルターを作成することもできます。新規作成されたカスタムのフィルターが、Saved Filters ペインに追加されます。このペインにはTask Inbox ページの左側にある星のアイコンをクリックしてアクセスできます。

19.1. タスクリストの列の管理

Task Inbox および Manage Tasks ウィンドウのタスクリストで、表示する列を指定し、列の順序を変更してタスク情報をより適切に管理することができます。

注記

process-admin ロールが割り当てられたユーザーのみが、Manage Tasks ページのタスク一覧を表示できます。admin ロールを持つユーザーは、Manage Tasks ページにアクセスできますが、空のタスクリストのみが表示されます。

手順

  1. Business Central で MenuManageTasks に移動するか、MenuTrackTask Inbox に移動します。
  2. Manage Task または Task Inbox ページで、Bulk Actions の右側にある Show/hide columns アイコンをクリックします。
  3. 表示する列を選択または選択解除します。リストに変更を加えると、タスクリストの列が表示されたり、消えたりします。
  4. 列を再配置するには、列のヘディングを新しい位置にドラッグします。列をドラッグする前に、ポインターを以下の図に示すアイコンに変更する必要があることに注意してください。

    column icon
  5. 変更をフィルターとして保存するには、Save Filters をクリックして名前を入力し、Save をクリックします。
  6. 新しいフィルターを使用するには、画面左側にあるSaved Filters アイコン (スター) をクリックし、リストからフィルターを選択します。

19.2. 基本的なフィルターを使用したタスクのフィルタリング

Business Central には、StatusFilter ByProcess Definition Id および Created On などの属性をもとに、タスクのフィルタリングや検索を行う基本的なフィルタリング機能が含まれています。

手順

  1. Business Central で MenuTrackTask Inbox に移動します。
  2. Task Inbox ページの左側にあるフィルターアイコンをクリックして、Filters ペインを展開し、使用するフィルターを選択します。

    • Status: ステータスをもとにタスクをフィルタリングします。
    • Filter By: IdTaskCorrelation KeyActual Owner または Process Instance Description 属性をもとにタスクをフィルタリングします。
    • Process Definition Id: プロセス定義 ID をもとにタスクをフィルタリングします。
    • Created On: 作成日をもとにタスクをフィルタリングします。

Advanced Filters オプションを使用して、Business Central でカスタムフィルターを作成できます。

19.3. 詳細フィルターを使用したタスクのフィルタリング

Business Central で Advanced Filters オプションを使用して、カスタムタスクフィルターを作成できます。

手順

  1. Business Central で MenuTrackTask Inbox に移動します。
  2. Task Inbox ページの左側にある詳細フィルターアイコンをクリックして、Advanced Filters ペインを展開します。
  3. Advanced Filters パネルで、フィルター名と説明を入力して、Add New をクリックします。
  4. Select column ドロップダウンリストから Name などの属性を選択します。ドロップダウンの内容が Name != value1 に変わります。
  5. もう一度ドロップダウンをクリックして、必要な論理クエリーを選択します。Name 属性については、equals to を選択してください。
  6. フィルタリングするタスク名の横にあるテキストフィールドの値を変更します。

    注記

    名前は、プロジェクトのビジネスプロセスで定義した値と一致させる必要があります。

  7. Save をクリックして、フィルター定義に従い、タスクをフィルタリングします。
  8. 星のアイコンをクリックして、Saved Filters ペインを開きます。

    Saved Filters ペインで、保存した詳細フィルターを表示できます。

19.4. デフォルトのフィルターを使用したタスクの管理

Business Central の Saved Filter オプションを使用して、タスクフィルターをデフォルトフィルターとして設定できます。ユーザーがページを開くたびにデフォルトのフィルタリングが実行されます。

手順

  1. Business Central で MenuTrackTask Inbox に移動するか、MenuManageTasks に移動します。
  2. Task Inbox ページまたは、Manage Tasks ページの左側にある星アイコンをクリックして、Saved Filters パネルを展開します。

    Saved Filters パネルで、保存した詳細フィルターを表示できます。

    Tasks または Task Inbox のデフォルトフィルターのオプション

    Default filter selection for Tasks or Task Inbox

  3. Saved Filters パネルで、保存したタスクフィルターを、デフォルトのフィルターとして設定します。

19.5. 基本的なフィルターを使用したタスク変数の表示

Business Central には基本フィルターがあり、Manage Tasks および Task Inbox のタスク変数を表示できます。タスクのタスク変数は、Show/hide columns を使用し列として表示できます。

手順

  1. Business Central で MenuManageTasks に移動するか、MenuTrackTask Inbox に移動します。
  2. Task Inbox ページの左側にあるフィルターアイコンをクリックして、Filters パネルを展開します。
  3. Filters パネルを選択し、Task Name をクリックします。

    フィルターは現在のタスクリストに適用されます。

  4. タスクリストの右上にある Show/hide columns をクリックすると、指定のタスク ID のタスク変数が表示されます。
  5. 星のアイコンをクリックして、Saved Filters パネルを開きます。

    Saved Filters パネルで、保存した詳細フィルターをすべて表示できます。

19.6. 詳細フィルターを使用したタスク変数の表示

Business Central の Advanced Filters オプションを使用して Manage TasksTask Inbox のタスク変数を表示できます。タスクを定義したフィルターを作成すると、Show/hide columns でタスクのタスク変数を列として表示できます。

手順

  1. Business Central で MenuManageTasks に移動するか、MenuTrackTask Inbox に移動します。
  2. Manage Tasks ページまたは、Task Inbox ページの詳細フィルターアイコンをクリックして、Advanced Filters パネルを展開します。
  3. Advanced Filters パネルで、フィルターの名前と説明を入力して、Add New をクリックします。
  4. Select column リストから name 属性を選択します。この値は、name != value1 に変わります。
  5. Select column リストから論理クエリーに equals to を選択します。
  6. テキストフィールドに、タスク名を入力します。
  7. Save をクリックして、フィルターを現在のタスクリストに適用します。
  8. タスクリストの右上にある Show/hide columns をクリックすると、指定のタスク ID のタスク変数が表示されます。
  9. 星のアイコンをクリックして、Saved Filters パネルを開きます。

    Saved Filters パネルで、保存した詳細フィルターをすべて表示できます。

第20章 Business Central でのプロセスインスタンスのフィルタリング

Business Central には、プロセスインスタンスの検索とフィルターができるように、基本フィルターと詳細フィルターが追加されました。StateErrorsFilter ByNameStart Date および Last update などの属性でプロセスをフィルタリングできます。Advanced Filters オプションを使用してカスタムのフィルターを作成することも可能です。新規作成したカスタムフィルターは Saved Filters ペインに追加されます。このペインには、Manage Process Instances ページの左側にある星のアイコンをクリックしてアクセスできます。

注記

manager または rest-all ロールが割り当てられたユーザー以外はすべて、Business Central でプロセスインスタンスにアクセスしてフィルタリング機能を使用できます。

20.1. 基本フィルターを使用したプロセスインスタンスのフィルタリング

Business Central には、StateErrorsFilter ByNameStart Date および Last update などの属性をもとにフィルタリングして検索する基本フィルター機能が含まれます。

手順

  1. Business Central で、MenuManageProcess Instances に移動します。
  2. Manage Process Instances ページで、ページの左側にあるフィルターアイコンをクリックして、Filters ペインを展開して、使用するフィルターを選択します。

    • State: 状態をもとにプロセスインスタンスをフィルタリングします (ActiveAbortedCompletedPending、および Suspended)。
    • Errors: 最低エラーが 1 つ含まれるプロセスインスタンス、またはエラーが含まれないプロセスインスタンスをフィルタリングします。
    • Filter By: IdInitiatorCorrelation Key、または Description 属性をもとにプロセスインスタンスをフィルタリングします。
    • Name: プロセス定義名をもとにプロセスインスタンスをフィルタリングします。
    • Definition ID: インスタンス定義の ID。
    • Deployment ID: インスタンスデプロイメントの ID。
    • SLA Compliance: SLA コンプライアンスのステータス (AbortedMetN/APending、および Violated)。
    • Parent Process ID: 親プロセスインスタンスの ID です。
    • Start Date: 作成日をもとにプロセスインスタンスをフィルタリングします。
    • Last update: 最終変更日をもとにプロセスインスタンスをフィルタリングします。

Advanced Filters オプションを使用して、Business Central でカスタムフィルターを作成することもできます。

20.2. 詳細フィルターを使用したプロセスインスタンスのフィルタリング

Business Central で Advanced Filters オプションを使用して、カスタムプロセスインスタンスフィルターを作成できます。

手順

  1. Business Central で、MenuManageProcess Instances の順にクリックします。
  2. Manage Process Instances ページで、Advanced Filters をクリックします。
  3. Advanced Filters ペインで、フィルターの名前と説明を入力して、Add New をクリックします。
  4. Select column ドロップダウンリストから processName などの属性を選択します。ドロップダウンの内容が processName != value1 に変わります。
  5. もう一度ドロップダウンをクリックして、必要な論理クエリーを選択します。processName 属性については、equals to を選択してください。
  6. フィルタリングするプロセス名の横にあるテキストフィールドの値を変更します。

    注記

    processName は、プロジェクトのビジネスプロセスで定義した値と一致させる必要があります。

  7. Save をクリックして、フィルター定義に従い、プロセスをフィルタリングします。
  8. 星のアイコンをクリックして、Saved Filters ペインを開きます。

    Saved Filters ペインで、保存した詳細フィルターをすべて表示できます。

20.3. デフォルトのフィルターを使用したプロセスインスタンスの管理

Business Central の Saved Filter オプションを使用して、プロセスインスタンスフィルターをデフォルトフィルターとして設定できます。ユーザーがページを開くたびにデフォルトのフィルタリングが実行されます。

手順

  1. Business Central で、MenuManageProcess Instances に移動します。
  2. Manage Process Instances ページの左側にある星アイコンをクリックして、Saved Filters ペインを展開します。

    Saved Filters パネルで、保存した詳細フィルターを表示できます。

    プロセスインスタンスのデフォルトのフィルターオプション

    Default filter selection for Process Instances

  3. Saved Filters パネルで、保存したプロセスインスタンスフィルターを、デフォルトのフィルターとして設定します。

20.4. 基本フィルターを使用したプロセスインスタンス変数の表示

Business Central には、プロセスインスタンス変数を表示する基本フィルターが含まれます。プロセスのプロセスインスタンス変数は、Show/hide columns を使用して列として表示できます。

手順

  1. Business Central で、MenuManageProcess Instances に移動します。
  2. Manage Process Instances ページの左側にあるフィルターアイコンをクリックして、Filters パネルを展開します。
  3. Filters パネルを選択し、Definition Id をクリックします。

    フィルターは、現在のプロセスインスタンスリストに適用されます。

  4. プロセスインスタンスリストの右上にある Show/hide columns をクリックすると、指定のプロセスインスタンス ID のプロセスインスタンス変数が表示されます。
  5. 星のアイコンをクリックして、Saved Filters パネルを開きます。

    Saved Filters パネルで、保存した詳細フィルターをすべて表示できます。

20.5. 詳細フィルターを使用したプロセスインスタンス変数の表示

Business Central の Advanced Filters オプションを使用して、プロセスインスタンス変数を表示できます。processId の列のフィルターを作成した場合には、Show/hide columns を使用してプロセスのプロセスインスタンス変数を列として表示できます。

手順

  1. Business Central で、MenuManageProcess Instances に移動します。
  2. Manage Process Instances ページで、詳細フィルターのアイコンをクリックして Advanced Filters を展開します。
  3. Advanced Filters パネルで、フィルターの名前と説明を入力して、Add New をクリックします。
  4. Select column リストから processId 属性を選択します。この値は、processId != value1 に変わります。
  5. Select column リストから論理クエリーに equals to を選択します。
  6. テキストフィールドに、プロセス ID 名を入力します。
  7. Save をクリックして、フィルターを現在のプロセスインスタンス一覧に適用します。
  8. プロセスインスタンスリストの右上にある Show/hide columns をクリックすると、指定のプロセスインスタンス ID のプロセスインスタンス変数が表示されます。
  9. 星のアイコンをクリックして、Saved Filters パネルを開きます。

    Saved Filters パネルで、保存した詳細フィルターをすべて表示できます。

第21章 タスク通知でのメールの設定

以前のリリースでは、Business Central のユーザーまたはグループにのみ通知を送信できました。これで、メールアドレスも直接追加できるようになりました。

前提条件

Business Central でプロジェクトを作成している。

手順

  1. ビジネスプロセスを作成します。

    Business Central でのビジネスプロセスの作成に関する詳細は、5章Business Central でのビジネスプロセスの作成 を参照してください。

  2. ユーザータスクを作成します。

    Business Central でユーザータスクを作成する方法は、「ユーザータスクの作成」 を参照してください。

  3. 画面の右上隅で、Properties アイコンをクリックします。
  4. Implementation/Execution を展開し、Notifications の横にある btn assign をクリックして 通知 ウィンドウを開きます。
  5. Add をクリックします。
  6. Notifications ウィンドウで To: email(s) フィールドにメールアドレスを入力し、タスクの通知メールの受信者を設定します。

    コンマで区切られた複数のメールアドレスを追加できます。

  7. メールの件名と本文を入力します。
  8. OK をクリックします。

    追加されたメールアドレスは、Notifications ウィンドウで To: email(s) 列に表示されます。

  9. OK をクリックします。

第22章 タスクの期日と優先順位の設定

Task Inbox ページから、Business Central のタスクの優先順位、期日、および時間を設定できます。タスクの優先順位と期日の設定権限は、全ユーザーに割り当てられるわけではない点に注意してください。

手順

  1. Business Central で MenuTrackTask Inbox に移動します。
  2. Task Inbox ページで、タスクをクリックして開きます。
  3. タスクページで、Details タブをクリックします。
  4. Due Date フィールドで、カレンダーから必要な日付を選択し、ドロップダウンリストから期日を選択します。
  5. Priority フィールドで、必要な優先順位を選択します。
  6. Update をクリックします。

第23章 タスクに対するコメントの表示および追加

Business Central では、タスクにコメントを追加したり、タスクの既存のコメントを表示したりできます。

手順

  1. Business Central で MenuTrackTask Inbox に移動します。
  2. Task Inbox ページで、タスクをクリックして開きます。
  3. タスクページの Work タブまたは、Comments タブをクリックします。
  4. Comment フィールドに、タスク関連のコメントを入力し、Add Comment アイコンをクリックします。

    タスク関連のコメントはすべて、WorkComments タブにテーブル形式で表示されます。

注記

Show task comments at work tab チェックボックスを選択または選択解除するには、Business Central ホームページに移動し、Settings アイコンをクリックして、Process Administration オプションを選択します。admin ロールが割り当てられたユーザーのみが、この機能を有効または無効にするアクセス権があります。

第24章 タスクの履歴ログの表示

タスクの Logs タブから、Business Central のタスクの履歴ログを表示できます。履歴ログでは、イベントが 「日付: タスクイベント」の形式で表示されます。

手順

  1. Business Central で MenuTrackTask Inbox に移動します。
  2. Task Inbox ページで、タスクをクリックして開きます。
  3. タスクページで、Logs タブをクリックします。

    タスクのライフサイクル中に発生するイベントはすべて、Logs タブに表示されます。

第25章 プロセスインスタンスの履歴ログの表示

Logs タブで、Business Central のプロセスインスタンスの履歴ログを表示できます。ログでは、全イベントが Date Time: Event Node Type: Event Type 形式で表示されます。

Event Node Type および Event Type をもとに、ログをフィルタリングできます。また、ログでヒューマンノードの詳細を表示することもできます。

手順

  1. Business Central で、MenuManageProcess Instances に移動します。
  2. Process Instances ページで、表示するログのプロセスインスタンスをクリックします。
  3. インスタンスページで、Logs タブをクリックします。
  4. 必要に応じて、Event Node Type および Event Type ペインから必要なチェックボックスを選択して、ログをフィルタリングします。
  5. ヒューマンノードに関する追加情報を表示するには、Details を展開します。
  6. Reset をクリックして、フィルターの選択肢をデフォルトの設定に戻します。

    プロセスインスタンスのライフサイクル中に発生するイベントはすべて、Logs タブに表示されます。

パート III. Business Central でのビジネスプロセスの管理と監視

プロセス管理者は、Red Hat Process Automation Manager の Business Central を使用して、多くのプロジェクトで実行しているプロセスインスタンスとタスクを管理および監視できます。Business Central から、新しいプロセスインスタンスを開始し、全プロセスインスタンスのステータスを確認し、プロセスを中止できます。プロセスに関連するジョブとタスクの一覧を表示して、プロセスエラーを理解して対応できます。

前提条件

第26章 プロセスの監視

Red Hat Process Automation Manager は、ビジネスプロセスのリアルタイム監視を提供します。以下のことができるようになります。

  • ビジネスマネージャーは、リアルタイムでプロセスを監視できる。
  • 顧客は、要求の現在のステータスを監視できる。
  • 管理者は、プロセス実行に関するエラーを簡単に監視できる。

第27章 Business Central でのプロセス定義とプロセスインスタンス

プロセス定義は、Business Process Model and Notation (BPMN) 2.0 ファイルであり、プロセスとその BPMN ダイアグラムのコンテナーとして機能します。プロセス定義には、関連するサブプロセスや、選択した定義に参加しているユーザーとグループの数など、ビジネスプロセスに関する利用可能な情報がすべて表示されます。

プロセス定義は、プロセス定義が使用するインポートされたプロセスの import エントリー、および relationship エントリーも定義します。

プロセス定義の BPMN2 ソース

<definitions id="Definition"
               targetNamespace="http://www.jboss.org/drools"
               typeLanguage="http://www.java.com/javaTypes"
               expressionLanguage="http://www.mvel.org/2.0"
               xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"Rule Task
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
               xmlns:g="http://www.jboss.org/drools/flow/gpd"
               xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI"
               xmlns:dc="http://www.omg.org/spec/DD/20100524/DC"
               xmlns:di="http://www.omg.org/spec/DD/20100524/DI"
               xmlns:tns="http://www.jboss.org/drools">

    <process>
      PROCESS
    </process>

    <bpmndi:BPMNDiagram>
     BPMN DIAGRAM DEFINITION
    </bpmndi:BPMNDiagram>

    </definitions>

ビジネスプロセスを含むプロジェクトを作成して設定し、デプロイした後に、Business Central の MenuManageProcess Definitions ですべてのプロセス定義の一覧を確認できます。右上の更新ボタンをクリックすれば、デプロイしたプロセス定義の一覧をいつでも更新できます。

プロセス定義の一覧には、プラットフォームにデプロイした利用可能なすべてのプロセス定義が表示されます。各プロセス定義をクリックすると、対応するプロセス定義の詳細が表示されます。そのプロセスに関連するサブプロセスが存在するかどうか、プロセス定義にユーザーおよびグループがいくつ存在するかなど、プロセス定義の情報が表示されます。プロセス定義の詳細ページの ダイアグラム タブには、プロセス定義の BPMN2 ベースのダイアグラムが含まれます。

選択したプロセス定義内からそれぞれ、右上隅の New Process Instance ボタンをクリックして、プロセス定義用の新規プロセスインスタンスを起動できます。利用可能なプロセスから起動したプロセスインスタンスは、Menu → ManageProcess Instances に一覧表示されます。

Manage ドロップダウンメニュー (Process DefinitionProcess InstancesTasksJobs および Execution Errors) と MenuTrackTask Inbox で、全ユーザーのデフォルトページネーションオプションを定義することも可能です。

27.1. プロセス定義ページからのプロセスインスタンスの開始

MenuManageProcess Definitions からプロセスインスタンスを起動できます。これは、同時に複数のプロジェクトまたはプロセス定義を使用する環境では有用です。

前提条件

  • Business Central に、プロセス定義が設定されたプロジェクトがデプロイされている。

手順

  1. Business Central で MenuManageProcess Definitions に移動します。
  2. 一覧から、新しいプロセスインスタンスを開始するプロセス定義を選択します。定義の詳細ページが開きます。
  3. 右上隅の New Process Instance をクリックし、新しいプロセスインスタンスを開始します。
  4. プロセスインスタンスに必要な情報を提供します。
  5. Submit をクリックして、プロセスインスタンスを作成します。
  6. MenuManageProcess Instances で新規プロセスインスタンスを表示します。

27.2. プロセスインスタンスページからプロセスインスタンスの開始

MenuManageProcess Instances で、新規プロセスインスタンスを作成するか、実行中のプロセスインスタンスの全リストを表示することができます。

前提条件

  • Business Central に、プロセス定義が設定されたプロジェクトがデプロイされている。

手順

  1. Business Central で、MenuManageProcess Instances に移動します。
  2. 右上隅の New Process Instance をクリックし、ドロップダウンリストから新しいプロセスインスタンスを開始するプロセス定義を選択します。
  3. 新しいプロセスインスタンスを開始するために必要な情報を入力します。
  4. Start をクリックして、プロセスインスタンスを作成します。

    Manage Process Instances 一覧に新しいプロセスインスタンスが表示されます。

27.3. Business Central でのプロセスドキュメントの生成

Business Central のプロセスデザイナーでは、プロセス定義のレポートを表示し、出力できます。プロセスドキュメントには、コンポーネント、データ、プロセスの視覚的なフローが簡単に出力して共有できるように PDF 形式でまとめられています。

手順

  1. Business Central で、ビジネスプロセスが含まれるプロジェクトに移動し、プロセスを選択します。
  2. プロセスデザイナーの Documentation タブでプロセスファイルの概要を表示し、画面の右上隅の Print をクリックして PDF レポートを出力します。

    図27.1 プロセスドキュメントの生成

    Project-level service task settings

第28章 プロセスインスタンス管理

プロセスインスタンスを表示するには、Business Central で MenuManageProcess Instances の順にクリックし ます。

+ 注記: Manage Process Instances 一覧の各行は、特定のプロセス定義のプロセスインスタンスを表します。各インスタンスには、プロセスが操作している情報の内部状態があります。プロセスインスタンスをクリックして、プロセスに関連するランタイム情報のある対応するタブを表示します。

図28.1 プロセスインスタンスのタブの表示

Process instance tab view
  • Instance Details: プロセス内で何が起きているかについて簡単な概要を表示します。ここには、インスタンスの現在のステータスや、実行中のアクティビティーが表示されます。
  • Process Variables: インスタンスが操作するすべてのプロセス変数 (ドキュメントを含む変数は除く) を表示します。プロセス変数の値を編集し、その履歴を表示することができます。
  • Documents: プロセスに org.jbpm.Document タイプの変数が含まれる場合は、プロセスのドキュメントを表示します。これにより、添付されるドキュメントへのアクセス、ダウンロード、操作が可能になります。
  • Logs: エンドユーザーのプロセスインスタンスログを表示します。詳細情報は、「 プロセスおよびタスクとの対話」 を参照してください。
  • Diagram: BPMN2 ダイアグラムを通じてプロセスインスタンスの進行状況を追跡します。進行中のプロセスフローのノードは赤く強調表示されます。再利用可能なサブプロセスは、親プロセス内で縮小表示されます。再利用可能なサブプロセスノードをダブルクリックして、親プロセスダイアグラムからそのダイアグラムを開きます。

KIE Server ランタイムデータへのアクセスに必要なユーザー認証情報および条件の詳細は、『 Red Hat Process Automation Manager インストールの計画』 を参照してください。

28.1. プロセスインスタンスのフィルタリング

MenuManageProcess Instances のプロセスインスタンスについては、必要に応じて FiltersAdvanced Filters パネルを使用してプロセスインスタンスを分類してください。

手順

  1. Business Central で、MenuManageProcess Instances に移動します。
  2. Manage Process Instances ページで、ページの左側にある フィルター アイコンをクリックして、使用するフィルターを選択します。

    • State: 状態をもとにプロセスインスタンスをフィルタリングします (ActiveAbortedCompletedPending、および Suspended)。
    • Errors: 最低エラーが 1 つ含まれるプロセスインスタンス、またはエラーが含まれないプロセスインスタンスをフィルタリングします。
    • Filter By: 以下の属性に基づいてプロセスインスタンスをフィルタリングします。

      • Id: プロセスインスタンス ID 別にフィルタリングします。

        入力: Numeric

      • Initiator: プロセスインスタンスイニシエーターのユーザー ID でフィルタリングします。

        ユーザー ID は一意の値で、ID 管理システムにより異なります。

        入力: String

      • Correlation key: 相関キー別にフィルタリングします。

        入力: String

      • Description: プロセスインスタンスを説明別にフィルタリングします。

        入力: String

    • Name: プロセス定義名をもとにプロセスインスタンスをフィルタリングします。
    • Definition ID: インスタンス定義の ID。
    • Deployment ID: インスタンスデプロイメントの ID。
    • SLA Compliance: SLA コンプライアンスのステータス (AbortedMetN/APending、および Violated)。
    • Parent Process ID: 親プロセスの ID。
    • Start Date: 作成日をもとにプロセスインスタンスをフィルタリングします。
    • Last update: 最終変更日をもとにプロセスインスタンスをフィルタリングします。

Advanced Filters オプションを使用して、Business Central でカスタムフィルターを作成することもできます。

28.2. カスタムのプロセスインスタンス一覧の作成

Business Central の MenuManageProcess Instances で、実行中のプロセスインスタンスすべての一覧を表示できます。このページから、実行中のインスタンスを管理し、実行を監視できます。表示する列や、1 ページに表示する行数をカスタマイズして、結果をフィルタリングできます。カスタムプロセスインスタンス一覧を作成することもできます。

前提条件

  • Business Central に、プロセス定義が設定されたプロジェクトがデプロイされている。

手順

  1. Business Central で、MenuManageProcess Instances に移動します。
  2. Manage Process Instances ページで、左側の詳細フィルターアイコンをクリックして、プロセスインスタンスの Advanced Filters オプション一覧を開きます。
  3. Advanced Filters パネルで、カスタムのプロセスインスタンスリストに使用するフィルターの名前と説明を入力して、Add New をクリックします。
  4. フィルターの値のリストから、パラメーターと値を選択し、カスタムのプロセスインスタンスリストを設定して、Save をクリックします。

    新しいフィルターが作成され、即座にプロセスインスタンス一覧に適用され、Saved Filters 一覧にも保存されます。このフィルターは、Saved Filters リストにも保存されます。保存したフィルターには、Manage Process Instances ページの左側にある星アイコンをクリックして、アクセスできます。

28.3. デフォルトのフィルターを使用したプロセスインスタンスの管理

Business Central の Saved Filter オプションを使用して、プロセスインスタンスフィルターをデフォルトフィルターとして設定できます。ユーザーがページを開くたびにデフォルトのフィルタリングが実行されます。

手順

  1. Business Central で、MenuManageProcess Instances に移動します。
  2. Manage Process Instances ページの左側にある星アイコンをクリックして、Saved Filters ペインを展開します。

    Saved Filters パネルで、保存した詳細フィルターを表示できます。

    プロセスインスタンスのデフォルトのフィルターオプション

    Default filter selection for Process Instances

  3. Saved Filters パネルで、保存したプロセスインスタンスフィルターを、デフォルトのフィルターとして設定します。

28.4. 基本フィルターを使用したプロセスインスタンス変数の表示

Business Central には、プロセスインスタンス変数を表示する基本フィルターが含まれます。プロセスのプロセスインスタンス変数は、Show/hide columns を使用して列として表示できます。

手順

  1. Business Central で、MenuManageProcess Instances に移動します。
  2. Manage Process Instances ページの左側にあるフィルターアイコンをクリックして、Filters パネルを展開します。
  3. Filters パネルを選択し、Definition Id をクリックして一覧から定義 ID を選択します。

    フィルターは現在のプロセスインスタンス一覧に適用されます。

  4. 画面の右上にあるコラムアイコン (Bulk Actions の右横) をクリックして、プロセスインスタンスのテーブルのコラムを表示または非表示します。
  5. 星のアイコンをクリックして、Saved Filters パネルを開きます。

    Saved Filters パネルで、保存した詳細フィルターをすべて表示できます。

28.5. 詳細フィルターを使用したプロセスインスタンス変数の表示

Business Central の Advanced Filters オプションを使用して、プロセスインスタンス変数を表示できます。processId の列のフィルターを作成した場合には、Show/hide columns を使用してプロセスのプロセスインスタンス変数を列として表示できます。

手順

  1. Business Central で、MenuManageProcess Instances に移動します。
  2. Manage Process Instances ページで、詳細フィルターのアイコンをクリックして Advanced Filters を展開します。
  3. Advanced Filters パネルで、フィルターの名前と説明を入力して、Add New をクリックします。
  4. Select column リストから processId 属性を選択します。この値は、processId != value1 に変わります。
  5. Select column リストからクエリーに equals to を選択します。
  6. テキストフィールドに、プロセス ID 名を入力します。
  7. Save をクリックして、フィルターを現在のプロセスインスタンス一覧に適用します。
  8. プロセスインスタンスリストの右上にあるコラムアイコン (Bulk Actions の右側) をクリックすると、指定のプロセスインスタンス ID のプロセスインスタンス変数が表示されます。
  9. 星のアイコンをクリックして、Saved Filters パネルを開きます。

    Saved Filters パネルで、保存した詳細フィルターをすべて表示できます。

28.6. Business Central を使用したプロセスインスタンスの中止

プロセスインスタンスが必要なくなった場合には、Business Central でプロセスインスタンスを中止できます。

手順

  1. Business Cnetral で、MenuManageProcess Instances の順にクリックして、利用可能なプロセスインスタンスの一覧を表示します。
  2. 一覧から、中止するプロセスインスタンスを選択します。
  3. プロセスの詳細ページの右上にある Abort ボタンをクリックします。

28.7. Business Central からプロセスインスタンスのシグナル送信

Business Central からプロセスインスタンスのシグナルを送信できます。

前提条件

  • Business Central に、プロセス定義が設定されたプロジェクトがデプロイされている。

手順

  1. Business Central で、MenuManageProcess Instances に移動します。
  2. 必要なプロセスインスタンスを探し、 Actions ボタンをクリックして、ドロップダウンメニューから Signal を選択します。
  3. 以下のフィールドに入力します。

    • Signal Name: シグナルの SignalRef 属性または MessageRef 属性に相当します。このフィールドは必須です。

      注記

      Message イベントをプロセスに送信することもできます。そのためには、MessageRef 値に Message- 接頭辞を追加します。

    • Signal Data: シグナルに添付されるデータに相当します。このフィールドは任意です。
注記

Business Central ユーザーインターフェースを使用している場合は、シグナル中間キャッチイベントのシグナルだけを送信できます。

28.8. 非同期シグナルイベント

異なるプロセス定義のプロセスインスタンス複数が同じシグナルを待機している場合に、これらのプロセスインスタンスは同じスレッドで順次実行されます。ただし、このプロセスインスタンスの 1 つがランタイム例外をスローすると、他のすべてのプロセスインスタンスが影響を受け、通常はトランザクションがロールバックされます。この状況を回避するために、Red Hat Process Automation Manager は非同期シグナルイベントを使用します。

  • 中間シグナルイベントのスロー
  • 終了イベント

28.8.1. 中間イベントの非同期シグナルの設定

中間イベントは、ビジネスプロセスのフローを駆動します。中間イベントは、ビジネスプロセスの実行中にイベントをキャッチまたはスローするときに使用します。中間イベントは、プロセス実行時に発生する特定の状況を処理します。スローシグナルの中間イベントは、定義したプロパティーをもとにシグナルオブジェクトを生成します。

Business Central で中間イベントの非同期シグナルを設定できます。

前提条件

  • Business Central でプロジェクトを作成済みである。これにはビジネスプロセスアセットが 1 つ以上含まれます。
  • Business Central に、プロセス定義が設定されたプロジェクトがデプロイされている。

手順

  1. ビジネスプロセスアセットを開きます。
  2. プロセスデザイナーキャンバスで、左のツールバーから Intermediate Signal をドラッグアンドドロップします。
  3. 右上隅の diagram properties をクリックし、Properties パネルを開きます。
  4. Data Assignments を展開します。
  5. Assignments サブセクションの下のボックスをクリックします。Task Data I/O ダイアログボックスが開きます。
  6. Data Inputs and Assignments の横にある Add をクリックします。
  7. Name フィールドに、スローされたイベント名を async と入力します。
  8. Data TypeSource のフィールドは空白のままにします。
  9. OK をクリックします。

各セッションに executor サービスが自動的に設定されます。これにより、各プロセスインスタンスが異なるトランザクションで通知されるようになります。

28.8.2. 終了イベントの非同期シグナルの設定

終了イベントは、ビジネスプロセスの完了を示します。なし、および中断終了イベント以外の終了イベントはすべてスローイベントです。スローシグナルの終了イベントは、プロセスまたはサブプロセスフローの終了に使用します。実行フローがこの要素に入ると、実行フローが終了し、SignalRef プロパティーで特定されたシグナルを生成します。

Business Central で終了イベントの非同期シグナルを設定できます。

前提条件

  • Business Central でプロジェクトを作成済みである。これにはビジネスプロセスアセットが 1 つ以上含まれます。
  • Business Central に、プロセス定義が設定されたプロジェクトがデプロイされている。

手順

  1. ビジネスプロセスアセットを開きます。
  2. プロセスデザイナーキャンバスで、左のツールバーから End Signal をドラッグアンドドロップします。
  3. 右上隅の diagram properties をクリックし、Properties パネルを開きます。
  4. Data Assignments を展開します。
  5. Assignments サブセクションの下のボックスをクリックします。Task Data I/O ダイアログボックスが開きます。
  6. Data Inputs and Assignments の横にある Add をクリックします。
  7. Name フィールドに、スローされたイベント名を async と入力します。
  8. Data TypeSource のフィールドは空白のままにします。
  9. OK をクリックします。

各セッションに executor サービスが自動的に設定されます。これにより、各プロセスインスタンスが異なるトランザクションで通知されるようになります。

28.9. プロセスインスタンスの操作

プロセスインスタンス管理 API は、プロセスエンジンおよび個々のプロセスインスタンスの以下の操作を公開します。

  • get process nodes - by process instance id: プロセスインスタンスに存在する、組み込みの全サブプロセスなど、すべてのノードを返します。指定のプロセスインスタンスからノードを取得して、他の管理操作で使用できるように、ノードが存在し、有効な ID が割り当てられていることを確認する必要があります。
  • cancel node instance - by process instance id and node instance id: プロセスおよびノードインスタンス ID を使用してプロセスインスタンス内のノードインスタンスを取り消します。
  • retrigger node instance - by process instance id and node instance id: アクティブなノードインスタンスを取り消してノードインスタンスを再度トリガーし、プロセスとノードインスタンス ID を使用して同じタイプのノードインスタンスを新規作成します。
  • update timer - by process instance id and timer id: タイマーのスケジュール時間からの経過時間をもとに、アクティブなタイマーの有効期限を更新します。たとえば、タイマーが最初に遅延が 1 時間として作成されており、30 分後に遅延を 2 時間に更新設定した場合に、更新してから 1 時間半後に有効期限が切れます。

    • delay: タイマーの有効期限が切れてからの期間
    • period: 次のサイクルタイマーの有効期限までの間隔
    • repeat limit: サイクルタイマーの失効回数を指定の数に制限
  • update timer relative to current time - by process instance id and timer id: 現在の時間をもとにアクティブなタイマーの有効期限を更新します。たとえば、タイマーの遅延が 1 時間として最初に作成されており、30 分後に遅延を 2 時間に更新設定した場合に、更新した時間から 2 時間で有効期限が切れます。
  • list timer instances - by process instance id: 指定のプロセスインスタンスでアクティブなタイマーをすべて返します。
  • trigger node - by process instance id and node id: 任意のタイミングでプロセスインスタナス内のノードをトリガーします。

第29章 タスク管理

現在のユーザーに割り当てられたタスクは、Business Cnetral の MenuTrackTask Inbox に表示されます。タスクをクリックして、タスクを開き、作業を開始できます。

特定のユーザー、複数のユーザー、またはグループにユーザータスクを割り当てることができます。複数のユーザー、またはグループに割り当てた場合は、割り当てた全ユーザーのタスク一覧に表示され、タスクの要求が可能なユーザーであれば誰でも要求できます。別のユーザーにタスクが割り当てられると、そのタスクは Task Inbox に表示されなくなります。

Task inbox

ビジネス管理者は、Business Central の Tasks ページから、すべてのユーザータスクを表示および管理できます。そのページは、MenuManageTasks で表示できます。admin ロールまたは process-admin ロールが割り当てられているユーザーは Tasks ページにアクセスできますが、デフォルトではタスクを表示して管理するアクセス権限がありません。

全タスクを管理するには、以下の条件を定義してプロセス管理者としてユーザーを指定する必要があります。

  • ユーザーを task admin user として指定する。デフォルトの値は Administrator です。
  • ユーザーをタスク管理者グループに所属させる。デフォルト値は Administrators です。

ユーザーとユーザーグループの割当は、org.jbpm.ht.admin.userorg.jbpm.ht.admin.group のシステムプロパティーで設定できます。

一覧にあるタスクをクリックしてビューを開き、期日、優先順位、タスクの説明など、タスクの詳細を修正できます。タスクページでは以下のタブが利用できます。

Task details
  • Work: タスクおよびタスクの所有者に関する基本的な詳細を表示します。Claim ボタンをクリックして、タスクを要求できます。要求プロセスを取り消すには、Release ボタンをクリックします。
  • Details: タスクの説明、ステータス、期日などの情報を表示します。
  • Assignments: タスクの現在の所有者を表示し、別のユーザーまたはグループにタスクを委譲できます。
  • Comments: タスクユーザーが追加したコメントを表示します。既存のコメントを削除して、新しいコメントを追加できます。
  • Admin: タスクの所有者候補が表示されるため、タスクを別のユーザーやグループに転送できます。また、タスクの実際の所有者も表示し、タスクの実際の所有者にリマインダーを送信できます。
  • Logs: タスクのライフサイクルイベント (タスクの開始、要求、終了など) を含むタスクログと、タスクフィールド (タスクの期日および優先順位など) に行った更新を表示します。

ページの左側にある フィルター アイコンをクリックして、利用可能なフィルターパラメーターをもとに、タスクをフィルタリングできます。フィルタリングの詳細は、「タスクのフィルタリング」 を参照してください。

その他にも、定義するクエリーパラメーターに基づいてタスクをフィルタリングできるカスタムのフィルターを作成できます。カスタムタスクフィルターの詳細は、「カスタムタスクフィルターの作成」 を参照してください。

29.1. タスクのフィルタリング

MenuManageTasks および MenuTrackTask Inbox のタスクについては、必要に応じて FiltersAdvanced Filters パネルを使用してタスクを分類できます。

図29.1 タスクのフィルタリング: デフォルト表示

Filtering Tasks - Default View

Manage Tasks ページは、管理者、およびプロセスの管理者だけが利用できます。

Filters パネルの以下の属性別に、タスクをフィルタリングできます。

ステータス

タスクステータスでフィルタリングします。ステータスを 1 つ以上選択して、選択したステータスのすべてを満たす結果を表示します。ステータスフィルターを削除すると、ステータスにかかわらずすべてのプロセスが表示されます。

以下のフィルターステータスを利用できます。

  • 完了
  • Created
  • エラー
  • 終了
  • Failed
  • 実行中
  • 廃止
  • 使用可能
  • 予約済み
  • 一時停止
ID

プロセスインスタンス ID でフィルタリングします。

入力: Numeric

タスク

タスク名でフィルタリングします。

入力: String

相関キー

Correlation key でフィルタリングします。

入力: String

実際の所有者

タスクの所有者でフィルタリングします。

実際の所有者は、タスクを実行するユーザーを指します。検索はユーザー ID に基づいていますが、これは一意の値で、ID 管理システムにより異なります。

入力: String

Process Instance Description

プロセスインスタンスの説明でフィルタリングします。

入力: String

タスク名
タスク名でフィルタリングします。
プロセス定義 ID
プロセス定義 ID でフィルタリングします。
SLA コンプライアンス

SLA コンプライアンス状態でフィルタリングします。

以下のフィルターステータスを利用できます。

  • 強制終了
  • 適合
  • 該当なし
  • 保留中
  • 違反
作成日

日付または時間でフィルタリングします。

このフィルターには、以下のような、フィルターのクイックオプションがあります。

  • 過去 1 時間
  • 本日
  • 過去 24 時間
  • 過去 7 日間
  • 過去 30 日間
  • カスタム

    Custom の日時フィルタリングを選択すると、カレンダーツールが開いて日時の範囲を選択できます。

    図29.2 日付で検索

    Search by Date Range

29.2. カスタムタスクフィルターの作成

MenuManageTasks または、MenuTrackTask Inbox (現在のユーザーに割り当てられているタスク) で指定されたクエリーをもとに、カスタムのタスクフィルターを作成できます。

手順

  1. Business Central で MenuManageTasks に移動します。
  2. Manage Tasks ページで左側の詳細フィルターアイコンをクリックして、Advanced Filters オプションの一覧を開きます。
  3. Advanced Filters パネルで、フィルターの名前と説明を入力して、Add New をクリックします。
  4. Select column ドロップダウンメニューで、name を選択します。

    ドロップダウンメニューのコンテンツを name != value1 に変更します。

  5. ドロップダウンメニューを再度クリックして、equals to を選択します。
  6. テキストフィールドの値を、フィルタリングするタスクの名前に書き替えます。この名前は、関連のビジネスプロセスで定義した値に一致させる必要があります。

    task name
  7. OK をクリックして、カスタムタスクフィルターを保存します。

    new fl final

    指定した制限が設定されたフィルターを適用すると、設定可能な列のセットは特定のカスタムタスクフィルターに基づいており、以下の列オプションが含まれます。

    in name column new

29.3. デフォルトのフィルターを使用したタスクの管理

Business Central の Saved Filter オプションを使用して、タスクフィルターをデフォルトフィルターとして設定できます。ユーザーがページを開くたびにデフォルトのフィルタリングが実行されます。

手順

  1. Business Central で MenuTrackTask Inbox に移動するか、MenuManageTasks に移動します。
  2. Task Inbox ページまたは、Manage Tasks ページの左側にある星アイコンをクリックして、Saved Filters パネルを展開します。

    Saved Filters パネルで、保存した詳細フィルターを表示できます。

    Tasks または Task Inbox のデフォルトフィルターのオプション

    Default filter selection for Tasks or Task Inbox

  3. Saved Filters パネルで、保存したタスクフィルターを、デフォルトのフィルターとして設定します。

29.4. 基本的なフィルターを使用したタスク変数の表示

Business Central には基本フィルターがあり、Manage Tasks および Task Inbox のタスク変数を表示できます。タスクのタスク変数は、Show/hide columns を使用し列として表示できます。

手順

  1. Business Central で MenuManageTasks に移動するか、MenuTrackTask Inbox に移動します。
  2. Task Inbox ページの左側にあるフィルターアイコンをクリックして、Filters パネルを展開します。
  3. Filters パネルを選択し、Task Name をクリックします。

    フィルターは現在のタスクリストに適用されます。

  4. タスクリストの右上にある Show/hide columns をクリックすると、指定のタスク ID のタスク変数が表示されます。
  5. 星のアイコンをクリックして、Saved Filters パネルを開きます。

    Saved Filters パネルで、保存した詳細フィルターをすべて表示できます。

29.5. 詳細フィルターを使用したタスク変数の表示

Business Central の Advanced Filters オプションを使用して Manage TasksTask Inbox のタスク変数を表示できます。タスクを定義したフィルターを作成すると、Show/hide columns でタスクのタスク変数を列として表示できます。

手順

  1. Business Central で MenuManageTasks に移動するか、MenuTrackTask Inbox に移動します。
  2. Manage Tasks ページまたは、Task Inbox ページの詳細フィルターアイコンをクリックして、Advanced Filters パネルを展開します。
  3. Advanced Filters パネルで、フィルターの名前と説明を入力して、Add New をクリックします。
  4. Select column リストから name 属性を選択します。この値は、name != value1 に変わります。
  5. Select column リストから論理クエリーに equals to を選択します。
  6. テキストフィールドに、タスク名を入力します。
  7. Save をクリックして、フィルターを現在のタスクリストに適用します。
  8. タスクリストの右上にある Show/hide columns をクリックすると、指定のタスク ID のタスク変数が表示されます。
  9. 星のアイコンをクリックして、Saved Filters パネルを開きます。

    Saved Filters パネルで、保存した詳細フィルターをすべて表示できます。

29.6. Business Central でのカスタムタスクの管理

カスタムタスク (作業アイテム) は、カスタムロジックを実行できるタスクです。複数のビジネスプロセスまたは Business Central の全プロジェクトでタスクをカスタマイズして再利用できます。また、名前、アイコン、サブカテゴリー、入出力パラメーター、ドキュメントなど、デザイナーパレットにカスタム要素を追加することもできます。Red Hat Process Automation Manager は、Business Central のカスタムタスクリポジトリー内でカスタムタスクセットを提供します。デフォルトのカスタムタスクを有効化または無効化して、カスタムのタスクを Business Central にアップロードし、適切なプロセスにこのタスクを実装できます。

注記

Red Hat Process Automation Manager には、サポートされるカスタムタスクの限定セットが含まれています。Red Hat Process Automation Manager に含まれていないカスタムタスクはサポートされません。

手順

  1. Business Central で右上隅の gear icon をクリックし、Custom Task Administration を選択します。

    このページは、カスタムタスクのインストール設定や、Business Central 全体にあるプロジェクトのプロセスで利用可能なカスタムタスクを表示します。このページで有効にしたカスタムタスクは、プロジェクトレベルの設定で利用できます。プロジェクトレベルの設定で、プロセスで使用する各カスタムタスクをインストールできます。カスタムタスクをプロジェクトにインストールする方法は、Custom Tasks Administration ページの Settings で有効または無効にしたグローバル設定により決まります。

  2. Settings で、各設定を有効または無効にして、ユーザーがプロジェクトレベルでインストールするときに、利用可能なカスタムタスクを実装する方法を決定します。

    以下のカスタムタスクの設定が利用できます。

    • Install as Maven artifact: ファイルがない場合は、カスタムタスクの JAR ファイルを Maven リポジトリーにアップロードし、Business Central で設定します。
    • Install custom task dependencies into project: カスタムタスクの依存関係をプロジェクトの pom.xml ファイルに追加します。このファイルでタスクがインストールされます。
    • Use version range when installing custom task into project: プロジェクトの依存関係として追加されるカスタムタスクの固定バージョンではなく、バージョン範囲を使用します。たとえば、7.16.0.Final ではなく [7.16,) です。
  3. 必要に応じて利用可能なカスタムタスクを有効または無効にします (ON または OFF に設定)。有効化したカスタムタスクは、Business Central の全プロジェクトのプロジェクトレベル設定に表示されます。

    図29.3 カスタムタスクとカスタムタスク設定の有効化

    Custom Tasks Administration page
  4. カスタムタスクを追加するには、Add Custom Task をクリックし、関連する JAR ファイルを参照し、Upload アイコンをクリックします。クラスが WorkItemHandler を実装する場合は、ファイルを Business Central に個別に追加して、アノテーションを .wid ファイルに置き換えることができます。
  5. 必要に応じてカスタムタスクを削除するには、削除するカスタムタスクの行にある remove をクリックし、OK をクリックして削除を確定します。
  6. Business Central ですべての必須カスタムタスクを設定した後に、プロジェクトの SettingsCustom Tasks ページに移動すると、有効化したカスタムタスクで利用可能なものが表示されます。
  7. カスタムタスクごとに、Install をクリックして、対象のプロジェクトのプロセスでタスクを利用できるようにするか、Uninstall をクリックして、プロジェクトのプロセスからタスクを除外します。
  8. カスタムタスクのインストール時に追加情報を求められた場合は、必要な情報を入力して、もう一度 Install をクリックします。

    カスタムタスクの必須パラメーターは、タスクのタイプにより異なります。たとえば、ルールとデシジョンタスクにはアーティファクトの GAV 情報 (グループ ID、アーティファクト ID、およびバージョン) が、メールタスクにはホストとポートアクセスの情報が、REST タスクには API の認証情報が必要です。他のカスタムタスクでは、追加のパラメーターが必要でない場合もあります。

    図29.4 プロセスで使用するカスタムタスクのインストール

    Project-level custom task settings
  9. 保存 をクリックします。
  10. プロジェクトページに戻り、プロジェクトのビジネスプロセスを選択または追加します。プロセスデザイナーパレットで Custom Tasks オプションを選択すると、有効にしてインストールした、利用可能なカスタムタスクが表示されます。

    図29.5 プロセスデザイナーでのインストール済みカスタムタスクへのアクセス

    Custom tasks in process designer

29.7. ユーザータスク管理

ユーザータスクを使用すると、作成したビジネスプロセスに対するアクションとして、人間のアクションを追加できます。ユーザータスク管理では、ユーザーやグループタスクの割り当て、データ処理、時間ベースの自動通知、再割り当てを操作する手法が提供されます。

以下のユーザータスク操作は、Business Central で利用できます。

  • add/remove potential owners - by task id: タスク ID を使用してユーザーとグループを追加または削除します。
  • add/remove excluded owners - by task id: タスク ID を使用して除外する所有者を追加または削除します。
  • add/remove business administrators - by task id: タスク ID を使用してビジネス管理者を追加または削除します。
  • add task inputs - by task id: タスク ID を使用してタスクの作成後に、タスクの入力コンテンツを変更する手段を提供します。
  • remove task inputs - by task id: タスク ID を使用してタスクの入力変数を削除します。
  • remove task output - by task id: タスク ID を使用してタスクの出力変数を削除します。
  • schedules new reassignment to given users/groups after given time elapses - by task id: 時間の式およびタスクの状態をもとに、自動的な再割当てをスケジュールします。

    • reassign if not started: タスクが InProgress の状態に移動されなかった場合に使用します。
    • reassign if not completed: タスクが Completed の状態に移動されなかった場合に使用します。
  • schedules new email notification to given users/groups after given time elapses - by task id: 時間の式およびタスクの状態をもとにメールの自動通知をスケジュールします。

    • notify if not started: タスクが InProgress の状態に移動されなかった場合に使用します。
    • notify if not completed: タスクが Completed の状態に移動されなかった場合に使用します。
  • list scheduled task notifications - by task id: タスク ID を使用してアクテイブなタスク通知をすべて返します。
  • list scheduled task reassignments - by task id: タスク ID を使用してアクテイブなタスクの再割り当てすべてを返します。
  • cancel task notification - by task id and notification id: タスク ID を使用してタスクの通知を取り消して、スケジュールをキャンセルします。
  • cancel task reassignment - by task id and reassignment id: タスク ID を使用してタスクの再割り当てを取り消して、スケジュールをキャンセルします。

29.8. タスクの一括アクション

Business Central の Tasks および Task Inbox ページでは、1 回の操作で複数のタスクに対して一括アクションを実行できます。

注記

指定された一括アクションがタスクステータスに基づいて許可されていない場合は、通知が表示され、そのタスクでは操作は実行されません。

29.8.1. タスクを一括で要求する

Business Central でタスクを作成した後、使用可能なタスクを一括して要求できます。

手順

  1. Business Central で、以下のいずれかの手順を実行します。

    • MenuTrackTask Inbox の順に選択すると、Task Inbox ページが表示されます。
    • MenuManageTasks の順に選択すると、Tasks ページが表示されます。
  2. タスクを一括して請求するには、Task Inbox ページまたは Manage Tasks ページで、Task テーブルから 2 つ以上のタスクを選択します。
  3. Bulk Actions ドロップダウンリストから、Bulk Claim を選択します。
  4. 確認するには、Claim selected tasks ウィンドウで、Claim をクリックします。

選択したタスクごとに、結果を示す通知が表示されます。

29.8.2. タスクを一括でリリースする

所有しているタスクを一括してリリースし、他のユーザーが要求できるようにすることができます。

手順

  1. Business Central で、以下のいずれかの手順を実行します。

    • MenuTrackTask Inbox の順に選択すると、Task Inbox ページが表示されます。
    • MenuManageTasks の順に選択すると、Tasks ページが表示されます。
  2. タスクを一括してリリースするには、Task Inbox ページまたは Manage Tasks ページで、Task テーブルから 2 つ以上のタスクを選択します。
  3. Bulk Actions のドロップダウンリストから、Bulk Releaseを選択します。
  4. 確認するには、Release selected tasks ウィンドウで、Release をクリックします。

選択したタスクごとに、結果を示す通知が表示されます。

29.8.3. タスクを一括で再開する

Business Central に一時停止されたタスクがある場合は、それらを一括して再開できます。

手順

  1. Business Central で、以下のいずれかの手順を実行します。

    • MenuTrackTask Inbox の順に選択すると、Task Inbox ページが表示されます。
    • MenuManageTasks の順に選択すると、Tasks ページが表示されます。
  2. タスクを一括して再開するには、Task Inbox ページまたは Manage Tasks ページで、Task テーブルから 2 つ以上のタスクを選択します。
  3. Bulk Actions のドロップダウンリストから、Bulk Resume を選択します。
  4. 確認するには、Resume selected tasks ウィンドウで Resume をクリックします。

選択したタスクごとに、結果を示す通知が表示されます。

29.8.4. タスクを一括で一時停止する

Business Central でタスクを作成した後、タスクを一括して一時停止できます。

手順

  1. Business Central で、以下のいずれかの手順を実行します。

    • MenuTrackTask Inbox の順に選択すると、Task Inbox ページが表示されます。
    • MenuManageTasks の順に選択すると、Tasks ページが表示されます。
  2. タスクを一括して一時停止するには、Task Inbox ページまたは Manage Tasks ページで、Task テーブルから 2 つ以上のタスクを選択します。
  3. Bulk Actions のドロップダウンリストから、Bulk Suspend を選択します。
  4. 確認するには、Suspend selected tasks ウィンドウで Suspend をクリックします。

選択したタスクごとに、結果を示す通知が表示されます。

29.8.5. タスクを一括で再割り当てする

Business Central でタスクを作成した後、タスクを一括して再割り当てし、他のユーザーに委任できます。

手順

  1. Business Central で、以下のいずれかの手順を実行します。

    • MenuTrackTask Inbox の順に選択すると、Task Inbox ページが表示されます。
    • MenuManageTasks の順に選択すると、Tasks ページが表示されます。
  2. タスクを一括して再割り当てするには、Task Inbox ページまたは Manage Tasks ページで、Task テーブルから 2 つ以上のタスクを選択します。
  3. Bulk Actions のドロップダウンリストから、Bulk Reassign を選択します。
  4. Tasks reassignment ウィンドウで、タスクを再割り当てするユーザーのユーザー ID を入力します。
  5. Delegate をクリックします。

選択したタスクごとに、結果を示す通知が表示されます。

第30章 ログデータの管理

Red Hat Process Automation Manager は、必要なメンテナンスランタイムデータを管理します。以下のデータタイプを含む一部のデータを自動的に削除します。

  • プロセスインタンスデータ。プロセスインスタンスの完了時に削除されます。
  • ワークアイテムデータ。ワークアイテムの完了時に削除されます。
  • タスクインスタンスデータ。指定のタスクが所属するプロセスの完了時に削除されます。

自動的に消去されないランタイムデータには、選択したランタイムストラテジーを基にしたセッション情報データが含まれます。

  • シングルトンストラテジー を使用して、セッション情報のランタイムデータが自動的に削除されないようにします。
  • リクエスト別のストラテジー を使用することで、要求が終了した時点で自動的に削除できます。
  • プロセスインスタンス別インスタンスは、プロセスインスタンスが完了または中断されたセッションにマッピングされると、プロセスインスタンスデータを自動的に削除します。

Red Hat Process Automation Manager は監査ログデータテーブルも提供します。これらのテーブルを使用して、現在および過去のプロセスインスタンスを追跡できます。デフォルトでは、Red Hat Process Automation Manager は監査ログテーブルからデータを削除しません。

監査データテーブルを管理および維持する方法は 3 つあります。

30.1. 自動クリーンアップジョブの設定

Business Central では自動クリーンアップジョブを設定できます。

手順

  1. Business Central で、Manage > Jobs に移動します。
  2. New Job をクリックします。
  3. Business KeyDue On、および Retries フィールドに値を入力します。
  4. Type フィールドに以下のコマンドを入力します。

    org.jbpm.executor.commands.LogCleanupCommand
  5. パラメーターを設定するには、以下の手順を実行します。

    1. Advanced タブをクリックします。
    2. Add Parameter をクリックします。
    3. キー コラムにパラメーターを入力します。
    4. コラムにパラメーターを入力します。

    コマンドのパラメーターの一覧は、「データベースからのログの削除」 を参照してください。

  6. Create をクリックします。

Business Central は自動クリーンアップジョブを作成します。

30.2. 手動クリーンアップ

手動クリーンアップを実行するには、監査 Java API を使用できます。監査 API は、以下のエリアで構成されます。

表30.1 監査 API エリア

名前説明

プロセス監査

これは、jbpm-audit モジュールでアクセス可能なプロセス、ノード、変数ログをクリーンアップするのに使用します。

たとえば、org.jbpm.process.audit.JPAAuditLogService のようにモジュールにアクセスできます。

タスク監査

これは、jbpm-human-task-audit モジュールでアクセス可能なタスクやイベントをクリーンアップするのに使用します。

たとえば、org.jbpm.services.task.audit.service.TaskJPAAuditService のように、モジュールにアクセスできます。

エグゼキュータージョブ

これは、jbpm-executor モジュールでアクセス可能なエグゼキュータージョブおよびエラーのクリーンアップに使用します。

たとえば、org.jbpm.executor.impl.jpa.ExecutorJPAAuditService のようにモジュールにアクセスできます。

30.3. データベースからのログの削除

LogCleanupCommand エグゼキューターコマンドを使用して、データベースの領域を使用するデータをクリーンアップします。LogCleanupCommand は、自動ですべてのデータをクリーンアップするロジックと、選択したデータをクリーンアップするロジックで構成されます。

LogCleanupCommand コマンドと合わせて使用可能な設定オプションが複数あります。

表30.2 LogCleanupCommand パラメーターテーブル

名前説明排他的

SkipProcessLog

コマンドの実行時に、プロセスおよびノードインスタンス、プロセス変数ログのクリーンアップをスキップするかどうかを指定します。デフォルト値は false です。

いいえ、他のパラメーターと併用します。

SkipTaskLog

タスク監査およびイベントログのクリーンアップをスキップするかどうかを指定します。デフォルト値は false です。

いいえ、他のパラメーターと併用します。

SkipExecutorLog

Red Hat Process Automation Manager エグゼキューターのエントリー消去をスキップするかどうかを指定します。デフォルト値は false です。

いいえ、他のパラメーターと併用します。

SingleRun

ジョブルーチンを 1 回だけ実行するかどうかを指定します。デフォルト値は false です。

いいえ、他のパラメーターと併用します。

NextRun

次のジョブ実行をスケジュールします。デフォルト値は、24h です。

たとえば、12時間ごとにジョブを実行するには、12h と指定します。SingleRuntrue にされており、SingleRunNextRun の両方が設定されていないと、このスケジュールは無視されます。両方が設定されている場合には、NextRun のスケジュールが優先されます。正確な日付を設定するには、ISO 形式を使用できます。

いいえ、他のパラメーターと併用します。

OlderThan

指定の日付より古いログを削除します。日付の形式は、YYYY-MM-DD です。通常、このパラメーターは単一のジョブ実行に使用します。

はい。OlderThanPeriod パラメーターと併用しません。

OlderThanPeriod

指定のタイマー式より古いログを削除します。たとえば、30 日が経過したログを削除するには、30d を設定します。

はい。OlderThan パラメーターと併用しません。

ForProcess

削除するログのプロセス定義 ID を指定します。

いいえ、他のパラメーターと併用します。

RecordsPerTransaction

削除するトランザクションのレコード数を指定します。デフォルト値は 0 で、すべてのレコードを示します。

いいえ、他のパラメーターと併用します。

ForDeployment

削除するログのデプロイメント ID を指定します。

いいえ、他のパラメーターと併用します。

EmfName

削除操作の実行に使用する永続性ユニット名。

該当なし

注記

LogCleanupCommand では、プロセスインスタンス、タスクインスタンス、またはエグゼキュータジョブの実行など、アクテイブなインスタンスは削除されません。

30.4. Red Hat Process Automation Manager データベースでのカスタムクエリーの実行

ExecuteSQLQueryCommand executor コマンドを使用して、監査ログデータテーブルを含む Red Hat Process Automation Manager データベースでカスタムクエリーを実行できます。Business Central でこのコマンドを実行するジョブを設定できます。

手順

  1. Business Central で Manage > Jobs を選択します。
  2. New Job をクリックします。
  3. Business KeyDue On、および Retries フィールドに値を入力します。
  4. Type フィールドに以下のコマンドを入力します。

    org.jbpm.executor.commands.ExecuteSQLQueryCommand
  5. パラメーターを設定するには、以下の手順を実行します。

    1. Advanced タブをクリックします。
    2. Add Parameter をクリックします。
    3. キー コラムに、パラメーターの値を入力します。
    4. コラムに、パラメーターの値を入力します。

    コマンドのパラメーターの一覧は、ExecuteSQLQueryCommand コマンドのパラメーター」 を参照してください。

  6. Create をクリックします。Business Central はカスタムクエリージョブを作成します。
  7. オプション: クエリーの結果を取得する場合は、以下の手順を実行します。

    1. Business Central が表示するジョブ一覧で、起動したジョブを見つけます。ジョブが一覧にない場合は、Active filters 一覧からフィルター を削除します。
    2. ジョブの id の値を記録します。
    3. Web ブラウザーを使用して、<kie_server_address>/docs で KIE Server の Swagger ドキュメントにアクセスします(例: http://localhost:8080/kie-server/docs/)。
    4. GET /server/jobs/{jobId} 要求をクリックします。
    5. jobId フィールドに、記録した id 値を入力します。
    6. withErrors リストから true を選択します。
    7. withData リストから true を選択します。
    8. Execute をクリックします。
    9. Server response フィールドを確認します。SQL クエリーが成功すると、結果は 「response-data」 キーの下になります。

30.4.1. ExecuteSQLQueryCommand コマンドのパラメーター

ExecuteSQLQueryCommand executor コマンドは、監査ログテーブルを含む Red Hat Process Automation Manager データベースでカスタムクエリーを実行します。監査ログテーブルのスキーマは、「 Red Hat Process Automation Manager のプロセスエンジン 」を参照してください。

ExecuteSQLQueryCommand コマンドに以下のパラメーターを設定できます。

表30.3 LogCleanupCommand パラメーターテーブル

名前説明

SingleRun

クエリーを 1 度トリガーできる場合は True。クエリーを複数回トリガーできる場合は false です。

EmfName

クエリーの実行に使用する永続ユニットの名前

businessKey

クエリーで使用するビジネスキー。Business Central でコマンドを設定する場合は、ジョブに設定したビジネスキーを使用します。

SQL

実行するネイティブ SQL クエリー。前書きのパラメーターに : 文字が含まれる

parametersList

SQL クエリーの全パラメーターのリスト。パラメーターと 文字を 区切ります。

SQL パラメーター名

SQL パラメーターの値。すべての SQL パラメーターに対して個別のコマンドパラメーターを作成します。

たとえば、2 つのパラメーターを指定してクエリーを使用することができます。

SELECT * FROM RequestInfo WHERE id = :paramId AND businessKey = :paramKey

ExecuteSQLQueryCommand コマンドに以下のパラメーターを設定します。

  • SQL: SELECT * FROM RequestInfo WHERE id = :paramId AND businessKey = :paramKey ;
  • parametersList: paramId,paramKey
  • paramId: idの値
  • paramKey: businessKeyの値

第31章 実行エラー管理

ビジネスプロセスの実行エラーが発生すると、プロセスが停止し、直近の安定した状態 (直近の安全なポイント) に戻り、実行を継続します。プロセスがエラーを処理していない場合は、トランザクション全体がロールバックされ、プロセスインスタンスを 1 つ前の待ち状態のままにします。実行エラーは、プロセスエンジンにリクエストを送信した呼び出し元に表示されます。

プロセス管理者(process-admin)または管理者(admin)ロールを持つユーザーは、Business Central での実行エラーメッセージにアクセスできます。実行エラーメッセージ機能では、主に以下の利点があります。

  • より優れたトレーサビリティー
  • 重大なプロセスの表示
  • エラー状態に基づいたレポートおよび解析
  • 外部システムエラー処理および補正

31.1. Business Central でのプロセスの実行エラー表示

Business Central では、2 つの場所でプロセスエラーを表示できます。

  • MenuManageProcess Instances
  • MenuManageExecution Errors

現在のプロセスインスタンスにエラーが存在する場合は、Manage Process Instances ページの Errors 列に、エラーの数が表示されます。

前提条件

  • Business Central でのプロセスの実行時にエラーが発生している。

手順

  1. Business Cnetral で MenuManageProcess Instances に移動し、Errors で表示されている数の上にマウスをかざします。
  2. Errors 列に表示されるエラーの数をクリックして、Manage Execution Errors ページに移動します。

    Manage Execution Errors ページには、すべてのプロセスインスタンスのエラー一覧が表示されます。

31.2. 実行エラーの管理

定義上、検出および保存されたプロセスエラーは何も確認されておらず、何らかの形 (エラーからの自動回復の場合) で処理する必要があります。確認できなかったエラーのフィルターされた一覧を表示できます。エラーを承認すると、追跡のために、ユーザー情報およびタイムスタンプが保存されます。

手順

  1. Business Central で MenuManageExecution Errors を選択します。
  2. 一覧からエラーを選択し、Details タブを開きます。Details タブには、エラーに関する情報が表示されます。
  3. Acknowledge ボタンをクリックしてエラーを確認しますManage Execution Errors ページの Acknowledged フィルターで Yes を選択すれば、確認済みのエラーを表示できます。

    エラーがタスクに関連する場合は、Go to Task ボタンが表示されます。

  4. オプション: 必要に応じて Go to Task ボタンをクリックして、Manage Tasks ページに、関連するジョブ情報を表示します。

    Manage Tasks ページでは、対応するタスクの再起動、再スケジュール、または再試行を行うことができます。

31.3. エラーのフィルタリング

Manage Execution Errors 画面の実行エラーについては、Filters パネルを使用して、選択した基準に合致するエラーのみを表示できます。

前提条件

  • Manage Execution Errors 画面が開きます。

手順

必要に応じて、画面左側の Filters パネルを変更します。

図31.1 エラーのフィルタリング: デフォルト表示

The *Filters* panel
タイプ

タイプ別に実行エラーをフィルタリングします。フィルタリングの種類は複数選択できます。すべてのタイプの選択を解除すると、タイプに関係なく、すべてのエラーが表示されます。

以下の実行エラータイプを利用できます。

  • DB
  • タスク
  • Process
  • Job
プロセスインスタンス ID

プロセスインスタンス ID でフィルタリングします。

入力: Numeric

ジョブID

ジョブ ID でフィルタリングします。ジョブ ID は、ジョブの作成時に自動的に作成されます。

入力: Numeric

ID

プロセスインスタンス ID でフィルタリングします。

入力: Numeric

確認済み
エラーを承認したかどうかでフィルタリングします。
エラー日付

イベントが発生した日付または時間でフィルタリングします。

このフィルターには、以下のような、フィルターのクイックオプションがあります。

  • 過去 1 時間
  • 本日
  • 過去 24 時間
  • 過去 7 日間
  • 過去 30 日間
  • カスタム

    Custom オプションを選択してカレンダーツールを開き、日付と時刻の範囲を選択します。

    図31.2 日付で検索

    Search by Date Range

31.4. 実行エラーの自動承認

デフォルトでは、実行エラーは実行時に承認されません。すべての実行エラーを手動で確認しなくてもよいように、ジョブを自動承認またはすべての実行エラーに設定することができます。

注記

自動承認ジョブを設定すると、ジョブはデフォルトで毎日実行されます。自動承認実行エラーを 1 回だけ確認するには、SingleRun パラメーターを true に設定します。

手順

  1. Business Central で MenuManageJobs と選択します。
  2. 画面右上の New Job をクリックします。
  3. Business Key フィールドにジョブの ID を入力します。
  4. Type フィールドに、自動承認ジョブのタイプを入力します。

    • org.jbpm.executor.commands.error.JobAutoAckErrorCommand: エラーに関連するジョブがキャンセル、完了、または再スケジュールされるタイプ Job のすべての実行エラーを確認します。
    • org.jbpm.executor.commands.error.TaskAutoAckErrorCommand: タイプ Task のすべての実行エラーを確認します。この実行エラーは、エラーに関連するタスクが終了状態にある(completed、failed、exited、廃止された)。
    • org.jbpm.executor.commands.error.ProcessAutoAckErrorCommand: エラーの発生元であるプロセスインスタンスがすでに終了している(完了または中止)、またはエラーの発信元となるタスクがすでに終了しているすべてのタイプの実行エラーをすべて確認します。
  5. Due On でジョブの完了時間を選択します。

    • ジョブをすぐに実行する場合は、Run now オプションを選択します。
    • 特定の時間にジョブを実行する場合は、Run later を選択します。Run later オプションの横に日時フィールドが表示されます。フィールドをクリックしてカレンダーを開き、ジョブの特定の日時をスケジュールします。

      図31.3 自動承認ジョブのスケジュール設定の例

      Scheduling an auto-acknowledge job
  6. デフォルトでは、初期実行後、ジョブは毎日 1 回実行されます。この設定を変更するには、以下の手順を実行します。

    1. Advanced タブをクリックします。
    2. Add Parameter ボタンをクリックします。
    3. ジョブに適用する設定パラメーターを入力します。

      • ジョブを一度だけ実行するには、値を true を指定して SingleRun パラメーターを追加します。
      • ジョブを定期的に実行するには 、2h、5d 、1m などの有効な時間式の値を指定して NextRun パラメーターを追加します。
    4. オプション: カスタムのエンティティーマネージャーファクトリー名を設定するには、Em fName パラメーターを入力します。

      図31.4 自動承認ジョブのパラメーター設定の例

      Setting parameters for an auto-acknowledge job
  7. Create をクリックしてジョブを作成し、Manage Jobs ページに戻ります。

31.5. エラー一覧のクリーンアップ

プロセスエンジンは、実行エラーを ExecutionErrorInfo データベーステーブル に保存します。テーブルをクリーンアップし、エラーを永続的に削除する場合は、org .jbpm.executor.commands.ExecutionErrorCleanupCommand コマンドでジョブをスケジュールできます。

このコマンドは、完了したプロセスインスタンスまたは中断されたプロセスインスタンスに関連する実行エラーを削除します。

手順

  1. Business Central で MenuManageJobs と選択します。
  2. 画面右上の New Job をクリックします。
  3. Business Key フィールドにジョブの識別子を入力します。
  4. Type フィールドに org.jbpm.executor.commands.ExecutionErrorCleanupCommand を入力します。
  5. Due On でジョブの完了時間を選択します。

    • ジョブをすぐに実行する場合は、Run now オプションを選択します。
    • 特定の時間にジョブを実行する場合は、Run later を選択します。Run later オプションの横に日時フィールドが表示されます。フィールドをクリックしてカレンダーを開き、ジョブの特定の日時をスケジュールします。
  6. Advanced タブをクリックします。
  7. 必要に応じて以下のパラメーターを追加します。

    • DateFormat: パラメーターの日付の形式。設定されていない場合、SimpleDateFormat クラスのパターンと同様に、yyyy-MM-dd が使用されます。
    • EmfName: クエリーに使用されるカスタムエンティティーマネージャーファクトリーの名前。
    • SingleRun: ジョブを 1 回の実行をスケジュールします。true に設定するとジョブは 1 回実行され、繰り返し実行用にスケジュールされません。
    • NextRun: ジョブが一定期間繰り返し実行されるようスケジュールします。値は有効な時間式でなければなりません(例: 1d5h 、10m )。
    • OlderThan: 設定した日付より古いエラーのみを削除します。値は date である必要があります。
    • OlderThanPeriod: 現在の時間と比較して、特定の期間より古いエラーのみを削除します。値は有効な時間式でなければなりません(例: 1d5h 、10m )。
    • ForProcess: プロセス定義に関連するエラーのみを削除します。この値は、プロセス定義識別子である必要があります。
    • ForProcessInstance: プロセスインスタンスに関連するエラーのみを削除します。この値は、プロセスインスタンスの識別子でなければなりません。
    • ForDeployment: デプロイメント ID に関連するエラーのみを削除します。値はデプロイメント識別子である必要があります。

第32章 プロセスインスタンスの移行

プロセスインスタンス移行 (PIM) は、ユーザーインターフェースとバックエンドを含むスタンドアロンのサービスで、Thorntail uber-JAR としてパッケージされます。これは Quarkus 変更可能な JAR ファイルとしてパッケージ化されます。プロセスインスタンスの移行サービスを使用して、2 つの異なるプロセス定義間の移行を定義できます。これは移行プランと呼ばれます。特定の KIE Server で実行中のプロセスインスタンスに対して、この移行プランを適用できます。

PIM サービスの詳細は、KIE (Drools, OptaPlanner and jBPM ) の「Process Instance Migration Service」を参照してください。

32.1. プロセスインスタンスの移行サービスのインストール

プロセスインスタンス移行 (PIM) サービスを使用して、移行プランを作成、エクスポート、実行します。PIM サービスは、GitHub リポジトリー経由で提供されます。PIM サービスをインストールするには、GitHub リポジトリーのクローンを作成してから、サービスを実行して、Web ブラウザーにアクセスします。

前提条件

  • バックアップを作成した Red Hat Process Automation Manager 開発環境でプロセスを定義している。
  • Java Runtime Environment(JRE)バージョン 11 以降がインストールされている。

手順

  1. Red Hat Process Automation Manager 7.12 の Software Downloads ページから rhpam-7.12.0-add-ons.zip ファイルをダウンロードします。
  2. ダウンロードしたアーカイブを展開します。
  3. アドオンアーカイブから rhpam-7.12.0-process-migration-service-standalone.jar ファイルを、任意の場所に移動します。
  4. PIM サービスを開始します。

    $ java -jar rhpam-7.12.0-process-migration-service-standalone.jar -s./config.yml
  5. 関連する認証方法が auth-method に設定されていることを確認します。有効な値は file、jdbc および ldap です。以下は例になります。

    LDAP メソッドの例

    pim:
      auth-method: ldap
    quakus:
      security:
        ldap:
          dir-context:
            url: ldap://localhost:10389
            principal: uid=admin,ou=system
            password: secret
          identity-mapping:
            search-base-dn: ou=users,dc=example,dc=com
            rdn-identifier: uid
            attribute-mappings:
              from: uid
              filter: uniqueMember
              filter-base-dn: ou=groups,dc=example,dc=com

    ファイル 方法の例

    pim:
      auth-method: file
    quarkus:
      security:
        users:
          file:
            enabled: true
            plain-text: true
            users: users.properties
            roles: roles.properties

    JDBC メソッドの例

    pim:
      auth-method: jdbc
    quarkus:
      jdbc:
        principal-query:
          sql: SELECT u.password, u.role FROM users u WHERE u.username=?
          clear-password-mapper:
            enabled: true
            password-index: 1
          attribute-mappings:
            0:
              index: 2
              to: groups

  6. KIE Server への接続を設定するには、以下のように KIE Server をカスタム設定ファイルに追加します。

    kieservers:
      - host: http://kieserver1.example.com:8080/kie-server/services/rest/server
        username: admin
        password: admin123
      - host: https://kieserver2.example.com:8443/kie-server/services/rest/server
        username: foo
        password: bar

    他の設定パラメーターで異なる設定ソースを使用できます。詳細は、CONFIGURATION REFERENCE GUIDE を参照してください。

  7. quarkus.launch.rebuild システムプロパティーが true に設定されていることを確認します。

    java -jar -Dquarkus.launch.rebuild=true -Dquarkus.datasource.db-kind=mariadb -Dquarkus.flyway.sql-migration-prefix=mariadb target/quarkus-app/quarkus-run.jar
  8. PIM サービスを起動して実行後に、Web ブラウザーに http://localhost:8080 と入力します。

32.2. 移行プランの作成

プロセスインスタンス移行 (PIM) サービスの Web UI で、移行プランと呼ばれる、2 つの異なるプロセス間の移行を定義できます。

前提条件

  • バックアップを作成した Red Hat Process Automation Manager 開発環境でプロセスを定義している。
  • プロセスインスタンス移行サービスが実行中である。

手順

  1. Web ブラウザーで http://localhost:8080 と入力します。
  2. PIM サービスにログインします。
  3. Process Instance Migration ページの右上隅の KIE サービスリストから、移行プランを追加する KIE サービスを選択します。
  4. Add Plan をクリックします。Add Migration Plan Wizard ウィンドウが開きます。
  5. Name フィールドで、移行プランの名前を入力します。
  6. オプション: Description フィールドで、移行プランの説明を入力します。
  7. Next をクリックします。
  8. Source ContainerID フィールドで、ソースコンテナー ID を入力します。
  9. Source ProcessId フィールドで、ソースプロセス ID を入力します。
  10. Copy Source To Target をクリックします。
  11. Target ContainerID フィールドで、ターゲットコンテナー ID を入力します。
  12. Retrieve Definition from backend をクリックして Next をクリックします。

    pim migration wizard
  13. Source Nodes リストから、マッピングするソースノードを選択します。
  14. Target Nodes リストから、マッピングするターゲットノードを選択します。
  15. Source Process Definition Diagram ペインが表示されない場合は、Show Source Diagram をクリックします。
  16. Target Process Definition Diagram ペインが表示されない場合には、Show Target Diagram をクリックします。
  17. オプション: ダイアグラムペインでビューを変更するには、以下のタスクのいずれかを実行します。

    • テキストを選択するには、 pim selection icon アイコンを選択します。
    • 選択 (pan) するには、 pim pan icon アイコンを選択します。
    • ズームインするには、 pim zoom in icon アイコンを選択します。
    • ズームアウトするには、 pim zoom out icon アイコンを選択します。
    • ビューアーに適合させるには、 pim fit to icon アイコンを選択します。
  18. Map these two nodes をクリックします。
  19. Next をクリックします。
  20. 必要に応じて、JSON ファイルとしてエクスポートするには、Export をクリックします。
  21. Review & Submit タブで、プランをレビューして、Submit Plan をクリックします。
  22. 必要に応じて、JSON ファイルとしてエクスポートするには、Export をクリックします。
  23. 応答を確認して、Close をクリックします。

32.3. 移行プランの編集

プロセスインスタンス移行 (PIM) サービスの Web UI で移行プランを編集できます。変更できるのは、移行プランの名前、説明、指定されたノード、およびプロセスインスタンスです。

前提条件

  • バックアップを作成した Red Hat Process Automation Manager 開発環境でプロセスを定義している。
  • PIM サービスが実行している。

手順

  1. Web ブラウザーで http://localhost:8080 と入力します。
  2. PIM サービスにログインします。
  3. Process Instance Migration ページ内で、編集する移行計画の行で Edit Migration Plan pim edit icon アイコンをクリックします。Edit Migration Plan ウィンドウが開きます。
  4. 各タブで、変更内容を加えます。
  5. Next をクリックします。
  6. 必要に応じて、JSON ファイルとしてエクスポートするには、Export をクリックします。
  7. Review & Submit タブで、プランをレビューして、Submit Plan をクリックします。
  8. 必要に応じて、JSON ファイルとしてエクスポートするには、Export をクリックします。
  9. 応答を確認して、Close をクリックします。

32.4. 移行プランのエクスポート

プロセスインスタンス移行 (PIM) サービスの Web UI で、JSON ファイルとして移行プランをエクスポートできます。

前提条件

  • バックアップを作成した Red Hat Process Automation Manager 開発環境でプロセスを定義している。
  • PIM サービスが実行している。

手順

  1. Web ブラウザーで http://localhost:8080 と入力します。
  2. PIM サービスにログインします。
  3. Process Instance Migration ページで、実行する移行計画の行で Export Migration Plan pim export icon アイコンを選択します。Export Migration Plan ウィンドウが開きます。
  4. 確認して、Export をクリックします。

32.5. 移行プランの実行

プロセスインスタンス移行 (PIM) サービスの Web UI で、移行プランを実行できます。

前提条件

  • バックアップを作成した Red Hat Process Automation Manager 開発環境でプロセスを定義している。
  • PIM サービスが実行している。

手順

  1. Web ブラウザーで http://localhost:8080 と入力します。
  2. PIM サービスにログインします。
  3. Process Instance Migration ページで、実行する移行計画の行で Execute Migration Plan pim execute icon アイコンを選択します。Execute Migration Plan Wizard ウィンドウが開きます。
  4. 移行プランテーブルから、移行する実行中のプロセスインスタンスの行にあるチェックボックスを選択して、Next をクリックします。
  5. Callback URL フィールドで、コールバック URL を入力します。
  6. Run migration の右側で、以下のタスクの 1 つを実行します。

    • 移行をすぐ実行するには、Now を選択します。
    • 移行をスケジュールするには、Schedule を選択して、テキストフィールドで 06/20/2019 10:00 PM など日時を入力します。
  7. Next をクリックします。
  8. 必要に応じて、JSON ファイルとしてエクスポートするには、Export をクリックします。
  9. Execute Plan をクリックします。
  10. 必要に応じて、JSON ファイルとしてエクスポートするには、Export をクリックします。
  11. 応答を確認して、Close をクリックします。

32.6. 移行プランの削除

プロセスインスタンス移行 (PIM) サービスの Web UI で移行プランを削除できます。

前提条件

  • バックアップを作成した Red Hat Process Automation Manager 開発環境でプロセスを定義している。
  • PIM サービスが実行している。

手順

  1. Web ブラウザーで http://localhost:8080 と入力します。
  2. PIM サービスにログインします。
  3. Process Instance Migration ページで、削除する移行計画の行にある Delete pim delete icon アイコンを選択します。Delete Migration Plan ウィンドウが開きます。
  4. Delete をクリックして削除を確定します。

パート IV. ケース管理の設計およびビルド

開発者は、Business Central を使用して、ケース管理できるように、Red Hat Process Automation Manager アセットを設定できます。

ケース管理はビジネスプロセス管理 (BPM) とは異なり、一連の目的達成の手順に焦点を当てるのではなく、ケース全体で扱う実際のデータに、より重点を置きます。目標を達成するために実行する一連の手順ではなく、ケース全体で処理される実際のデータに重点を置いています。ケースデータは、自動的なケース処理における情報の中で最も重要な要素ですが、ビジネスの状況や意思決定はケース作業担当者の管理下に置かれます。

Red Hat Process Automation Manager では、Business Central に IT_Orders サンプルが含まれます。本書では、ケース管理の概念を説明して例を提示する場合にこのサンプルを参照します。

ケース管理の使用ガイド』 のチュートリアルでは、Business Central で IT_Orders プロジェクトを作成してテストする方法を説明します。本ガイドでコンセプトを確認した後に、チュートリアルの説明に沿って、ご自身のケースプロジェクトを正常に作成してデプロイし、テストできるように、進めてください。

前提条件

第33章 ケース管理

ケース管理は、Business Process Management (BPM) の拡張機能で、適用可能なビジネスプロセスを管理します。

BPM は、反復可能で共通のパターンを持つタスクの自動化に使用する管理プラクティスで、プロセスを完全化して最適化を図ることに焦点を当てます。ビジネスプロセスは通常、ビジネスの目標へのパスを明確に定義し、モデル化されています。これにより、通常は、量産原理に基づいた、多くの予測可能性が必要となります。ただし、実在する多くのアプリケーションでは、(可能なパス、脱線、例外など) 開始と終了を完全に説明することができません。特定のケースでプロセス指向のアプローチを使用すると、複雑なソリューションとなり、管理が困難になります。

ケース管理は、ルーティンで、予測可能なタスクを対象する BPM の効率指向アプローチとは対照的に、繰り返さず、予測できないプロセスに対する問題解決を提供します。ここでは、プロセスが前もって予測できない、一回限りの状況が管理されます。ケース定義は、通常、特定のマイルストーン、そして最終的には企業目標となるように、直接または間接的につながる結合が弱いプロセスの断片で構成されます。一方、プロセスは、ランタイム時に発生する変更に応えて動的に管理されます。

Red Hat Process Automation Manager のケース管理には、以下のコアプロセスエンジン機能が含まれます。

  • ケースファイルのインスタンス
  • ケースごとのランタイム戦略
  • ケースコメント
  • マイルストーン
  • ステージ
  • アドホックフラグメント
  • 動的タスクおよびプロセス
  • ケース識別子 (相関キー)
  • ケースのライフサイクル (閉じる、再開、キャンセル、破棄)

ケース定義は常にアドホックのプロセス定義で、明示的な開始ノードは必要ありません。ケース定義は、ビジネスユースケースの主なエントリーポイントです。

プロセス定義は、ケースでサポートされる構成概念として導入され、ケース定義に指定された通り、または必要に応じて追加処理に動的に取り込むために呼び出すことができます。ケース定義は、以下の新しいオブジェクトを定義します。

  • アクティビティー (必須)
  • ケースファイル (必須)
  • マイルストーン
  • ロール
  • ステージ

第34章 Case Management Model and Notation (CMMN)

Case Management Model and Notation (CMMN) ファイルのコンテンツをインポートして表示し、変更するには、Business Central を使用します。プロジェクトを作成するには、ケース管理モデルをインポートしてから、そのケース管理モデルをアセットリストから選択して標準の XML エディターで表示または変更できます。

以下の CMMN コンストラクトが現在利用できます。

  • Tasks (human task、process task、decision task、case task)
  • Discretionary tasks (上記と同じ)
  • ステージ
  • マイルストーン
  • Case file items
  • Sentries (entry および exit)

次のタスクはサポート対象外です。

  • 必須
  • Repeat
  • Manual activation

個別タスクの Sentry は、entry 基準に限定されていますが、entry と exit の基準は stages と milestones でサポートされています。Decision task はデフォルトで DMN decision にマッピングされます。イベントリスナーはサポートされていません。

Red Hat Process Automation Manager には CMMN のモデリング機能は含まれておらず、モデルの実行のみに焦点を当てています。

第35章 ケースファイル

ケースインスタンスは、ケース定義を含む 1 つのインスタンスで、ビジネスコンテキストをカプセル化します。ケースインスタンスデータはすべてケースファイルに保存され、特定のケースインスタンスに参加する可能性のあるすべてのプロセスインスタンスからアクセスできます。各ケースインスタンスと、ケースインスタンスのケースファイルは、他のケースから完全に分離されています。ケースファイルにアクセスできるのは、必要なケースロールに割り当てられているユーザーのみです。

ケースファイルは、ケースインスタンス全体のデータリポジトリーとして、ケースの管理に使用します。このファイルには、全ロール、データオブジェクト、データマップなどのデータが含まれます。ケースを完了してから、同じケースファイルを添付して、後日再度開くことができます。ケースインスタンスはいつでも終了でき、完了に特別な解決策を提示する必要はありません。

ケースファイルには、埋め込み型のドキュメント、参考資料、PDF 添付ファイル、Web リンクなどのオプションも含めることができます。

35.1. ケース ID プレフィックスの設定

caseId パラメーターは、ケースインスタンス ID の文字列値です。Red Hat Process Automation Manager デザイナーで Case ID Prefix を設定して、異なるケースタイプを識別できます。

以下の手順では IT_Orders サンプルプロジェクトを使用し、特定のビジネスニーズに合わせて、一意のケース ID 接頭辞を作成します。

前提条件

  • Business Central で IT_Orders サンプルプロジェクトを開いている。

手順

  1. Business Central で、MenuDesignProjects に移動します。既存のプロジェクトがある場合は、MySpace のデフォルトのスペースをクリックして、Add Project ドロップダウンメニューから Try Samples を選択して、サンプルにアクセスできます。既存のプロジェクトがない場合には、Try samples をクリックします。
  2. IT_Orders を選択し、OK をクリックします。
  3. Assets ウィンドウで orderhardware ビジネスプロセスをクリックしてデザイナーを開きます。
  4. キャンバスの空き領域をクリックし、右上隅の Properties diagram properties アイコンをクリックします。
  5. 下方向にスクロールして、Case Management を展開します。
  6. Case ID Prefix フィールドに ID 値を入力します。ID 形式は、内部で ID-XXXXXXXXXX として定義されています。ここで、XXXXXXXXXX は、ケースインスタンスに一意の ID を提供する生成された番号です。

    接頭辞が指定されていない場合には、デフォルトの接頭辞 CASE と以下の識別子が使用されます。

    CASE-0000000001

    CASE-0000000002

    CASE-0000000003

    プレフィックスは、任意で指定できます。たとえば、IT の接頭辞を指定する場合には、次の識別子が生成されます。

    IT-0000000001

    IT-0000000002

    IT-0000000003

    図35.1 ケース ID 接頭辞のフィールド

    case prefix

35.2. ケース ID 式の設定

以下の手順は、IT_Orders サンプルプロジェクトを使用して、設定したメタデータ属性キーで caseId を生成する式をカスタマイズする方法を説明します。

前提条件

  • Business Central で IT_Orders サンプルプロジェクトを開いている。

手順

  1. Business Central で、MenuDesignProjects に移動します。既存のプロジェクトがある場合は、MySpace のデフォルトのスペースをクリックして、Add Project ドロップダウンメニューから Try Samples を選択して、サンプルにアクセスできます。既存のプロジェクトがない場合には、Try samples をクリックします。
  2. IT_Orders を選択し、OK をクリックします。
  3. Assets ウィンドウで orderhardware ビジネスプロセスをクリックしてデザイナーを開きます。
  4. キャンバスの空き領域をクリックし、右上隅の Properties diagram properties アイコンをクリックします。
  5. Advanced メニューを展開して Metadata Attributes フィールドにアクセスします。
  6. customCaseIdPrefix メタデータ属性に以下の関数を 1 つ指定します。

    • LPAD: 左パディング
    • RPAD: 右パディング
    • TRUNCATE: 省略
    • UPPER: 大文字

    図35.2 customCaseIdPrefix メタデータ属性の UPPER 関数

    expressions

    この例では、type は、Case File Variables フィールドに設定された変数です。この変数は、ランタイム時に type1 の値に変更できます。UPPER は事前に組み込まれた関数で変数を大文字に変換します。ただし、IT- は静的な接頭辞となっています。そのため、動的なケース ID は IT-TYPE1-0000000001IT-TYPE1-0000000002、および IT-TYPE1-0000000003 のようになります。

    図35.3 ケースファイル変数

    case vars

    customCaseIdPrefixIsSequence ケースメタデータ属性が false (デフォルト値 true) に設定されている場合は、ケースインスタンスでシーケンスが作成されず、caseIdPrefix 式がケース ID になります。たとえば、社会保障番号をもとにケース ID を生成した場合には、特定のシーケンスまたはインスタンス ID は必要ありません。

    customCaseIdPrefixIsSequence メタデータ属性はオプションで追加し、false (デフォルト値 true) に設定してケース ID の番号順を無効にします。カスタムのケース ID に使用する式にケースファイル変数が含まれており、一般的なシーケンス値ではなく、一意のビジネス ID で表現されている場合に便利です。たとえば、社会保障番号をもとにケース ID を生成した場合には、特定のシーケンスまたはインスタンス ID は必要ありません。以下の例では、SOCIAL_SECURITY_NUMBER は、ケースファイル変数として宣言された変数でもあります。

    図35.4 customCaseIdPrefixIsSequence metadata attribute

    prefix false

    IS_PREFIX_SEQUENCE ケースファイル変数はランタイム時にオプションで追加され、ケース ID をシーケンスで生成するのを無効または有効にします。たとえば、個人医療保険の補償範囲にシーケンスの接尾辞を作成する必要はありません。マルチホーム保険契約の場合は、企業は IS_PREFIX_SEQUENCE のケース変数を true に設定し、家族の一人ずつ、順番に番号を付与します。

    customCaseIdPrefixIsSequence メタデータ属性を静的に false として使用するか、または IS_PREFIX_SEQUENCE ケースファイル変数を使用して、ランタイム時に値を false に設定すると、どちらも同じ結果が得られます。

    図35.5 IS_PREFIX_SEQUENCE ケース変数

    prefix sequence

第36章 サブケース

サブケースは、他のケースを含めて複雑なケースを柔軟に構成できます。つまり、大規模で複雑なケースを複数の抽象階層、さらには複数のケースプロジェクトに分割できるようになります。これは、プロセスを複数のサブプロセスに分割するのと類似します。

サブケースは、別のケースインスタンス、または通常のプロセスインスタンスから呼び出された別のケース定義です。これには、通常のケースインスタンスの機能がすべて含まれます。

  • 専用のケースファイルがある。
  • 別のケースインスタンスから分離している。
  • ケースロールのセットを所有する。
  • 独自のケースプレフィックスがある。

ケースの定義にサブクラスを追加するには、プロセスデザイナーを使用できます。サブクラスは、ケースプロジェクト内のケースのことで、プロセスに含まれるサブプロセスに似ています。サブクラスは、通常のビジネスプロセスに追加することもできます。こうすることで、プロセスインスタンス内からケースを起動できます。

ケース定義へのサブケースの追加に関する詳細は、『 ケース管理の使用ガイド』を参照してください。

Sub Case Data I/O ウィンドウでは、サブケースを設定して起動できるように、以下の入力パラメーターをサポートします。

case management subcase dataio
独立
ケースインスタンスが独立しているかどうかを、プロセスデザイナーに通知する任意のインジケーター。独立している場合は、メインのケースインスタンスは、完了するまで待機しません。デフォルトでは、このプロパティーの値は false です。
GroupRole_XXX
ケースロールマッピングの任意のグループ。このケースインスタンスに所属するロール名はここで参照できるので、メインのケースの参加者を、サブケースの参加者にマッピングできます。つまり、メインケースに割り当てられたグループは、サブケースに自動的に割り当てられます。XXX はロール名に、プロパティーの値は、グループのロール割り当ての値に置き換えてください。
DataAccess_XXX
任意のデータアクセス制限。XXX は、データ項目の名前に、プロパティーの値はアクセス制限に置き換えてください。
DestroyOnAbort
サブケースのアクティビティーが中断された場合に、サブケースを取り消して、破棄するかどうかをプロセスエンジンに指示する任意のインジケーター。デフォルト値は、true です。
UserRole_XXX
ケースロールマッピングの任意のユーザー。ここで、ケースインスタンスのロール名を参照できるので、メインのケースの所有者を、サブケースの所有者にマッピングできます。つまり、メインケースに割り当てられたユーザーは、サブケースに自動的に割り当てられます。XXX はロール名に、プロパティーの値は、ユーザーのロール割り当ての値に置き換えてください。
Data_XXX
ケースインスタンスまたはビジネスプロセスからサブケースへの任意のデータマッピング。XXX は、対象のサブクラスに含まれるデータ名に置き換えます。このパラメーターは、必要に応じていくつでも指定できます。
DeploymentId
任意のデプロイメント ID (または KIE Server の場合はコンテキスト ID)。この ID で、対象のケース定義がどこにあるかを指定します。
CaseDefinitionId
開始するのに必要なケース定義 ID
CaseId
起動後のサブケースのケースインスタンスID

第37章 アドホックおよび動的タスク

エンドツーエンドプロセスに厳密に従う代わりに、ケース管理を使用して、アドホックにタスクを実行できます。タスクは、ランタイム時にケースに動的に追加することもできます。

アドホックタスクが、ケースモデリングフェーズに定義されます。AdHoc Autostart として設定されていないアドホックタスクは任意であるため、ケース時に処理されない場合もあります。したがって、そのタスクは、1 つのイベントまたは 1 つの Java API からトリガーするる必要があります。

動的タスクはケース実行時に定義され、ケース定義モデルには表示されません。動的タスクは、ケース時に発生する特定の要求に対応します。Red Hat Process Automation Manager Showcase のデモにあるように、タスクはケースに追加され、ケースアプリケーションを使用していつでも作業できます。動的タスクは、Java および Remote API コールから追加することもできます。

動的タスクはユーザーまたはサービスアクティビティーとなりますが、アドホックタスクはどのタスクタイプにも設定できます。タスクタイプに関する詳細は、『BPMN モデルを使用したビジネスプロセスの作成』の「プロセスデザイナーの BPMN2 タスク」を参照してください

動的プロセスは、ケースプロジェクトから再利用できるサブプロセスです。

内向き接続がないアドホックノードは、ノードの AdHoc Autostart プロパティーで設定でき、ケースインスタンスの起動時に自動的に開始します。

アドホックタスクは、ケース定義に設定される任意のタスクです。このタスクはアドホックであるため、通常はシグナルイベントまたは Java API コールによって発生します。

第38章 KIE Server REST API を使用してケースへの動的タスクおよびプロセスの追加

ランタイム時に動的タスクとプロセスをケースに追加して、ケースのライフサイクル時に発生する可能性がある予定外の変更を処理できます。動的アクティビティーはケース定義に定義されているわけでないため、定義したアドホックタスクまたはプロセスが可能な方法をシグナル化することはできません。

以下の動的アクティビティーをケースに追加できます。

  • ユーザータスク
  • サービスタスク (作業項目として実装されるすべてのタイプ)
  • 再利用可能なサブプロセス

動的ユーザーおよびサービスタスクがケースインスタンスに追加され、直ちに実行されます。動的タスクの特性に従って、開始して完了を待つ (ユーザータスク) か、実行後に直接完了 (サービスタスク) します。動的サブプロセスの場合、プロセスエンジンは、この動的プロセスに対するプロセス定義を含む KJAR を要求して、ID でプロセスを探して実行します。このサブプロセスはケースに属し、ケースファイルのすべてのデータにアクセスします。

Swagger REST API アプリケーションを使用して、動的タスクおよびサブプロセスを作成します。

前提条件

手順

  1. Web ブラウザーで、以下の URL を開きます。

    http://localhost:8080/kie-server/docs

  2. Case instances :: Case Management で利用可能なエンドポイントの一覧を開きます。
  3. POST メソッドのエンドポイントを探し、動的アクティビティーを作成します。

    POST /server/containers/{id}/cases/instances/{caseId}/tasks

    ケースインスタンスに動的タスク (ペイロードに合わせてユーザーまたはサービスを選択) を追加します。

    POST /server/containers/{id}/cases/instances/{caseId}/stages/{caseStageId}/tasks

    ケースインスタンス内の特定のステージに動的タスク (ペイロードに合わせてユーザーまたはサービスを選択) を追加します。

    POST /server/containers/{id}/cases/instances/{caseId}/processes/{pId}

    プロセス ID で識別される動的サブプロセスをケースインスタンスに追加します。

    POST /server/containers/{id}/cases/instances/{caseId}/stages/{caseStageId}/processes/{pId}

    ケースインスタンス内のステージに、プロセス ID で識別される動的サブプロセスを追加します。

    swagger case management dynamic
  4. Swagger UI を開くには、動的タスクまたはプロセスの作成に必要な REST エンドポイントをクリックします。
  5. Try it out をクリックして、動的アクティビティーの作成に必要なパラメーターとボディーを入力します。
  6. Execute をクリックして、REST API を使用する動的タスクまたはサブプロセスを作成します。

38.1. KIE Server REST API を使用した動的ユーザータスクの作成

ケースの実行時には、REST API を使用して、動的ユーザータスクを作成できます。動的ユーザータスクを作成するには、次の情報を指定する必要があります。

  • タスク名
  • タスクの件名 (任意ですが、推奨されます)
  • アクターまたはグループ (もしくはその両方)
  • 入力データ

以下の手順に沿って、Swagger REST API ツールを使用して、Business Central で利用可能な IT_Orders サンプルプロジェクトの動的ユーザータスクを作成します。Swagger のない REST API でも、同じエンドポイントを利用できます。

前提条件

手順

  1. Web ブラウザーで、以下の URL を開きます。

    http://localhost:8080/kie-server/docs.

  2. Case instances :: Case Management で利用可能なエンドポイントの一覧を開きます。
  3. 以下の POST メソッドのエンドポイントをクリックし、詳細を開きます。

    /server/containers/{id}/cases/instances/{caseId}/tasks

  4. Try it out をクリックしてから、以下のパラメーターを入力します。

    表38.1 パラメーター

    名前説明

    id

    itorders

    caseId

    IT-0000000001

    要求ボディー

    {
     "name" : "RequestManagerApproval",
     "data" : {
       "reason" : "Fixed hardware spec",
       "caseFile_hwSpec" : "#{caseFile_hwSpec}"
      },
     "subject" : "Ask for manager approval again",
     "actors" : "manager",
     "groups" : ""
    }

  5. Swagger アプリケーションで、Execute をクリックして動的タスクを作成します。

この手順は、ケース IT-000000001 に関連付けられている新しいユーザータスクを作成します。このタスクは、manager ケースロールに割り当てるユーザーに割り当てられます。このタスクには、2 つの入力変数があります。

  • reason
  • caseFile_hwSpec: プロセスまたはケースデータのランタイム取得を可能にする式として定義されます。

タスクによっては、タスク名で検索できる、ユーザーフレンドリーな UI を提供するフォームが提供されている場合があります。IT Orders のケースでは、RequestManagerApproval タスクには、KJAR に RequestManagerApproval-taskform.form フォームが含まれます。

タスクを作成すると、Business Central で、タスクが割り当てられたユーザーの Task Inbox にタスクが表示されます。

38.2. KIE Server REST API を使用した動的サービスタスクの作成

サービスタスクは通常、ユーザータスクより複雑ではありませんが、正常に実行するにはさらにデータが必要となる可能性があります。サービスタスクには以下の情報が必要です。

  • name: アクティビティー名
  • nodeType: 作業アイテムハンドラーの検索に使用するノードタイプ
  • data: 正しく実行を処理するためのデータのマッピング

ケースの実行時に、ユーザータスクと同じエンドポイントを使用して動的サービスタスクを作成できますが、ボディーペイロードは異なります。

以下の手順に沿って、Swagger REST API ツールを使用して、Business Central で利用可能な IT_Orders サンプルプロジェクトの動的サービスタスクを作成します。Swagger のない REST API でも、同じエンドポイントを利用できます。

前提条件

手順

  1. Web ブラウザーで、以下の URL を開きます。

    http://localhost:8080/kie-server/docs

  2. Case instances :: Case Management で利用可能なエンドポイントの一覧を開きます。
  3. 以下の POST メソッドのエンドポイントをクリックし、詳細を開きます。

    /server/containers/{id}/cases/instances/{caseId}/stages/{caseStageId}/tasks

  4. Try it out をクリックしてから、以下のパラメーターを入力します。

    表38.2 パラメーター

    名前説明

    id

    itorders

    caseId

    IT-0000000001

    要求ボディー

    {
     "name" : "InvokeService",
     "data" : {
       "Parameter" : "Fixed hardware spec",
       "Interface" : "org.jbpm.demo.itorders.services.ITOrderService",
       "Operation" : "printMessage",
       "ParameterType" : "java.lang.String"
      },
     "nodeType" : "Service Task"
    }

  5. Swagger アプリケーションで、Execute をクリックして動的タスクを作成します。

この例では、Java ベースのサービスが実行されます。この例には、 org.jbpm.demo.itorders.services.ITOrderService のパブリッククラスと、String が 1 つ指定された printMessage パブリックメソッド、インターフェースで構成されます。このサービスを実行すると、パラメーターの値がメソッドに渡されて実行されます。

サービスタスク作成に指定する数字、名前、他のタイプのデータは、サービスタスクのハンドラーの実装により異なります。提供されている例では、org.jbpm.process.workitem.bpmn2.ServiceTaskHandler ハンドラーが使用されています。

注記

カスタムサービスタスクの場合は、Work Item Handlers セクションのデプロイメント記述子にハンドラーが登録されていることを確認します。名前は、動的サービスタスクの作成に使用される nodeType と同じです。デプロイメント記述子の登録に関する詳細は、「Red Hat Process Automation Manager でのプロセスサービスの開発 」を参照してください。

38.3. KIE Server REST API を使用した動的サブプロセスの作成

動的サブクラスを作成すると、任意のデータのみが提示されます。動的タスクの作成時には、特別なパラメーターはありません。

以下の手順では、Swagger REST API ツールを使用して、Business Central で利用可能な IT_Orders サンプルプロジェクトの動的なサブプロセスタスクを作成する方法を説明します。Swagger のない REST API でも、同じエンドポイントを利用できます。

前提条件

手順

  1. Web ブラウザーで、以下の URL を開きます。

    http://localhost:8080/kie-server/docs.

  2. Case instances :: Case Management で利用可能なエンドポイントの一覧を開きます。
  3. 以下の POST メソッドのエンドポイントをクリックし、詳細を開きます。

    /server/containers/{id}/cases/instances/{caseId}/processes/{pId}

  4. Try it out をクリックして以下のパラメーターを入力します。

    表38.3 パラメーター

    名前説明

    id

    itorders

    caseId

    IT-0000000001

    pId

    itorders-data.place-order

    pId は、作成するサブプロセスのプロセス ID です。

    要求ボディー

    {
     "placedOrder" : "Manually"
    }

  5. Swagger アプリケーションで、Execute をクリックして動的サブプロセスを開始します。

この例では、ケース ID IT-0000000001place-order サブプロセスが IT 発注ケースで開始しています。Business Central の MenuManageProcess Instances の下で、このプロセスを確認できます。

説明に使用されている例を正しく実行したら、place-order プロセスがプロセスインスタンスの一覧に表示されます。プロセスの詳細を開き、プロセスの相関キーに IT 発注ケースインスタンス ID が含まれていることに注意してください。Process Variables 一覧には、REST API 本文に配信されているように、Manually 値を持つ placedOrder 変数が含まれます。

第39章 コメント

ケース管理では、コメントを使用すればケースインスタンス内での協業作業が容易になり、簡単にケース作業者が互いに情報を交換できるようになります。

コメントはケースインスタンスにバインドされます。ケースインスタンスはケースファイルの一部であるため、コメントを使用してインスタンスに対してアクションを実行できます。基本的なテキストベースのコメントには、CRUD (作成、読み取り、更新、削除) と同様の完全な操作セットを含めることができます。

第40章 Case roles

ケースロールは、ユーザーがケース処理に参加する追加の抽象層を提供します。ロール、ユーザー、グループは、ケース管理の別の目的に使用されます。

ロール
ロールは、ケースインスタンスの認証や、ユーザーアクティビティーの割り当てを可能にします。ユーザー、または 1 つ以上のグループを所有者ロールに割り当てることができます。所有者は、ケースを所有するユーザーになります。ケースの定義では、ロールの割り当てはユーザーまたはグループ 1 つだけに制限されません。特定のユーザーまたはグループにタスクを割り当てる代わりに、ロールを使用してタスクの割り当てを指定することで、ケースを動的に保ちます。
Groups
グループとは、特定のタスクを実行できるユーザー、または指定の責任が割り当てられたユーザーの集合です。グループには何人でも割り当てることができ、ロールにはどのグループでも割り当てることができます。グループのメンバーをいつでも追加または変更できます。特定のタスクにグループをハードコーディングしないでください。
ユーザー

ユーザーとは、ロールに割り当てたり、グループに追加したりして、特定のタスクを割り当てることができる個人を指します。

注記

プロセスエンジンまたは KIE Server で unknown という名前のユーザーは作成しないでください。unknown ユーザーアカウントは、superuser のアクセス権限があるシステム名用に予約されています。unknown ユーザーアカウントでは、ログインしているユーザーがない場合に、SLA 違反リスナーに関連するタスクを実行します。

以下の例では、以下の情報で、前述のケース管理の概念をホテル予約にどのように適用するかを説明します。

  • ロール: Guest
  • グループ: ReceptionistMaid
  • ユーザー: Marilyn

Guest のロールを割り当てると、関連ケースの特定の作業に影響があり、ケースインスタンスごとに固有です。すべてのケースインスタンスには、独自のロール割り当てがあります。ロールに割り当てることができるユーザーまたはグループの数はケースの Cardinality で制限されています。これは、プロセス設計者やケース定義でのロール作成時に設定されます。Case Cardinality は、プロセスデザイナーのロール作成時に設定されます (例: ホテル予約ケースではゲストロールが 1 つ、IT_Orders サンプルプロジェクトでは IT ハードウェア業者ロールが 2 つです)。

ロールが定義されている場合には、ロールがケース定義の一部としてユーザー 1 人またはグループ 1 つにハードコードされておらず、ケースインスタンスごとに違うものを指定できるようにする必要があります。ケースのロール割り当てが重要なのは、このような理由からです。

ロールは、ケースの開始時や、ケースがアクテイブになった時点で割り当てまたは割り当ての解除ができます。ロールはオプションですが、ケース定義でロールを使用して、整理されたワークフローを維持します。

重要

タスク割り当てに実際のユーザーまたはグループ名を使用する代わりに、ロールを使用します。これにより、必要に応じて、ケースと、ユーザーまたはグループを割り当てるタイミングを遅らせることができます。

ロールはユーザーまたはグループに割り当てられ、ケースインスタンスの起動時にタスクを実行する権限があります。

40.1. ケースロールの作成

プロセスデザイナーでケースの設計時に、ケース定義でケースのロールを作成して、定義できます。ケースのロールは、ケースの定義レベルで設定して、ケースインスタンスを処理するアクターと分離させることができます。また、ロールは、ユーザータスクに割り当てるか、ケースのライフサイクル全体で問い合わせの参照として使用することができますが。固有のユーザーまたはユーザーのグループとして、ケースには定義されていません。

ケースインスタンスには、ケースの作業を実際に処理する個人が含まれます。新規ケースインスタンスを開始する場合にはロールを割り当ててください。ケースのランタイム中に、ケースのロール割り当てを変更して、ケースの柔軟性を保つことができますが、以前のロール割り当てをもとにすでに作成されているタスクには効果がありません。ロールに割り当てられたアクターには柔軟性がありますが、ロール自体はどのケースも同じままです。

前提条件

  • ケース定義が含まれるケースプロジェクトが Business Central に存在する。
  • プロセスデザイナーでケース定義アセットが開いている。

手順

  1. ケースに関連するロールを定義するには、エディターのキャンバスの空いているスペースをクリックします。 diagram properties をクリックして Properties メニューをクリックします。
  2. Case Management を展開してケースロールを追加します。

    ケースのロールには、ロールの名前とケースカーディナリティーが必要です。ケースカーディナリティーとは、ケースインスタンスでロールに割り当てられたアクターの数です。たとえば、IT_Orders サンプルのケース管理プロジェクトには、以下のロールが含まれます。

    図40.1 ITOrders ケースロール

    Case Roles

    この例では、ケースの owner にアクター (ユーザーまたはグループ) 1 つのみを、manager ロールには 1 つのアクターのみを割り当てることができます。supplier ロールには、アクターを 2 つ割り当てることができます。ケースによっては、ロールに設定済みのケースカーディナリティーをもとに、特定のロールにいくつでもアクターを割り当てることができます。

40.2. ロールの認証

ロールには、Showcase アプリケーションまたは REST API を使用して新しいケースインスタンスを開始するときに、特定のケース管理タスクを実行する権限があります。

以下の手順では、REST API を使用して新しい IT 発注ケースを開始します。

前提条件

  • IT_Orders サンプルプロジェクトが Business Central に実装されており、KIE Server にデプロイされている。

手順

  1. 以下のエンドポイントで POST REST API コールを作成します。

    http://host:port/kie-server/services/rest/server/containers/itorders/cases/itorders.orderhardware/instances

    • itorders: KIE Server にデプロイしたコンテナーエイリアス。
    • itorders.orderhardware: ケース定義の名前。
  2. 要求ボディーに以下のロール設定を追加します。

    {
      "case-data" : {  },
      "case-user-assignments" : {
        "owner" : "cami",
        "manager" : "cami"
      },
      "case-group-assignments" : {
        "supplier" : "IT"
     }
    }

    これにより、定義されたロールを持つ新しいケースが開始するほか、開始済みで取り組む準備ができているアクティビティーを自動開始します。ロールのうち 2 つはユーザーへの割り当て (owner および manager) で、3 つ目はグループへの割り当て (supplier) です。

    ケースインスタンスが正常に開始されると、IT-0000000001 ケース ID を返します。

Showcase アプリケーションを使用して新規ケースインスタンスを開始する方法は、「ケース管理への Showcase アプリケーションの使用」を参照してください。

40.3. ロールへのタスクの割り当て

ケース管理プロセスは、新しいケースインスタンス、またはアクティブなケースのユーザー割り当てを変更するなど、ランタイム時に動的に発生する変更に対応するために、できるだけ柔軟である必要があります。このため、ケース定義にあるユーザーまたはグループの単一セットにハードコードしないようにしてください。このため、ケース定義ではロールを単一のユーザーまたはグループのセットにハードコードしないようにしてください。代わりに、ロールの割り当ては、ケース作成時にロールに割り当てられたユーザーまたはグループを使用して、ケース定義においてタスクノードで定義することができます。

Red Hat Process Automation Manager には、ビジネスプロセスの作成を簡略化する、事前定義済みのノードタイプが各種含まれます。事前定義済みのノードパネルは、ダイアグラムエディターの左側に置かれます。

node task panel

前提条件

  • ケース定義が、ケース設定レベルに設定したケースロールで作成されている。ケースロール作成に関する詳細は、「ケースロールの作成」 を参照してください。

手順

  1. デザイナーパレットで Activities メニューを開き、ケース定義に追加するユーザーまたはサービスタスクをプロセスデザイナーキャンバスにドラッグします。
  2. タスクノードを選択した状態で、 diagram properties をクリックし、デザイナーの右側にある Properties パネルを開きます。
  3. Implementation/Execution を展開し、Actors プロパティーの下にある Add をクリックして、タスクを割り当てるロール名を選択するか、入力します。グループの割当も同じように、Groups プロパティーを使用します。

    たとえば、IT_Orders のサンプルプロジェクトでは、Manager approval ユーザータスクが manager ロールに割り当てられています。

    case management task assignment

    この例では、Prepare hardware spec ユーザータスクが完了すると、manager ロールに割り当てられているユーザーは、Business Central の Task InboxManager approval を受け取ります。

ロールに割り当てられているユーザーはケースのランタイム時に変更できますが、タスクそのものには引き続き同じロールが割り当てられます。たとえば、manager ロールに最初に割り当てられたユーザーが (病気などで) 時間休をとる場合、または予定外に退職する場合などが考えられます。そのような状況でこの変更に応えるには、manager ロールの割り当てを編集して、そのロールに関連付けられているタスクに他のユーザーを割り当てることができます。

ケースのランタイム時にロール割り当てを変更する方法は、「Showcase を使用してランタイム時にケースのロール割り当ての修正」 または 「REST API を使用してランタイム時にケースのロール割り当ての修正」 を参照してください。

40.4. Showcase を使用してランタイム時にケースのロール割り当ての修正

Showcase アプリケーションを使用して、ランタイム時にケースインスタンスのロール割り当てを変更できます。ロールはケース定義に定義され、ケースのライフサイクルでタスクに割り当てます。ロールは事前に定義されるためランタイム時に変更できませんが、ロールに割り当てたアクターを、ケースタスクを実行するユーザーに変更できます。

前提条件

  • アクティブなケースインスタンスがあり、その中ですでにユーザーまたはグループが最低でも 1 つのケースロールに割り当てられている。

手順

  1. Showcase アプリケーションで、Case list から作業するケースをクリックし、ケースの概要を開きます。
  2. ページの右下の Roles ボックスで、変更するロール割り当てを探します。

    showcase role assignments
  3. ロールの割り当てからユーザまたはグループを削除するには、対象のロール割り当ての横にある X をクリックします。確認ウィンドウで、Remove をクリックして、ロールからユーザーまたはグループを削除します。
  4. ロールからロール割り当てすべてを削除するには、ロールの横にある three dots をクリックして、Remove all assignments オプションを選択します。確認ウィンドウで、Remove をクリックして、ロールからユーザーとグループ割り当てすべてを削除します。
  5. ロール割り当てを別のユーザーやグループに変更するには、ロールの横にある three dots をクリックして、Edit オプションを選択します。
  6. Edit role assignment ウィンドウで、ロール割り当てから削除する割り当て先の名前を削除します。ロールに割り当てるユーザーの名前を User フィールドに入力するか、割り当てるグループを Group フィールドに追加します。

    ロール割り当ての編集時に、1 つ以上のユーザーまたはグループが割り当てられている必要があります。

  7. Assign をクリックしてルールの割り当てを完了します。

40.5. REST API を使用してランタイム時にケースのロール割り当ての修正

REST API または Swagger アプリケーションを使用して、ランタイム時にケースインスタンスのロール割り当てを変更できます。ロールはケース定義に定義され、ケースのライフサイクルでタスクに割り当てます。ロールは事前に定義されるためランタイム時に変更できませんが、ロールに割り当てたアクターを、ケースタスクを実行するユーザーに変更できます。

以下の手順には、IT_Orders サンプルプロジェクトをもとにした例が含まれます。Swagger アプリケーション、または他の REST API クライアントと同じ REST API エンドポイントを使用するか、Curl を使用します。

前提条件

  • IT 発注ケースインスタンスを、ownermanager、および supplier のロールがアクターにすでに割り当てられている状態で開始している。

手順

  1. 以下のエンドポイントで GET リクエストを使用して現在のロール割り当ての一覧を取得します。

    http://localhost:8080/kie-server/services/rest/server/containers/{id}/cases/instances/{caseId}/roles

    表40.1 パラメーター

    名前説明

    id

    itorders

    caseId

    IT-0000000001

    これにより、以下の応答が返されます。

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <case-role-assignment-list>
          <role-assignments>
                <name>owner</name>
                <users>Aimee</users>
          </role-assignments>
          <role-assignments>
                <name>manager</name>
                <users>K