20.1.2 ワークフロー定義について

ワークフロー定義には、パラメータ、変数、アクティビティ、接続、参加者などのワークフローに関する情報が含まれます。ワークフロー定義は、「共有コンポーネント」セクションのアプリケーション・レベルに存在します。

20.1.2.1 ワークフロー・パラメータについて

ワークフロー・パラメータにより、新しいワークフロー・インスタンスの起動時にワークフローに情報を渡します。

ワークフロー・パラメータは、新しいワークフロー・インスタンスの起動時にAPEXによってワークフローに渡される、ワークフローに対する入力です。たとえば、新しいラップトップに関する従業員のリクエストを承認するワークフローには、従業員IDラップトップ・タイプなどのパラメータを含めることができます。

ワークフロー・パラメータは、データ型と書式マスクをサポートし、SQL問合せまたはページ・アイテムに基づくことができます。ワークフロー・パラメータには、方向「入力」「出力」および「入出力」を指定できます。「出力」および「入出力」のパラメータは、ワークフロー・アイテム(変数とパラメータ)のみに基づいたものにできます。「出力」のパラメータを設定できるのは、そのワークフローが別のワークフローから起動されている場合のみです。そのワークフローがページ・プロセスで使用されている場合、「出力」のパラメータは設定できません。

方向が「入力」に設定されている場合、ワークフロー・パラメータは読取り専用です。方向が「入出力」または「出力」に設定されている場合、ワークフロー・インスタンスの実行中にそのワークフロー・パラメータを更新できます。

20.1.2.2 ワークフロー変数について

ワークフロー変数はワークフロー・バージョンに固有のもので、ワークフローの実行時に変更できます。

ワークフロー変数は、ワークフロー・バージョンに固有のワークフローの入力です。ワークフロー変数は、データ型と書式マスクをサポートしています。SQL問合せ、式、ファンクション本体またはワークフロー・パラメータに基づいたものにできます。ワークフロー変数は、NULL値として開始できます。

ワークフロー変数の値は、ワークフローの実行時に変更できます。ワークフロー変数は次の理由により更新されます:
  • 完了したワークフロー・アクティビティの結果
  • ワークフロー管理者が明示的にapex_workflow.update_variables() APIをコール
  • ワークフロー管理者がワークフローの詳細ページから変数を更新

    ノート:

    ワークフロー変数がCLOBデータ型で、その値がVARCHAR2制限を超えている場合は、詳細ページではなくapex_workflow.update_variables() APIを使用します。

20.1.2.3 ワークフロー・アクティビティについて

ワークフロー・アクティビティでは、ワークフローの各ステップの処理内容を指定します。

ワークフロー・アクティビティは、ワークフローの論理ステップです。各ワークフロー・アクティビティには、ワークフローの実行をサポートするためのヒューマン・リソースまたはマシン・リソースが必要です。たとえば、ワークフロー・アクティビティは、条件付きでアクティビティを分岐するために、表からのデータをプログラムで評価することや、ワークフロー参加者からの入力を要求することがあります。

APEXでは、各ワークフロー・アクティビティはプロセス・タイプ・プラグインに相当します。すべてのワークフローに、次のものが含まれます:
  • 冒頭に1つのみの開始アクティビティ
  • 末尾に少なくとも1つの終了アクティビティ
  • 「コードを実行」、「電子メールの送信」、「ヒューマン・タスク - 作成」、「プッシュ通知の送信」、「APIの呼出し」および「サーバー側のジオコーディング」(Oracle Autonomous Databaseでのみサポート)など、既存のプロセス・タイプ・プラグインのサポート
  • 「ワークフロー開始」、「ワークフロー終了」、「待機」、ワークフロー切替えおよび「ワークフローの起動」など、ワークフロー固有のプロセス・タイプ・プラグインのサポート
各ワークフロー・アクティビティには、タイプに関係なく、次の共通プロパティがあります:
  • 期日 - アクティビティのタイムアウトを指定します。「待機」アクティビティには、独自のタイムアウト仕様があります
  • 追加のワークフロー・データ - SQL問合せを指定します。ワークフローでは、アクティビティのバインド変数または置換文字列として問合せの列を使用できます
  • 順序 - デザイナ・ツリーにワークフローが表示される順序。ワークフロー内のアクティビティの順序と配置は同じではなく、アクティビティの順序を変更してもワークフロー内でアクティビティが前方に移動されることはありません
  • ラベル - ワークフロー・ダイアグラムに表示される表示名

