ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Business Process Managementユーザーズ・ガイド
11g リリース1(11.1.1.7)
B61408-07
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次
索引へ移動
索引

前
 
次
 

10 Oracle Business Process Management Workspaceでの実行中のプロセス・インスタンスの変更

この章では、プロセス・ワークスペースで、プロセスの所有者とプロセス・ワークスペース管理者が実行中のプロセス・インスタンスのフローを変更する方法について説明します。また、プロセス・ワークスペースでインスタンスを移行する方法についても説明します。

この章では、次の内容を説明します。

10.1 プロセス・ワークスペースでの実行中のプロセス・インスタンスのフローの変更

実行中のプロセス・インスタンスのトークンを現在のアクティビティから別のものに移動できますが、次の構造的制約があります。

10.1.1 プロセス・ワークスペースで実行中のプロセス・インスタンスのフローを変更する方法

実行中のプロセス・インスタンスのフローを変更するには:

  1. 「プロセス・トラッキング」タブ・ページから、プロセス・インスタンスを選択します。そのインスタンスの詳細が表示されます。

  2. 「アクション」リストから、「フローを変更して一時停止」を選択します。

    1つのプロセス・インスタンスを選択すると、図10-1の例のように「フローの変更」ダイアログ・ボックスが表示されます。

    図10-1 プロセス・インスタンスのフローの変更

    この図の説明が続きます
    「図10-1 プロセス・インスタンスのフローの変更」の説明

    デフォルトでは、「フローの変更」ダイアログ・ボックスにはプロセスおよびプロジェクト・データ属性のみが表示されます。いずれかのオープン・アクティビティを選択すると、そのオープン・アクティビティのコンテキストにおけるデータ・オブジェクトが表示されます。たとえば、オープン・アクティビティがサブプロセスである場合、「フローの変更」ダイアログ・ボックスにはサブプロセス・レベルのデータ・オブジェクトが表示されます。

  3. 「フローの変更」ダイアログ・ボックスで、次のいずれかまたはすべてを実行できます。

    • 「オープン・アクティビティ」表に、実行中のプロセス・インスタンスの現在のアクティビティのリストを表示します。トークンを移動する新しいアクティビティを選択できます。「新規アクティビティ」リストには、トークンを有効に移動できる場所のみが表示されます。

    • 図10-1に示されているように、データ・オブジェクトのリストに相関キーを表示します。相関キーは、プロセスで相関が使用されている場合のみ表示されます。これを行うには、「相関キーの表示」を選択します。相関キーを選択した場合、そのキーを構成する相関プロパティが詳細セクションに表示されます。相関キーをリセットするには、「相関キーのリセット」を選択します。

      相関キーの詳細は、Oracle Fusion Middleware Oracle Business Process Managementモデリングおよび実装ガイドを参照してください。

    • 図10-1に示されているように、データ・オブジェクトのリストにプロセス・インスタンスの属性を表示します。これを行うには、「インスタンス属性の表示」を選択します。特定のインスタンス属性の詳細を表示するには、その属性を選択します。変更できるインスタンス属性のみが編集可能として表示されます。その他は読取り専用です。

    • 「コメント」フィールドにコメントを追加します。

  4. 次のいずれかをクリックします。

    • 再開: トークンを別のアクティビティに移動し、プロセスを実行中の状態に戻します。

    • 保存: プロセス・インスタンスを一時停止します。後で戻って、フローを変更したり再開できます。

    • 取消: プロセス・インスタンスを最後に保存された状態に戻します。プロセスは引き続き実行中の状態になります。


注意:

  • 「フローの変更」ダイアログ・ボックスを開いていて、アクションを実行する前にセッションがタイムアウトになると、プロセス・インスタンスは一時停止されます。

  • アクティビティに関連付けられている実行中のトークンが複数ある場合、フローを変更し、トークンを1つのみ選択して別の有効なターゲット・アクティビティに移動することはできません。オープン・アクティビティのフローを変更すると、すべてのトークンが移動します。


