チュートリアル: ワークフロー拡張の作成

このチュートリアルは、ワークフロー デザイナーを拡張してカスタム活動を追加するプロセスと、ワークフロー アセンブリを使用するロジック (ワークフロー活動と呼ばれることもあります) を示します。 この方法で作成した拡張は、ワークフロー、ユーザー定義アクション、またはダイアログ内で使用できます。

このチュートリアルでは、要件およびプロセスに焦点を当てるために非常に単純な例を以下の目的で使用します。

  • Visual Studio クラス ライブラリ プロジェクトの作成
  • CodeActivity クラスの追加
  • 入力および出力パラメーターの定義
  • ビジネス ロジックの追加
  • アセンブリのサインとビルド
  • アセンブリの登録
  • アセンブリをテストする
  • ソリューションへのアセンブリの追加

前提条件

  • Microsoft Dataverse インスタンスおよび管理者権限
  • ワークフローの構成方法について理解する。 詳細: クラシック Dataverse ワークフロー
  • 取引先企業を編集できるモデル駆動型のアプリケーション。

目標

以下の例では、ワークフロー、ダイアログ、またはアクション プロセスで使用可能な簡単なユーザー定義のワークフロー活動を作成します。 詳細: ワークフロー ステージとステップの構成

このユーザー定義のワークフロー活動は、次の要件を満たします。

  1. 10 進数入力パラメーターを受け入れる
  2. 入力パラメーター + 10 に等しい値を出力する

取引先企業 エンティティのワークフローでは、2 つの手順を使用して 利用限度額 値を大きくするために使用できます。

このチュートリアルの目標。

手順 1 では、取引先企業利用限度額 値を受け入れて、10 ごとに増分するために、 サンプル: 10 ごとに増分 カスタム ワークフロー活動を使用します。 手順 2 では、値が増分された 取引先企業利用限度額 値を更新するために、レコードの更新 操作を使用します。

手順 1: 取引先企業の利用限度額を増分する

最初のステップが追加されたら、ユーザー定義のワークフロー活動が サンプル グループで使用可能になり、同じ 10 ごとに増分 が設定されます。

10 ステップごとに増分。

プロパティの設定 ボタンをクリックして最初のステップを構成するとき、Decimal Input プロパティが必要になり、取引先企業 エンティティの 利用限度額 属性などの 10 進値のみ受け入れます。

10 進数入力の設定。

手順 2: 新しい取引先企業利用限度額の設定

2 番目の手順では、レコードの更新 アクションは、増分した値で 取引先企業の利用限度額 値を更新するために、取引先企業の利用限度額を増分する ステップの出力を割り当てます。

利用限度額の更新。

Visual Studio クラス ライブラリ プロジェクトの作成

このプロジェクトは、10 進数値を 10 ごとに増分するシンプルなワークフロー アセンブリを作成します。

  1. Visual Studioを起動します。

  2. ファイルメニューで新規をクリックし、プロジェクトをクリックします。

  3. クラス ライブラリ を検索し、 クラス ライブラリ (.NET Framework) を選択します。

    クラス ライブラリ (.NET Framework) を検索する。

  4. 次へ をクリックします。

  5. ソリューションの名前と場所を指定します。

    Visual Studio 2019 に新しいプロジェクト ダイアログを構成します。

    注意

    プロジェクトにわかりやすいプロジェクト名を選択します。 この例では、SampleWorkflowActivity が使用されます。

  6. 作成 をクリックします。

  7. ソリューション エクスプローラー でプロジェクトを右クリックし、 プロパティを選択します。 アプリケーション タブで、 .NET Framework 4.6.2 が対象のフレームワークとして設定されていることを確認します。

    プロジェクト プロパティの設定。

  8. ソリューション エクスプローラーで、プロジェクトを右クリックして、 管理 NuGet パッケージ... を選択します を参照してください。

    NuGet パッケージの管理。

  9. Microsoft.CrmSdk.WorkflowNuGet パッケージを参照し、それをインストールします。

    Microsoft.CrmSdk.Workflow ワークフロー NuGet パッケージをインストールします。

    注意

    インストールするパッケージが crmsdk により所有されていることを確認します。 必要な Microsoft.Xrm.Sdk.dll アセンブリも含まれるように、このパッケージには、Microsoft.Xrm.Workflow.dll が含められ、Microsoft.CrmSdk.CoreAssemblies パッケージへの依存関係が含まれます。

  10. ライセンスの承認 ダイアログで 同意する をクリックする必要があります。

    使用許諾契約書に同意する。

