11 Oracle Business Process Management Workspaceでの実行中のプロセス・インスタンスの変更
プロセス所有者およびOracle Business Process Management Workspace (プロセス・ワークスペース)管理者は、プロセス・ワークスペースで実行中のプロセス・インスタンスのフローを変更できます。また、プロセス・ワークスペースでインスタンスを移行することもできます。
プロセス・ワークスペースでの実行中のプロセス・インスタンスのフローの変更
実行中のプロセス・インスタンスのトークンを現在のアクティビティから別のアクティビティに移動できます。
実行中のプロセス・インスタンスのトークンを現在のアクティビティから別のものに移動できますが、次の構造的制約があります。
-
インスタンスは、同じプロセス・レベルで定義されているアクティビティにのみ移動できます。
-
インスタンスは境界イベントに移動できません。
-
境界イベントが中断中でない場合や同じレベルで定義されていない場合は、境界イベントにインスタンスを移動できません。イベント・サブプロセスの内部または外部にインスタンスを移動することはできません。
-
インスタンスはゲートウェイのブランチの外部に移動できません。ただし、それをマージ・ゲートウェイに移動して、そのパスをマージできます。
ノート:
排他ゲートウェイを使用している場合は、排他ゲートウェイ・ブランチの外部にインスタンスを移動できます。
プロセス・ワークスペースで実行中のプロセス・インスタンスのフローを変更する方法
実行中のプロセス・インスタンスのフローを変更するには:
ノート:
-
「フローの変更」ダイアログ・ボックスを開いていて、アクションを実行する前にセッションがタイムアウトになると、プロセス・インスタンスは一時停止されます。
-
アクティビティに関連付けられている実行中のトークンが複数ある場合、フローを変更し、トークンを1つのみ選択して別の有効なターゲット・アクティビティに移動することはできません。オープン・アクティビティのフローを変更すると、すべてのトークンが移動します。
-
表示されているプロセス・インスタンスの状態は、新しい状態に更新されない場合があります。更新された状態を表示するには、表のツールバーの「リフレッシュ」をクリックします。
プロセス・ワークスペースでのプロセス・インスタンスの移行
同じコンポジット・リビジョンの新しい実装がデプロイされ、以前にデプロイされたコンポジットに、より新しいBPMプロセスの定義を持つコンポーネントがある場合、影響を受けるコンポーネントは一時停止状態になります。一時停止中のコンポーネントを再開するには、移行を保留している状態のプロセス・インスタンスを移行または一時停止します。
移行を保留しているすべてのインスタンスを再開するときに明示的または自動的にコンポーネントを再開する場合を除いて、トークンを移動しても新しいプロセス・インスタンスは作成されません。
Oracle BPMでは、プロセスを再デプロイするときに既存の実行中のプロセス・インスタンスを保持する方法を提供しています。これを行うには、Fusion Middleware Controlコンソールでのプロセスの再デプロイ中に、「実行中のインスタンスの保持」を選択します。再デプロイが成功した場合、インスタンスは移行を保留している状態になり、プロセス・コンポーネントは一時停止します。
ノート:
コンポジットに101個以上の既存のインスタンスが含まれている場合、再デプロイ時には100個のインスタンスしか移行されず、コンポジットは一時停止されます。この制限は、再デプロイ時間を最小化するために使用されます。
残りのインスタンスを移行するには、プロセス管理APIまたはプロセス・ワークスペースを使用します。
この項では、移行を保留しているインスタンスを移行する方法と、一時停止していたコンポーネントを再開する方法について説明します。
この項の内容は、次のとおりです。
ノート:
11gリリース1 (11.1.1.5.0機能パック)より前の環境を移行する場合、移行前に既存のアクティブなタスク・インスタンスをすべて完了してください。
この場合、アクティブなタスク・インスタンスの状態は、移行中に「失効」に変更されます。
プロセス・ワークスペースでプロセス・インスタンスを移行する方法
次の2つの方法のいずれかで、プロセス・インスタンスを移行できます。
-
そのままの状態で移行: トークンを移動したりペイロードを更新せずにインスタンスを移行します。
-
変更して移行: 指定した新しいアクティビティにトークンを移動し、指定したとおりにペイロードを更新してからインスタンスを移行します。
プロセス・インスタンスを移行するには:
なんらかの理由で移行が失敗した場合は、図11-3に示すように「移行確認」ダイアログ・ボックスに理由が表示されます。
一時停止中のコンポーネントを再開する方法
プロセスの再デプロイに関する注意事項
プロセスを再デプロイする前に、次の点に注意してください。
プロセスを再デプロイする場合、設計時に「実行中のインスタンスの保持」オプションを選択すると、次のシナリオでは再デプロイに失敗します。
-
パラレル・ゲートウェイや包含ゲートウェイのペアが削除されます
-
包含-複合ゲートウェイ・ペアが包含-包含ゲートウェイ・ペアに変更される
-
サブプロセスが削除されるか、そのループ特性が変更される
-
ユーザー・タスクがゲートウェイ・ペアの別のブランチまたはゲートウェイ・ペアの外部に移動される
-
アクティビティ・レベルが変更されます。たとえば、アクティビティがサブプロセスやゲートウェイ構造内に移動されます。
-
サブプロセスまたはイベント・サブプロセスまたはコール・アクティビティが追加される
-
イベント・サブプロセスが連続しないタイプから連続するタイプに変更される
-
境界イベントが、割込みから非割込みに変更されます。
-
境界イベントが追加される
-
ユーザー・タスクの実装が別のヒューマン・タスクを使用するように変更される
これらのシナリオでプロセスの再デプロイの失敗を回避するには、Oracle JDeveloperでcomposite.xml
ファイルを編集し、force.deploy
フラグを手動で設定します。
ノート:
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
を設定するには、図11-6の例に示すように、コンポジット要素の子として同じ.xml
要素を使用できます。
実行中のコンポジット・インスタンスの別のリビジョンへの移動
インスタンスの移行を実行すると、選択したコンポジット・インスタンスを既存の互換性のあるコンポジット・リビジョン間で移行したり、既存のリビジョンから新規リビジョンに移行できます。互換性は、コンポジット内のコンポーネントの互換性によって決定されます。移行の完了後、インスタンスの監査証跡は新しいコンポジット・リビジョンの下に表示されます。
インスタンスのパッチ適用とは異なり、移行はデプロイメントの一部ではありません。これは別のアクティビティで、どのインスタンスを移行し、どのようなアクションを実行するか(たとえば、データおよびフローの更新)という宣言仕様を提供するAntタスクとxmlファイルによって遂行します。どのインスタンスを移行するかは選択することができます。
この項では、インスタンスの移行について説明します。内容は次のとおりです。
重要な考慮事項
移行を実行する前に考慮すべき重要な事項は次のとおりです。
-
移行時には、インスタンスのパッチ適用の実行時と同じ制約が適用されます。
たとえば、トークンを非割込みの境界イベントに移動することはできません。
-
移行中は、該当リビジョンのインスタンスが受信リクエストを処理しないように、ソース・インスタンスのコンポジット・リビジョンは一時停止されます。
-
この機能は、Antコマンドを使用して実装します。
これらのコマンドには、インストールの一部である次のアーティファクトが必要です。
/AS11gR1SOA/bin/ant-composite-instance-migration.xml
.このアーティファクトには、次のディレクトリにある
wlfullclient.jar
が必要です。$FMW_HOME/wlserver_10.3/server/lib
Oracle WebLogic Serverクライアント・ライブラリを生成するには:
cd $fmw.home/wlserver_10.3/server/lib java -jar wljarbuilder.jar
コンポーネントの制限
コンポジットの互換性は、コンポジット内に定義されたコンポーネントに依存します。コンポーネントへの変更に互換性がなければ、コンポジットのインスタンスの移行はできません。BPEL、BPMN、ヒューマン・ワークフローおよびビジネス・ルールの互換性のある変更のみ許可されます。その他のコンポーネントが変更されると、コンポジットのインスタンスは移行できません。
この項では、各コンポーネントで注意が必要な制約について説明します。次のトピックが含まれています:
BPELコンポーネント
移行できるBPELコンポーネントはsync process
のみです。sync process
には、HumanTask、WaitまたはReceiveのように、永続的なアクティビティが含まれていません。
sync processインスタンスの場合、BPELは、実行中のコンポジット・インスタンスの一部である完了したすべてのインスタンスのリビジョンを変更します。
その他のBPELプロセスは、インスタンスの移行との互換性はありません。
BPMNコンポーネント
次に示す、BPMNコンポーネントへ変更は、インスタンスの自動移行との互換性があります。
-
スクリプト・タスクの追加
-
データの関連付けの変更
-
新しいデータ・オブジェクトの追加
-
境界イベント以外の新しいアクティビティの追加
次に示す、BPMNコンポーネントへ変更は、移行プランを使用したインスタンスの手動移行との互換性があります。
-
サブプロセス、境界イベントおよびマージ・ゲートウェイ以外のアクティビティの削除
次に示す変更は、インスタンスの移行との互換性がありません。
-
ゲートウェイの削除(排他以外)
-
サブプロセスの削除
-
ヒューマン・タスク実装の更新
-
サブプロセスのループ特性の更新
-
境界イベントの追加
-
割込みから非割込みへの境界イベントの更新
-
イベント・サブプロセスの追加
-
割込みから非割込みへのイベント・サブプロセスの更新
-
アクティビティ・レベルの更新(サブプロセスまたはゲートウェイの構造内のアクティビティの移動)
-
コール・アクティビティを含む
ヒューマン・タスク・コンポーネント
ヒューマン・ワークフローは、実行中および完了したすべてのヒューマン・タスクのインスタンスの移動をサポートします。ヒューマン・タスクには、タスク・メタデータの変更が実行中のタスクに影響しないように、タスクを初期化した後にルーティング・スリップを格納します。
Antタスクの要素
Antタスクの要素は次のとおりです(図11-7を参照)。
-
CompositeInstanceFilter
: インスタンスを移行する条件を指定し、移行の範囲を定義します。この範囲は、コンポジット・インスタンスを次のどれに基づいてフィルタするかによって決定されます。-
compositeDN
-
domainName
-
compositeName
-
revision
-
label
-
ecid
-
conversationId
-
compositeInstanceId
-
tenantId
-
title
-
maxCreationDate
-
minCreationDate
-
maxModifyDate
-
minModifyDate
-
like
-
pageStart
-
pageSize
-
-
実現性レポートを実行するタスク: 結果は、不可能、自動または手動です。レポートを確認し、
CompositeInstanceFilter
を変更して、条件を緩和するように変更したり、一部のインスタンスを移行から削除できます。 -
移行を実行するタスク。
移行の要素
移行の要素は次のとおりです。
-
移行レポート: 提案されたコンポジット・インスタンスの移行の実現性が記載されます。移行レポートの内容は次のとおりです。
-
コンポジット・インスタンスの詳細
-
名前: コンポーネント・インスタンス名
-
ID: コンポーネント・インスタンスID
-
状態: コンポジット・インスタンスの状態
-
移行機能: 自動、移行プラン必須(適用可能な場合は変更プランも必要)
-
コンポーネント・インスタンス・データ: 関連するコンポーネント・インスタンスの詳細
-
-
サマリー・データ:
-
ターゲットのリビジョン
-
一致するコンポジット・インスタンスの合計数
-
自動的に移行可能なコンポジット・インスタンスの数
-
自動的に移行不可能なコンポジット・インスタンスの数
-
-
-
移行結果: コンポジット・インスタンスの移行結果を示します。
-
移行プラン: 重要なコンポジット変更またはコンポーネント変更に伴う処理方法のXML記述を提供します。移行プランは、
MigrationPlan
XMLスキーマに基づきます。移行プラン・オブジェクトは、
MigrationPlanFactory
を使用して作成されます。