10.2 プロセス・ワークスペースでのプロセス・インスタンスの移行

同じコンポジット・リビジョンの新しい実装がデプロイされ、以前にデプロイされたコンポジットに、より新しいBPMプロセスの定義を持つコンポーネントがある場合、影響を受けるコンポーネントは一時停止状態になります。一時停止中のコンポーネントを再開するには、移行を保留している状態のプロセス・インスタンスを移行または一時停止します。

移行を保留しているすべてのインスタンスを再開するときに明示的または自動的にコンポーネントを再開する場合を除いて、トークンを移動しても新しいタスク・インスタンスは作成されません。

Oracle BPMでは、プロセスを再デプロイするときに既存の実行中のプロセス・インスタンスを保持する方法を提供しています。これを行うには、Fusion Middleware Controlコンソールでのプロセスの再デプロイ中に、「実行中のインスタンスの保持」を選択します。再デプロイが成功した場合、インスタンスは移行を保留している状態になり、プロセス・コンポーネントは一時停止します。


注意:

コンポジットに101個以上の既存のインスタンスが含まれている場合、再デプロイ時には100個のインスタンスしか移行されず、コンポジットは一時停止されます。この制限は、再デプロイ時間を最小化するために使用されます。

残りのインスタンスを移行するには、Process Management APIを使用します。


この項では、移行を保留しているインスタンスを移行する方法と、一時停止していたコンポーネントを再開する方法について説明します。内容は次のとおりです。


注意:

11gリリース1 (11.1.1.5.0 Feature Pack)より前に作成されたタスク・インスタンスを実行中で、それ以降のリリースを使用して新しいインスタンスを作成する場合は、以前より実行中のタスク・インスタンスがすべて完了するまで新しいインスタンスに移行しないでください。


10.2.1 プロセス・ワークスペースでプロセス・インスタンスを移行する方法

次の2つの方法のいずれかで、プロセス・インスタンスを移行できます。

  • そのままの状態で移行: トークンを移動したりペイロードを更新せずにインスタンスを移行します。

  • 変更して移行: 指定した新しいアクティビティにトークンを移動し、指定したとおりにペイロードを更新してからインスタンスを移行します。

プロセス・インスタンスを移行するには:

  1. 1つまたは複数のプロセス・インスタンスを選択します。「アクション」リストから、「移行」を選択します。「移行」ダイアログ・ボックスが表示されます。

    このダイアログ・ボックスの要素は、選択によって変わります。「そのままの状態で移行」を選択した場合は、「コメント」フィールドのみが使用可能になります。1つのインスタンスを選択し、「変更して移行」を選択すると、図10-2に示すように「移行」ダイアログ・ボックスが表示されます。

    図10-2 プロセス・インスタンスの移行

    この図の説明が続きます
    「図10-2 プロセス・インスタンスの移行」の説明

    「変更して移行」を選択すると、次のいずれかまたはすべてを実行できます。

    • 「オープン・アクティビティ」表に、トークンが現在実行されているアクティビティを表示し、トークンを移動する新しいアクティビティを選択できます。「新規アクティビティ」リストには、トークンを有効に移動できる場所のみが表示されます。


      注意:

      • 移行を保留しているインスタンスを再開するには、削除したすべてのアクティビティ・トークンを新しいアクティビティに移動する必要があります。

      • 「オープン・アクティビティ」表で複数のアクティビティを選択した場合、「データ・オブジェクト」タブは表示されず、ペイロードを変更できません。


    • データ・オブジェクトのリストに相関キーを含めます。これを行うには、「相関キーの表示」を選択し、「データ・オブジェクト」タブで「ツリーで表示」を選択してデータ・オブジェクトを展開します。相関キーを選択した場合、そのキーを構成する相関プロパティが詳細セクションに表示されます。相関キーをリセットするには、「リセット」を選択します。

      相関キーの詳細は、Oracle Fusion Middleware Oracle Business Process Managementモデリングおよび実装ガイドを参照してください。

    • データ・オブジェクトのリストにプロセス・インスタンス属性を含めます。これを行うには、「インスタンス属性の表示」を選択してから、「データ・オブジェクト」タブで「ツリーで表示」を選択し、データ・オブジェクトを展開してから「インスタンス属性」を展開します。特定のインスタンス属性の詳細を表示するには、その属性を選択します。変更できるインスタンス属性のみが編集可能として表示されます。その他は読取り専用です。

    • 「コメント」フィールドにコメントを追加します。

  2. 次のいずれかをクリックします。

    • 保存: プロセスを、移行を保留している状態のままにします。

    • 移行: プロセスを移行し、実行中の状態にします。

    • 取消: プロセス・インスタンスを最後に保存された状態に戻します。