クラス ファイルの変更

  1. ソリューション エクスプローラーで、既定の Class1.cs ファイルを右クリックし、 名前の変更を選択します。

    Class1.cs ファイルの名称変更。

    注意

    活動にわかりやすいクラス名を選択します。 この例では、クラス IncrementByTen に名前を付けます。

  2. クラス名の変更を確認するダイアログボックスで、 はい を選択します。

    [はい] を選択してクラスの名前を変更します。

  3. IncrementByTen.cs ファイルを開き、次の using ディレクティブを追加します。

    using System.Activities;
    using Microsoft.Xrm.Sdk;
    using Microsoft.Xrm.Sdk.Workflow;
    
  4. 次に示すように、クラスが CodeActivity クラスから継承するようにして、パブリック アクセス修飾子を付与します。

    public class IncrementByTen: CodeActivity
        {
    
        }
    
  5. Visual Studio クイック アクションを使用するか手動で、CodeActivity クラスから 実行 メソッドを追加します。

    CodeActivity インターフェイスの実装。

  6. クラスは次のようになりました。

    public class IncrementByTen : CodeActivity
    {
        protected override void Execute(CodeActivityContext context)
        {
            throw new NotImplementedException();
        }
    }
    

入力および出力パラメーターの定義

  1. 出力パラメーターの値が 10 ごとに増分された入力したパラメーターの値となる一連の入出力パラメーターに関する情報を追加します。

    public class IncrementByTen : CodeActivity
    {
        [RequiredArgument]
        [Input("Decimal input")]
        public InArgument<decimal> DecInput { get; set; }
    
        [Output("Decimal output")]
        public OutArgument<decimal> DecOutput { get; set; }
    
        protected override void Execute(CodeActivityContext context)
        {
    
        }
    }
    

    注意

    アセンブリのパラメーターに関するメタデータを提供するために使用される .NET 属性の使用方法に注目してください。 詳細: パラメーターの追加

ビジネス ロジックの追加

10 ごとに入力値を増分するためのロジックを適用するために、Execute メソッド内にロジックを追加します。

    protected override void Execute(CodeActivityContext context)
    {
      decimal input = DecInput.Get(context);
      DecOutput.Set(context, input + 10);
    }

アセンブリのサインとビルド

  1. ユーザー定義のワークフロー活動 (およびプラグイン) のアセンブリに署名が必要です。 プロジェクトプロパティの 署名 タブで、 アセンブリに署名する を選択します。 厳密な名前のキーファイルを選択するにて、 <新規...> オプションを選択します。 このチュートリアルの目的では、パスワードを設定する必要はありません。 この例では、SampleWorkflowActivity.snk という新しい厳密な名前のキーファイルを作成しました。

    アセンブリへのサイン。

  2. デバッグ モードでソリューションをビルドし、SampleWorkflowActivity.dll アセンブリが /bin/Debug フォルダーにあることを確認します。

注意

アセンブリの開発中は、 Debug ビルド構成を使用することができます。 アセンブリを運用サーバーまたはソリューションに展開する際には、 リリース ビルド構成を使用する必要があります。

アセンブリの登録

ユーザー定義のワークフロー活動アセンブリは、プラグイン登録ツールを使用して登録します。 このツールは、グラフィカル ユーザー インターフェイスを提供します。このツールを使用して、プラグインを含むアセンブリまたはユーザー定義のワークフロー活動のアセンブリを登録できます。 プラグイン登録ツールを取得するには、Dataverse 開発ツールを参照してください

プラグイン登録ツールを使用して接続する

  1. プラグイン登録ツールをダウンロードした後、PluginRegistration.exe をクリックして開きます。

  2. 新しい接続の作成をクリックして、使用するインスタンスに接続します。

  3. Office 365 が選択されていることを確認します。

  4. 現在使用しているアカウント以外の Microsoft アカウントを使用して接続している場合は、詳細の表示をクリックし、クレデンシャルを入力します。 それ以外の場合は、現在のユーザーとしてサインインを選択したままにしておきます。

  5. Microsoft アカウントが複数の環境へのアクセスを提供する場合は、利用可能な組織の一覧を表示するを選択します。

    プラグイン登録ツールを使用してログインします。

  6. ログインをクリックします。

  7. 使用可能な組織の一覧を表示するを選択した場合、接続する組織を選択し、ログインをクリックします。

  8. 接続すると、既存の登録済みプラグイン、カスタム ワークフロー活動、およびデータ プロバイダーが表示されます。

    既存のプラグインとカスタム ワークフロー活動を表示します。

アセンブリの登録

  1. 登録 > 新しいアセンブリの登録の順に選択します

    アセンブリ コマンドの登録。

  2. 新しいアセンブリの登録 ダイアログ ボックスで、省略記号ボタン (...) をクリックし、/bin/Debug フォルダー内の SampleWorkflowActivity.dll に移動します。

    アセンブリの登録ダイアログ。

    注意

    注意: Dataverse で手順 3 および 4 に関してのみ使用できるオプションが選択されており、無効なオプションは動作しません。

  3. 選択したプラグインの登録をクリックします。 確認ダイアログが表示されます。

    登録済みプラグイン ダイアログ。

  4. OK をクリックして 新しいアセンブリの登録 ダイアログを閉じます。

