ワークフローからカスタム アクションを構成する

注意

Effective November 2020:

  • Common Data Service has been renamed to Microsoft Dataverse. Learn more
  • Some terminology in Microsoft Dataverse has been updated. For example, entity is now table and field is now column. Learn more

This article will be updated soon to reflect the latest terminology.

コードを記述することなく、リアルタイムのワークフローからユーザー定義アクションを有効にできます。 詳細情報 : ワークフローからカスタム アクションを呼び出す

また、開発者がコード内で使用できるようにアクションを作成することもできますし、既にに定義されたアクションを編集する必要があるかもしれません。 リアルタイムのワークフロー プロセスのと同様に、次のことを考慮してください:

  • アクションを何を実行する必要がありますか?

  • どのような条件の下でアクションを実行する必要がありますか?

リアルタイム ワークフロー プロセスとは異なり、次のオプションを設定する必要はありません :

  • 開始時期: アクションに対して生成されたメッセージをコードが呼び出すと、アクションが開始されます。

  • スコープ: アクションは、常に呼び出し元ユーザーのコンテキストで実行されます。

  • バックグラウンドで実行: アクションは常にリアルタイム ワークフローになります。

アクションには、リアルタイム ワークフロー プロセスにはない、入力と出力の引数があります。 詳細情報 : プロセスの引数を定義する

アクションの作成

重要

配布ソリューションの一部として含まれるアクションを作成する場合は、ソリューションのコンテキストで作成します。 設定 > ソリューション に移動し、このアクションが含まれているアンマネージド ソリューションを特定します。 次に、メニュー バーで、新規 > プロセス を選択します。 これにより、アクション名に関連付けられているカスタマイズ接頭辞が、ソリューション内の他のコンポーネントと確実に一致するようになります。 アクションを作成したら、接頭辞は変更できません。

リアルタイム ワークフロー プロセスと同様に、アクションには プロセスの作成 ダイアログ ボックスで以下のプロパティがあります :

  • プロセス名

    プロセスの名前を入力した後、プロセス名からスペース文字または特殊文字を削除することによって、一意の名前が作成されます。

  • カテゴリ

    このプロパティは、これがアクション プロセスであることを確立します。 いったんエンティティを保存したら、これを変更できません。

  • エンティティ

    アクションのプロセスでは、そのほかの種類のプロセスと同様に、リアルタイムのワークフローにコンテキストを提供するエンティティを選択することができますが、これには なし (グローバル) を選択することもできます。 アクションが特定のエンティティのコンテキストを必要としない場合は、これを使用します。 いったんエンティティを保存したら、これを変更できません。

  • 種類

    このプロパティを使用して、アクションを新規に最初から作成するか、または既存のテンプレートから始めるかを選択します。

アクションの編集

プロセスを編集するには、その前にプロセスを非アクティブ化する必要があります。

アンマネージド ソリューションの一部として作成されたアクション、または組織にインストールされているソリューションに含まれているアクションを編集できます。 ソリューションが管理ソリューションである場合、そのソリューションは編集できない場合があります。 ソリューション発行者は、マネージド ソリューションとともにインストールされたアクションを編集できないように、管理プロパティを編集することもできます。

アクションが保存されるとき、[一意の名前] がプロセス名に基づいて生成されます。 この一意の名前には、ソリューション発行者からのカスタマイズ接頭辞が付加されています。 これは、開発者がコードで使用するメッセージの名前です。

アクションを編集する際には、次のオプションを使用できます :

  • プロセス名

    プロセスが作成され、一意の名前がプロセス名から生成されると、プロセス名を編集できます。 個別のプロセスを特定しやすくする命名規則を適用したいことがあるでしょう。

  • 一意の名前

    アクションが保存されるとき、[一意の名前] がプロセス名に基づいて生成されます。 この一意の名前には、ソリューション発行者からのカスタマイズ接頭辞が付加されています。 これは、開発者がコード内で使用するメッセージの名前です。 プロセスがアクティブ化され、この名前を使用してアクションを呼び出すようにコードが用意されている場合は、この一意の名前を変更しないでください。

    重要

    アクションがアクティブ化され、一意の名前を使用するコードが作成された後は、一意の名前は、その名前を参照するコードを変更しないかぎり変更はできません。

  • ロールバックを有効にする

一般に、トランザクションをサポートするプロセスでは、いずれかの部分に障害が発生すると、操作全体を "元に戻す" (ロールバックする) ことになります。 これには、いくつかの例外があります。 アクションによって開始されるコード内で開発者が行う可能性のある一部のアクションは、トランザクションをサポートしないことがあります。 たとえば、コードがトランザクションの範囲外の他のシステムでアクションを実行する場合が挙げられます。 これらは、アプリで実行しているアクションによってロールバックできません。 プラットフォームの一部のメッセージは、トランザクションをサポートしません。 しかし、アクションのユーザー インターフェイスだけで実行できるすべてが、トランザクションをサポートします。 リアルタイム ワークフローの一部であるすべてのアクションはイン トランザクションとみなされますが、アクションでは、トランザクションから抜け出ることを選択することもできます。