なんらかの理由で移行が失敗した場合は、図10-3に示すように「移行確認」ダイアログ・ボックスに理由が表示されます。

図10-3 移行確認: 失敗メッセージ

この図の説明が続きます
「図10-3 移行確認: 失敗メッセージ」の説明

10.2.2 一時停止中のコンポーネントを再開する方法

すべての一時停止中のコンポーネントは、図10-4の例に示すように、「保留中コンポーネント」パネルに一覧表示されます。

図10-4 「プロセス・トラッキング」タブ・ページの「保留中コンポーネント」パネル

この図の説明が続きます
「図10-4 「プロセス・トラッキング」タブ・ページの「保留中コンポーネント」パネル」の説明

一時停止中のコンポーネントを再開するには:

  1. 「保留中コンポーネント」パネルから、再開するコンポーネントを選択します。図10-5の例に示すように、「コンポーネントの再開」ダイアログ・ボックスが表示されます。そのコンポーネントで移行を保留しているインスタンスの数が表示されます。

    図10-5 「コンポーネントの再開」ダイアログ・ボックス

    この図の説明が続きます
    「図10-5 「コンポーネントの再開」ダイアログ・ボックス」の説明

  2. 「コンポーネントの再開」ダイアログ・ボックスで、移行を保留しているプロセス・インスタンスの状態を選択します。

    • そのままの状態で移行

    • 一時停止中

    そのままの状態で移行できないインスタンスがあるときに、コンポーネントを再開する必要がある場合は、「移行されないインスタンスを一時停止にする」を選択します。このオプションを選択せず、そのままの状態で移行できないインスタンスがある場合は、コンポーネントを再開できません。

  3. 「再開」をクリックします。コンポーネントが再開され、「保留中コンポーネント」パネルが表示されなくなります。「コンポーネント再開の確認」ダイアログ・ボックスに、結果と一時停止しているインスタンスの数が表示されます。新しいプロセス・インスタンスを開始できるようになり、リクエストが処理されます。


    注意:

    コンポーネントが一時停止している場合でも、プロセス・インスタンスを開始できます。ただし、この場合、リクエストはキューに格納され、コンポーネントが再開されるまで処理されません。


10.3 プロセスの再デプロイに関する注意事項

プロセスを再デプロイする場合、設計時に「実行中のインスタンスの保持」オプションを選択すると、次のシナリオでは再デプロイに失敗します。

これらのシナリオで再デプロイが失敗することを望まない場合は、Oracle JDeveloperでcomposite.xmlファイルを編集し、force.deployフラグを手動で設定する必要があります。force.deployをコンポーネント・レベルで設定するには、次のように入力します。

<component name="T4">
 <property name="oracle.bpm.bpmn.force.deploy">true</property>
<implementation.bpmn src="processes/T4.bpmn"/>
</component>

コンポジット・レベルでforce.deployを設定するには、図10-6の例に示すように、コンポジット要素の子として同じ.xml要素を使用できます。

図10-6 Oracle JDeveloperでのforce.deployプロパティの設定

この図の説明が続きます
「図10-6 Oracle JDeveloperでのforce.deployプロパティの設定」の説明

10.4 実行中のコンポジット・インスタンスの別のリビジョンへの移動