アクティビティ名を構成する

  1. 登録されたプラグインとユーザー定義ワークフロー活動 のリストで、(アセンブリ) SampleWorkflowActivity を見つけ、展開して (ワークフロー活動) SampleWorkflow.Activity.IncrementByTen - Isolatable を表示します。

  2. (ワークフロー活動) SampleWorkflow.Activity.IncrementByTen - Isolatable を選択し、プロパティ 領域で、次の表の値を使用して 編集可能なプロパティ を編集します。

    編集可能なフィールド 元の値 新しい値 説明
    説明 入力パラメーターに 10 を加えた値を返します。 プロセス デザイナーの UI に表示されませんが、この情報を格納する PluginType エンティティから取得されたデータからドキュメントを生成するときに便利な場合があります。
    FriendlyName GUID 値 IncrementByTen プラグインのユーザー フレンドリ名です。
    Name SampleWorkflowActivity.IncrementByTen 10 ごとに増分 表示されたメニューの名前
    WorkflowActivityGroupName SampleWorkflowActivity (1.0.0.0) サンプル Dataverse プロセス デザイナーのメイン メニューに追加されるサブメニューの名前。

    注意

    名前WorkflowActivityGroupName が null に設定されている場合、ユーザー定義活動はプロセス デザイナーに表示されません。

  3. 保存 (アイコン) をクリックして変更を保存します。

    ワークフロー活動プロパティを保存する。

アセンブリをテストする

新しいワークフロー活動を使用するプロセスを作成することでその新しいワークフロー活動をテストできます。 上の目標セクションで説明されているワークフローを作成するためにこれらの手順を使用します。

  1. [Power Apps を開く]

  2. ソリューションを選択します。

  3. CDS 既定の発行者 ソリューションを開きます。

  4. メニューで ... を展開し、 クラシックに切り替えるを選択します。

    クラシック ユーザー インターフェイスに切り替える。

  5. コンポーネント リストで プロセス を選択します。

  6. 新規作成 を選択し、プロセスの作成 ダイアログで次を入力します。

    フィールド Value
    [プロセス名] SampleWorkflowActivity.IncrementByTen のテスト
    カテゴリ ワークフロー
    エンティティ 取引先企業
    [このワークフローをバックグラウンドで実行する (推奨)] 選択解除済み

    注意

    バックグラウンドでこのワークフローを実行する オプションは、これをリアルタイム (同期) ワークフローにするために選択解除されています。 これにより、テストが簡単になります。

    プロセスの作成。

  7. OK をクリックします。

  8. 以下の変更を適用します。

    フィールド
    Scope 組織全体
    開始時期: レコード フィールドの変更 選択済み、ダイアログで指定された name フィールド

    テスト ワークフローの構成。

    注意

    スコープ組織 に設定すると、組織内のすべてのユーザーが適用することができるワークフローを作成します。

  9. 次のステップを追加します。

    SampleWorkflowActivity.IncrementByTen ステップの追加。

  10. ステップ 説明取引先企業の利用限度額を増分する に設定し、プロパティのプロパティ をクリックします。

  11. 既定値 0 を持つ取引先企業利用限度額に Decimal Input プロパティの値を設定します。

    10 進数入力プロパティを設定する。

  12. 保存して閉じるをクリックします。

  13. レコードの更新 ステップを追加します

    レコードの更新ステップを追加する。

  14. プロパティの設定 をクリックし、取引先企業の利用限度額を増分する ステップの値に 利用限度額 の値を設定します。

    利用限度額の値を設定する。

    ワークフロー ステップは、次のように表示されます。

    完了したワークフロー。

  15. 保存して閉じるをクリックします。

  16. メニューで アクティブ化 をクリックし、ワークフローをアクティブ化します...

    ワークフローのアクティブ化コマンド。

  17. プロセスのアクティブ化の確認 ダイアログで アクティブ化 をクリックします。

    [プロセスのアクティブ化の確認] ダイアログ。

  18. モデル駆動型のアプリに移動して、取引先企業の一覧を表示します。

  19. 取引先企業を選択します。

  20. 取引先企業名 フィールドの値を編集します。

  21. 取引先企業レコードを保存します。

  22. 編集した取引先企業の 利用限度額 値が 10 増分されたことを確認します。

    取引先企業の利用限度額が増分されたことを確認する。

ソリューションへのアセンブリの追加

ソリューションのユーザー定義のワークフロー活動を配布するには、それを含む登録されているアセンブリをアンマネージド ソリューションに追加する必要があります。

  1. Power Appsを使用して、アセンブリを追加する アンマネージド ソリューションを開きます。

  2. 既存を追加する > その他 > プラグイン アセンブリを選択します

    既存のプラグイン アセンブリを追加する。

  3. プラグイン アセンブリを名前で検索します。この場合は「SampleWorkflowActivity」です。

  4. プラグイン アセンブリを選択し、 追加を選択します。

関連項目

ワークフローの拡張機能
サンプル: カスタム ワークフロー活動の作成
サンプル: ユーザー定義ワークフロー活動を使用した次回の誕生日の更新
サンプル: ユーザー定義ワークフロー活動でクレジット スコアを計算する

注意

ドキュメントの言語設定についてお聞かせください。 簡単な調査を行います。 (この調査は英語です)

この調査には約 7 分かかります。 個人データは収集されません (プライバシー ステートメント)。