Oracle Workflow APIリファレンス リリース2.6.3.5 部品番号: B15622-01 |
![]() |
![]() |
![]() |
![]() |
![]() |
||
前へ | 次へ | 目次 | 索引 | 用語集 |
procedure StartProcess
(itemtype in varchar2,
itemkey in varchar2);
Java構文
public static boolean startProcess
(WFContext wCtx,
String itemType,
String itemKey)
説明
指定したプロセスの実行を開始します。エンジンはSTARTとマークされたアクティビティを検出し、それを実行します。 最初にCreateProcess( )がコールされ、StartProcess( )をコールする前にitemtypeとitemkeyを定義します。
引数(入力)
wCtx | ワークフローのコンテキスト情報。Javaメソッドの場合にのみ必須です。 「Oracle Workflowのコンテキスト」を参照してください。 |
itemtype | 有効な項目タイプ。 |
itemkey | アプリケーション・オブジェクトの主キーから導出される文字列。この文字列により、項目タイプの項目が一意に識別されます。項目タイプと項目キーにより、プロセスが識別されます。 「CreateProcess」を参照してください。 |
注意: トリガーからCreateProcess( )およびStartProcess( )をコールしてワークフロー・プロセスを開始できますが、状況によってはこの方法を使用しないでください。たとえば、データベース・エンティティにヘッダー、行および詳細があり、そのエンティティのヘッダー・レベルでAFTER INSERTトリガーからワークフロー・プロセスを実行すると、ワークフロー・プロセスが失敗することがあります。これは、プロセス内の後続のアクティビティによって、まだ値が挿入されていないエンティティの行レベルや詳細レベルの情報が要求されることがあるためです。
注意: ワークフロー・エンジンは、エラー発生時に直前のアクティビティにロールバックできるように、各アクティビティを実行する前に常にセーブポイントを発行します。この機能では、セーブポイントとロールバックをデータベース・トリガーに含めることはできないため、ワークフロー・プロセスをデータベース・トリガーから実行することは避ける必要があります。
ワークフロー・プロセスをデータベース・トリガーから開始する必要があれば、初期の開始アクティビティを即時にバックグラウンド・エンジンに遅延して、データベース・トリガーから実行されないようにする必要があります。 そのためには、次の方法があります。
または
begin
save_threshold := WF_ENGINE.threshold;
WF_ENGINE.threshold := -1;
WF_ENGINE.CreateProcess(...);
WF_ENGINE.StartProcess(...);
--Always reset threshold or all activities in this
--session will be deferred.
WF_ENGINE.threshold := save_threshold;
end
注意: itemkeyとして#SYNCHを渡して、強制同期プロセスを作成できます。 「同期プロセス、非同期プロセスおよび強制同期プロセス」を参照してください。
注意: プロセス・インスタンスの項目キーに使用できるのは、1バイトのキャラクタのみです。マルチバイトの値を含めることはできません。
例
次のコードは、JavaプログラムでstartProcess()をコールする方法の例です。このコード例は、WFTest.javaプログラムからの引用です。
// start a process
if (WFEngineAPI.startProcess(ctx, iType, iKey))
System.out.println("Process Started successfully");
else
{
System.out.println("launch failed");
WFEngineAPI.showError(ctx);
}
前へ | 次へ | 目次 | 索引 | 用語集 |