この項では、インスタンスの移行について説明します。この項の内容は次のとおりです。

10.4.1 概要

インスタンスの移行を実行すると、選択したコンポジット・インスタンスを既存の互換性のあるコンポジット・リビジョン間で移行したり、既存のリビジョンから新規リビジョンに移行できます。互換性は、コンポジット内のコンポーネントの互換性によって決定されます。移行の完了後、インスタンスの監査証跡は新しいコンポジット・リビジョンの下に表示されます。

インスタンスのパッチ適用とは異なり、移行はデプロイメントの一部ではありません。これは別のアクティビティで、どのインスタンスを移行し、どのようなアクションを実行するか(たとえば、データおよびフローの更新)という宣言仕様を提供するAntタスクとxmlファイルによって遂行します。どのインスタンスを移行するかは選択することができます。

10.4.2 重要な考慮事項

移行を実行する前に考慮すべき重要な事項は次のとおりです。

  • 移行時には、インスタンスのパッチ適用の実行時と同じ制約が適用されます。たとえば、トークンを非割込みの境界イベントに移動することはできません。

  • 移行中は、該当リビジョンのインスタンスが受信リクエストを処理しないように、ソース・インスタンスのコンポジット・リビジョンは一時停止されます。

  • この機能は、Antコマンドを使用して実装します。

    これらのコマンドには、インストールの一部である次のアーティファクトが必要です。

    /AS11gR1SOA/bin/ant-composite-instance-migration.xml.

    このアーティファクトには、$FMW_HOME/wlserver_10.3/server/libディレクトリにwlfullclient.jarが必要です。

    Oracle WebLogic Serverクライアント・ライブラリを生成するには:

    cd $fmw.home/wlserver_10.3/server/lib
    java -jar wljarbuilder.jar
    

10.4.3 移行を実行する方法

この項では、インスタンスを移行するために実行する必要がある手順の概要を説明します。インスタンスの移行に必要な手順は次のとおりです。

  1. 移行するインスタンスの範囲を特定して、それらを指定するコンポジット・フィルタを作成します。

  2. 指定されたインスタンスの移行実現性レポートを実行し、出力を確認します。

    出力レポートには、どのインスタンスが自動的に移行可能で(これには、たとえばアクティブなアクティビティが削除されたなどのような、移行を遂行するために必要なプランが必要です)、どのインスタンスが移行不可能であるかが含まれます。

  3. 移行プランを作成します。

  4. 移行を実行し、出力を確認します。

10.4.4 コンポーネントの制限

コンポジットの互換性は、コンポジット内に定義されたコンポーネントに依存します。コンポーネントへの変更に互換性がなければ、コンポジットのインスタンスの移行はできません。BPEL、BPMN、ヒューマン・ワークフロー、ビジネス・ルールの互換性のある変更のみ許可されます。その他のコンポーネントが変更されると、コンポジットのインスタンスは移行できません。

この項では、各コンポーネントで注意が必要な制約について説明します。この項の内容は次のとおりです。

10.4.4.1 BPELコンポーネント

移行できるBPELコンポーネントはsync processのみです。sync processには、HumanTask、Wait、Receiveのように、永続的なアクティビティが含まれていません。

sync processインスタンスの場合、BPELは、実行中のコンポジット・インスタンスの一部である完了したすべてのインスタンスのリビジョンを変更します。

その他のBPELプロセスは、インスタンスの移行との互換性はありません。

10.4.4.2 BPMNコンポーネント

次に示す、BPMNコンポーネントへ変更は、インスタンスの自動移行との互換性があります。

  • Add Scripタスク

  • データの関連付けの変更

  • 新しいデータ・オブジェクトの追加

  • 境界イベント以外の新しいアクティビティの追加

次に示す、BPMNコンポーネントへ変更は、移行プランを使用したインスタンスの手動移行との互換性があります。

  • サブプロセス境界イベントおよびマージ・ゲートウェイ以外のアクティビティの削除