アクションがイン トランザクションであるかどうかを決定するためにこのメッセージを使用する開発者に相談する必要があります。 通常、業務プロセスによって実行されるアクションがすべて完了しなければアクションが意味をなさない場合、アクションはイン トランザクションである必要があります。 標準的な例が、2 つの銀行口座間での資金の転送です。 1 つの口座から資金を引き出す場合、もう 1 つの口座にその資金を預ける必要があります。 どちらが失敗した場合、両方が失敗する必要があります。

注意

ユーザー定義アクションをワークフロー内から直接実行した場合、ロールバックを有効にできません。 Power Apps web サービス メッセージによってアクションが呼び出される場合はロールバックを有効にできます。

  • 次の種類としてアクティブ化:

    すべてのプロセスと同様に、プロセスをテンプレートとしてアクティブ化し、同様のパターンに従ったプロセスの高度な開始点として使用できます。

  • プロセスの引数の定義

    この領域では、アクションが開始する予定のデータと、アクションから渡されるデータを指定します。 詳細情報 : プロセスの引数を定義する

  • ステージ、条件、およびアクションの追加

他のプロセスと同様に、実行するアクションの内容と、それらを実行する時期を指定します。 詳細情報 : ステージ、条件、アクションの追加

プロセスの引数の定義

開発者がメッセージを使用する場合は、メッセージに何らかのデータを渡し、そのデータで開始する場合があります。 たとえば、サポート案件レコードを新規に作成する際に、入力引数として渡されるサポート案件のタイトルの値を使用する場合があります。

開発者は、メッセージが完成すると、メッセージによって変更または生成された一部のデータを、コード内の別の操作へ渡すことが必要となる場合があります。 このデータは出力引数です。

入力引数と出力引数の両方に、名前およびタイプと、引数が常に必須かどうかに関する情報を必要としています。 また、説明を与えることもできます。

メッセージ名とすべてのプロセス引数に関する情報が、メッセージの "特徴" を表します。 アクションがアクティブ化され、コードで使用されるようになった後、そのシグネチャは変更できません。 このシグネチャが変更されると、そのメッセージを使用するすべてのコードは失敗します。 唯一の例外は、パラメータの 1 つを変更して、それが必須とされないように設定することかもしれません。

引数は順序ではなく名前で識別されるので、引数を並べ替えたり、上または下に移動して引数の順序を変更できます。 また、説明の変更によって、そのメッセージを使用するコードが壊されることはありません。

アクション プロセスの引数の種類

次の表は、アクション プロセスの引数の種類について説明しています。

種類​​ 内容
Boolean true または false の値。
日時 日付と時刻の情報を格納する値。
小数 小数点以下の精度の数値。 精度が非常に重要な場合に使用します。
エンティティ 指定したエンティティのレコード。 エンティティ を選択すると、ドロップダウン リストが有効になり、エンティティの種類を選択できます。
EntityCollection エンティティ レコードのコレクションです。
エンティティ参照 エンティティ レコードを一意に識別する、エンティティ レコードの名前、ID、および種類を含むオブジェクト。 EntityReference を選択した際に、ドロップダウン リストが有効になり、エンティティの種類を選択できます。
Float 小数点以下の精度の数値。 データが完全に正確ではない測定に由来するときに使用されます。
Integer 整数。
金額 金額のデータを保存する値。
候補リスト OptionSet 属性のオプションを表す値。
文字列 テキスト値。

注意

EntityCollection 引数の値は、条件またはアクションのユーザー インターフェイスでは設定できません。 これらは、ユーザー定義コードで開発者が使用するために提供されます。 詳細 : 独自のアクションを作成する

ステージと手順の追加

アクションは、リアルタイム ワークフローに非常に似ている一種のプロセスです。 リアルタイム ワークフローで使用できるすべての手順は、アクションで使用できます。 リアルタイム ワークフローとアクションの両方に使用できるステップの詳細については、ワークフローのステージと手順を参照してください。

リアルタイム ワークフローに対して使用できるステップに加え、アクションには 値の割り当て ステップもあります。 アクションでは、これらは出力引数を設定するためにのみ使用できます。 フォーム アシスタントを使用して出力引数を特定の値に設定できます。より具体的には、アクションの実行対象のレコードからの値に、多対 1 の関連付けでレコードに関連付けられているレコードからの値に、これまでの手順で作成されたレコードからの値に、またはプロセス自体の一部となる値に設定できます。

次の手順

アクションの使用
ワークフローからカスタム アクションを呼び出す
リアルタイム ワークフローとアクションの監視