アクティビティ・プロパティに加えて、ワークフロー・アクティビティには1つ以上のアクティビティ変数が含まれることもあります。アクティビティ変数にも独自のプロパティがあり、ワークフロー内で後から使用できるワークフロー・アクティビティに関する情報を取得できます。

また、エラー処理用のアクティビティを構成することもできます。エラー処理はアクティビティ自体では管理されません。かわりに、特定のエラーの解決方法を指示する、そのアクティビティからのエラー接続を構成します。エラー接続の構成の詳細は、「ワークフロー接続の追加」を参照してください。

20.1.2.4 ワークフロー接続について

ワークフロー接続は、ワークフローのアクティビティをリンクし、実行時に通過するワークフローのパスを決定します。

ワークフロー接続とは、2つのワークフロー・アクティビティ間のリンクのことです。ワークフロー接続によって、実行時に特定のワークフローを通過するパスが決定されます。

接続には、ブランチトランジションの2つのタイプがあります。

ブランチ

ブランチは、切替えアクティビティからの接続です。切替えアクティビティは、切替えアクティビティで指定された条件の結果に応じて、ワークフロー・パスを1つのアクティビティから複数の別のアクティビティに分割します。こうした分割のそれぞれをブランチと呼びます。たとえば、True False Checkスイッチには、アクティビティで指定された条件がtrueと評価された場合の1つのブランチと、アクティビティで指定された条件がfalseと評価された場合の1つのブランチがあります。

トランジション

トランジションは、あるアクティビティから別のアクティビティに直接移動する接続です。たとえば、「開始」アクティビティは、「コードを実行」アクティビティに直接トランジションできます。ワークフロー内のアクティビティを接続するトランジションには、3つのタイプがあります。

標準

2つのワークフロー・アクティビティ間のデフォルトの接続。すべてのワークフロー・アクティビティには、少なくとも1つの着信と1つの送信の標準接続が必要です。ただし、着信接続のない開始アクティビティと送信接続のない終了アクティビティを除きます。

タイムアウト

アクティビティ・プロパティの最終期限セクションにすでにタイムアウト値がある場合は、すべてのアクティビティにタイムアウト接続を指定できます。唯一の例外は、待機アクティビティです。待機アクティビティにはすでに独自のタイムアウト仕様があるため、そこから発生する別のタイムアウト接続は使用できません。

エラー

すべてのアクティビティには1つ以上のエラー接続を指定できます。エラー接続ごとに、SQLエラー・コードを指定します。実行時にエラーが発生すると、ワークフローは、失敗状態に移行するかわりに、エラー接続のターゲット・アクティビティを実行します。

20.1.2.5 ワークフロー参加者について

ワークフロー参加者には、ワークフローに対する操作権限があります。

ワークフロー参加者は、ワークフローに対する操作権限を持つAPEXユーザーです。ワークフロー参加者は、特定のワークフロー・バージョンに関連付けられています。ワークフロー・ダイアグラムには表示されませんが、ワークフロー・デザイナのツリーには表示されます。

開発中ワークフローは、参加者の追加なしに開始できます。ただし、アクティブ・ワークフローを開始する場合は、参加者を指定する必要があります。

ツリーで「ワークフロー所有者」および「ワークフロー管理者」を指定できます。

ワークフロー所有者

ワークフローのインスタンスを起動および終了できます。失敗したワークフローを再試行できます。

ワークフロー管理者

ワークフロー・インスタンスを起動、終了、一時停止、再開および再試行できます。ワークフロー・インスタンスの変数値を更新できます。

APEXユーザーは、ワークフローを開始するためにワークフロー参加者になる必要はありません。ワークフローを開始するユーザーは、ワークフロー・イニシエータと呼ばれます。イニシエータは、自分が開始したワークフローにかぎり、ワークフロー・インスタンスを終了できます。