ワークフローを設計する際は、ステージおよびステップで実行するロジックを選択して含めることができます。
- 段階。 ステージはリアルタイム ワークフローのロジックを読みやすくし、リアルタイム ワークフローのロジックを説明します。 ただし、ステージはワークフローのロジックや動作には影響しません。 プロセスにステージが存在する場合、プロセス内のすべてのステップをステージに含める必要があります。
- 手順。 ステップは、ワークフロー内のビジネス ロジックの単位です。 ステップには、条件、アクション、他のステップ、またはこれらの要素の組み合わせを含めることができます。
リアルタイム ワークフロー プロセスで実行できるアクション
リアルタイム ワークフロー プロセスでは次の表のアクションを実行できます :
| アクション | 説明 |
|---|---|
| 行の作成 | テーブルの新しい行を作成し、属性に選択した値を割り当てます。 |
| 行を更新する | リアルタイムのワークフローが実行されている行、N:1 の関連付けの行にリンクされている行、または前のステップで作成された任意の行を更新できます。 |
| 行の割り当て | リアルタイムのワークフローが実行されている行、N:1 の関連付けの行にリンクされている行、または前のステップで作成された任意の行を割り当てできます。 |
| メールを送信する | メールを送信します。 リアルタイムワークフローが実行されている行のテーブル、またはテーブルと N:1 の関係を持つテーブル、または前述の手順で作成された行のテーブルに設定されたメール テンプレートを使用して、新しいメールメッセージを作成する、または使用することを選択できます。 |
| 子ワークフローの開始 | 子ワークフローとして構成されたリアルタイム ワークフロー プロセスを開始します。 |
| ステータスの変更 | プロセスが実行されている行の状態、N:1 の関係でその行にリンクされている行の状態、または以前のステップで作成された任意の行の状態を変更します。 |
| ワークフローの停止 | 現在のワークフローを停止します。
成功または取り消し済みのいずれかの状態を設定し、ステータス メッセージを指定できます。 イベントにリアルタイム ワークフローが設定されている場合、キャンセルされた状態でリアルタイム ワークフローを停止すると、イベント アクションが完了しません。 詳細については、リアルタイム ワークフローを使用する を参照してください。 |
| カスタム ステップ | 開発者は、アクションを定義するカスタム リアルタイム ワークフローの手順を作成することができます。 既定では、カスタム ステップは利用できません。 |
行の値を設定する
行を作成すると、行に値を設定することができます。 行を更新する際は、値を設定、追加、増加、減少、乗算、クリアすることができます。
プロパティの設定を選択すると、テーブルの既定のフォームを表示するダイアログボックスが開きます。
ダイアログ ボックスの下部には、フォームに存在しない追加の列の一覧が表示されます。
任意の列に対して、ワークフローによって設定される静的な値を設定できます。
ダイアログ ボックスの右側のフォーム アシスタントでは、現在の行のコンテキストから動的な値を設定または追加できます。 これには、テーブルに対する N:1 (多対一) の関連付けからアクセスできる関連する行の値が含まれます。
フォーム アシスタントで使用できるオプションは、フォームで選択した列によって決まります。 動的な値を設定すると、動的データが含まれる場所を示す "slug" と呼ばれる黄色のプレースホルダーが表示されます。 この値を削除する場合は、スラッグを選択して削除します。 テキスト列に対しては、静的データと動的データを組み合わせて使用できます。
動的な値では、列や関連するテーブルが設定したい値を持っているかどうかを確実に把握することができません。 実際にいくつかの列に値を設定して、緑の矢印を使って順番に並べ替えることができます。 最初の列にデータがない場合は、2 番目の列を試してみてください。 列にデータが含まれていない場合は、使用する既定値を指定できます。
リアルタイム ワークフロー アクションの設定条件
多くの場合、適用するアクションは条件によって異なります。 リアルタイムのワークフロー プロセスでは、条件を設定して分岐ロジックを作成し、望む結果を得るためのいくつかの方法が用意されています。 リアルタイム ワークフロー プロセスが実行されている行の値、その行に N:1 の関連付けでリンクされている行の値、プロセス内の値を確認することができます。
| 条件タイプ | 説明 |
|---|---|
| 条件の確認 | 論理的な "if <condition> then" ステートメント。 リアルタイム ワークフローが実行されている行の現在の値、N:1 の関連付けででその行にリンクされている行、または前述の手順で作成された行を確認することができます。 これらの値に基づいて、条件が 「True」 の場合に追加のステップを定義できます。 "if <condition> then" ステートメントでは、次の演算子を使用できます: 等しい、等しくない、データ含む、データ含まない、以下、未満。 注:に属するとに属さないは、階層演算子です。 階層関係が定義されているテーブルでのみ使用できます。 階層リレーションシップが定義されていないテーブルでこれらの演算子を使用する場合は、次のエラー メッセージを参照してください。"階層リレーションシップが定義されていないテーブルで階層演算子を使用しています。 テーブルを階層化する (関連付けを階層化する) か、別の演算子を使用してください」 階層の関係の詳細については、階層に関連するデータの定義とクエリ を参照してください。 表に後に続くスクリーンショットは、に属するとに属さないの階層演算子を使用したリアルタイム ワークフロー プロセスの定義例です。 |
| 条件分岐 | 論理構造の "else-if-then" 文として、エディターは「<条件>の場合、そうでなければ、次のようにします:」というテキストを使用します。 前に定義したチェック条件を選択し、条件分岐を追加して、チェック条件が false を返したときに追加のステップを定義できます。 |
| 既定の操作 | 論理的な "else" ステートメント。 エディターはテキスト「Otherwise:」を使用します。 前に定義したチェック条件、条件分岐、待機条件、または並列待機分岐を選択します。既定のアクションを使用して、条件または分岐要素で定義されている条件と一致しないすべてのケースのステップを定義できます。 |
| 待機状態 | リアルタイム ワークフローでは、待機条件を使用できません。 ただし、待機条件はバックグラウンド ワークフローで使用できます。 詳細情報: バックグラウンド ワークフロー アクションの設定条件 |
| 並列待機分岐 | 最初の基準を満たした場合にのみ実行される追加ステップを含む、リアルタイム ワークフローの代代替待機条件を定義します。 リアルタイム ワークフロー ロジックでは、並列待機分岐を使用して時間制限を作成することができます。 これらは、待機条件で定義された条件が満たされるまで、リアルタイム ワークフローが無期限に待機するのを防ぐのに役立ちます。 |
| カスタム ステップ | 開発者は、条件を定義するカスタム リアルタイム ワークフローの手順を作成することができます。 既定では、使用できるカスタム ステップはありません。 |
次のスクリーンショットには、に属するとに属さないの演算子を使用するワークフロー プロセスの定義の例が含まれています。 この例では、2 つの異なる値引きを 2 つのグループの取引先企業に適用します。 ステップの追加では、条件の確認を選択して、に属するまたはに属さないの演算子を含む if-then 条件を指定しました。 最初のif-then条件は、アルペン スキー ハウス アカウントの配下にあるすべてのアカウントに適用されます。 これらの取引先企業は、購入した商品やサービスで 10% の値引きを受けます。 2 番目の if-then の条件がアルペン スキー ハウスの取引先企業に属さないすべての取引先企業に適用され、これらの取引先企業は 5% の値引きを受けます。 その後、行の更新を選択して、条件に基づいて実行されるアクションを定義しました。
状態の変更前または変更後のリアルタイム ワークフローの起動
リアルタイム ワークフローの自動プロセスのオプションを構成するとき、状態変更のイベントの開始時期オプションによって、状態の変更時期の 後 または 前 を選択できます。 既定のオプションは 後 です。
データの状態変更が保存される前にリアルタイム ワークフローのロジックを適用したい場合、Beforeを選択します。 これにより、操作後に他のロジックが適用される前に値をチェックして、以降のロジックが実行されないようにすることができます。 たとえば、別のシステムでアクションを開始できる追加のロジックをプラグインまたはカスタム リアルタイム ワークフロー アクションに含めることができます。 さらに処理を停止することで、外部システムが影響を受けるケースを回避できます。 このイベントの前にリアルタイム ワークフローを適用することは、データを保存する可能性がある他のリアルタイム ワークフローまたはプラグイン アクションも、操作が取り消されたときに "ロールバック" する必要がないようにすることを意味します。
| アクション | 開始時期 | 説明 |
|---|---|---|
| 行が作成されました | イベント後 | 後 のみを使用できます。 行は、内部の MainOperation ステージが終了するまで一意の識別子を持たないため、行の作成前にはできません。 |
| 行の状態の変更 | 前 イベント後 |
ステータスが変更された後、または変更される前にリアルタイム ワークフロー ロジックを適用する機能を実現する更新操作に対応しています。 前は手術前の段階に対応します。 後は手術後の段階に対応します。 |
| 行が割り当てられます | 前 イベント後 |
ステータスが変更された後、または変更される前にリアルタイム ワークフロー ロジックを適用する機能を実現する更新操作に対応しています。 前は手術前の段階に対応します。 後は手術後の段階に対応します。 |
| 行の列が変更されます | 前 イベント後 |
ステータスが変更された後、または変更される前にリアルタイム ワークフロー ロジックを適用する機能を実現する更新操作に対応しています。 前は手術前の段階に対応します。 後は手術後の段階に対応します。 |
| 行が削除されました | イベント前 | 前 のみを使用できます。 行の削除は、事前操作ステージに対応します。 MainOperation が発生すると、行が削除され、発生する可能性のあるそれ以上の状態の変更はありません。 |
preoperation、mainoperation、postoperation の各段階については、イベント実行パイプライン を参照してください。
リアルタイム ワークフローの使用
リアルタイム ワークフローを構成できますが、そのワークフローの使用には注意する必要があります。 バックグラウンド ワークフローは、サーバー上のリソースが利用可能な場合にシステムが適用できるため、一般的に推奨されています。 これにより、サーバーが実行する必要のある作業がスムーズになり、システムを利用しているすべてのユーザーに最高のパフォーマンスを維持することができます。 欠点は、バックグラウンド ワークフローによって定義されたアクションがすぐには実行されないということです。 いつ適用されるかは予測できませんが、通常は数分かかります。 ビジネス プロセスの大部分の自動化については、システムのユーザーがプロセスが実行されていることを意識する必要がないため、問題ありません。
業務プロセスでプロセスの結果をすぐに確認する必要がある場合、または操作を取り消したい場合は、リアルタイム ワークフローを使用します。 たとえば、行を初めて保存するときに特定の既定値を設定したり、一部の行が削除されないようにしたりする場合があります。
リアルタイム ワークフローとバックグラウンド ワークフロー間の変換
ツール バーのバックグラウンドのワークフローに変換を選択することで、リアルタイム ワークフローをバックグラウンドのワークフローに変更できます。
ツール バーのリアルタイムのワークフローに変換を選択することで、バックグラウンドのワークフローをリアルタイム ワークフローに変更できます。 バックグラウンド ワークフローで待機条件が使用されている場合は無効になり、待機条件を削除するまでアクティブ化できなくなります。
状態の変更前または変更後のリアルタイム ワークフローの起動
リアルタイム ワークフローの自動プロセスのオプションを構成するとき、状態変更のイベントの開始時期オプションによって、状態の変更時期の 後 または 前 を選択できます。 既定のオプションは 後 です。
Before を選択すると、状態を変更するデータが保存される前に、リアルタイムワークフローのロジックを適用することを意味します。 これにより、操作後に他のロジックが適用される前に値を確認し、それ以上のロジックが実行されないようにすることができます。 たとえば、プラグインやカスタム リアルタイム ワークフロー アクションに追加のロジックを追加して、別のシステムでアクションを開始することができます。 さらに処理を停止することで、外部システムが影響を受けるケースを回避できます。 このイベントの前にリアルタイムワークフローを適用すると、他のリアルタイムワークフローや、データを保存している可能性のあるプラグインのアクションは、操作がキャンセルされたときに「ロールバック」する必要がなくなります。
リアルタイム ワークフローでワークフロー アクションを停止を使用
リアルタイム ワークフローで ワークフローの停止 アクションを適用する際は、ステータス条件として成功またはキャンセルのいずれかを指定することができます。 ステータスを [取り消し済み] に設定すると、その操作は行われません。 アクション停止のステータス メッセージのテキストを含むエラー メッセージが、ビジネス プロセス エラーの見出しでユーザーに表示されます。
リアルタイム ワークフローを実行するユーザーの構成
ワークフロー デザイナーでは、ワークフローを実行するユーザーを "ワークフローの所有者" または "レコードに変更を加えたユーザー" に設定できます。レコードの所有者を別のユーザーに変更するには、ワークフロー エディターで [管理 ] タブを開き、参照を使用してワークフローの新しい所有者を選択します。 ワークフローの所有者を変更するには、システム管理者またはシステム カスタマイザーのセキュリティ ロール、または prvChangeOwnerIdOfWorkflow 特権を含むロールが必要です。