次に示す変更は、インスタンスの移行との互換性がありません。

  • ゲートウェイの削除(排他以外)

  • サブプロセスの削除

  • ヒューマン・タスク実装の更新

  • サブプロセスのループ特性の更新

  • 境界イベントの追加

  • 割込みから非割込みへの境界イベントの更新

  • イベント・サブプロセスの追加

  • 割込みから非割込みへのイベント・サブプロセスの更新

  • アクティビティ・レベルの更新(サブプロセスまたはゲートウェイの構造内のアクティビティの移動)

  • コール・アクティビティを含む

10.4.4.3 ヒューマン・タスク・コンポーネント

ヒューマン・ワークフローは、実行中および完了したすべてのヒューマン・タスクのインスタンスの移動をサポートします。

ヒューマン・タスクには、タスク・メタ・データの変更が実行中のタスクに影響しないように、タスクを初期化した後にルーティング・スリップを格納します。

10.4.4.4 ビジネス・ルール・コンポーネント

移行は同期をとりながら実行されるため、ビジネス・ルール・コンポーネントには制限はありません。

10.4.4.5 メディエータ・コンポーネント

メディエータ・コンポーネントの制限は次のとおりです。

  • ルーティング・ルール: メディエータの古いバージョンには、順次ルーティング・ルールのみが含まれている必要があります。

  • メディエータ・インスタンスの状態: メディエータ・インスタンスは完了しているか、または失敗している必要があります。

  • メッセージ・パターン: サポートされるメッセージ・パターンは、リクエストのみまたはリクエストの応答です。

10.4.5 Antタスク要素

Antタスクの要素は次のとおりです(図10-7を参照)。

  • CompositeInstanceFilter: インスタンスを移行する条件を指定し、移行の範囲を定義します。この範囲は、コンポジット・インスタンスを次のどれに基づいてフィルタするかによって決定されます。

    • compositeDN

    • domainName

    • compositeName

    • revision

    • label

    • ecid

    • conversationId

    • compositeInstanceId

    • tenantId

    • title

    • maxCreationDate

    • minCreationDate

    • maxModifyDate

    • minModifyDate

    • like

    • pageStart

    • pageSize

  • 実現性レポートを実行するタスク: 結果は、不可能、自動または手動です。レポートを確認し、CompositeInstanceFilterを変更して、条件を緩和するように変更したり、一部のインスタンスを移行から削除できます。

  • 移行を実行するタスク

図10-7 Antタスクの例

この図の説明は本文にあります。

10.4.6 移行の要素

移行の要素は次のとおりです。

  • 移行レポート: 提案されたコンポジット・インスタンスの移行の実現性が記載されます。移行レポートの内容は次のとおりです。

    • コンポジット・インスタンスの詳細

      • 名前: コンポーネント・インスタンス名

      • ID: コンポーネント・インスタンスID

      • 状態: コンポジット・インスタンスの状態

      • 移行機能: 自動、移行プラン必須(適用可能な場合は変更プランも必要)

      • コンポーネント・インスタンス・データ: 関連するコンポーネント・インスタンスの詳細

    • サマリー・データ:

      • ターゲットのリビジョン

      • 一致するコンポジット・インスタンスの合計数

      • 自動的に移行可能なコンポジット・インスタンスの数

      • 自動的に移行不可能なコンポジット・インスタンスの数

  • 移行結果: コンポジット・インスタンスの移行結果を示します。

  • 移行プラン: 重要なコンポジット変更またはコンポーネント変更に伴う処理方法のXML記述を提供します。移行プランは、MigrationPlan XMLスキーマに基づきます。

    移行プラン・オブジェクトは、MigrationPlanFactoryを使用して作成されます。


注意:

インスタンス移行の詳細は、BPM Suite 11g SamplesのWebページ(http://java.net/projects/oraclebpmsuite11g/pages/Samples)に移動して、記載されているデモ・サンプルを参照してください。サンプルの詳細な説明は、各サンプルのPDFをダウンロードして確認してください。