Dynamics365のワークフロー・導入
Dynamics365のワークフローとは
下図のようなことを自動でやってくれる機能です。
しかもGUIで構成できるのでノンプログラミングでいろいろできます。
ワークフローは複雑な動作も実行できるため便利です。
複雑な動作とは具体的に下記のような動作です。
- 条件分岐が設定できます。
- レコードを作成・更新する際フィールドに設定する値に動的な値を設定できます。
自分がQiitaでしつこく書いていますが、
Dynamics365の機能ですがPowerAppsのモデル駆動型アプリでも使えます。
(結局これを力説したい)
PowerAppsのキャンバスアプリとの組み合わせ
個人的に推しまくっているモデル駆動型アプリですが、
Dynamics365をベースにしているためワークフローを使えます。
キャンバスアプリでは、個人的には複雑なロジックは組みにくいです(私は)。
複雑なロジックをワークフローでやることで、自由度が上がります。
今回記事にするのは、そのワークフローのテクニックの一つです。
関連するレコードの値とは
Dynamics365では「関連」と呼ばれるもので、
PowerApps(Common Data Service)でみると「リレーションシップ」と表現されています。
Dynamics365のデフォルトでいうと、「取引先企業」に対して複数の「取引先担当者」が関連する、
一対多の構造になっています。
※「関連」と「リレーション」は同義ではない??ここはまた詳しく調査します。
関連する値を利用するとは、「取引先担当者」にレコードを作ったときに別の「エンティティB」にレコードを作るとき、
「取引先担当者」が所属する「取引先企業」に設定されているフィールドの値を、
「エンティティB」にセットできるということです。
(Dynamics365はバージョンを9.0以降にアップグレードすると、PowerAppsと同じくCDSとしてデータが下記のように参照できるようです)
関連するレコードの値を使用するには
取引先担当者にレコードを作ったら、「お客様のプロファイル」という新しく作ったエンティティに
レコードを作成するワークフローを作ります。
このとき、取引先担当者が所属する(関連する)取引先企業の情報を、プロファイルに設定します。
まずワークフローを作る画面へ遷移
設定画面にたどり着くまでがわかりにくい。。。
下記の歯車から詳細設定を押します。
画面上の「設定」を押して、プロセスを選択します。
左上の新規ボタンを押すと、新しいワークフローを作るための画面が開きます。
ワークフローの基本設定
プロセス名をてきとうに、何をするワークフローかわかりやすいを設定します。
カテゴリはワークフローを設定します。
エンティティは、ワークフローを起動するトリガーとなるエンティティを設定します。
ワークフローの動作設定
ワークフローが動作する内容を設定していきます。
今回の設定しようとしているワークフローだと、上部の設定画面はデフォルトのままでいいので、
このままワークフローの動作を作っていきます。
説明分はてきとうに入れます。
作成:には作成する対象のエンティティを選択します。
その後プロパティの設定を押します。
Primary Nameには固定値で「自動作成のプロファイル」を設定します。
固定値の場合はフィールドの入力欄に直接文字を入力します。
次に、所属する企業情報1と2に取引先企業の値を設定します。
固定値に対して、これはワークフローのトリガーになるレコードによって値が変わるので動的な値の設定になります。
画面右側、フォームアシスタントで検索:とある欄で「会社名(取引先企業)」を設定します。
次の順番に操作します。
- 検索:の2個目の欄で、対象のフィールドに設定したいフィールド名を選択します。
- 追加を押します。
- 対象のフィールドをクリックしてカーソルを置きます。
- OKを押します。
動的な値は黄色く表示されます。
設定が済んだら画面左上の保存して閉じるを押します。
動作を試す
下記のような適当な取引先担当者を作成します。
非同期でワークフローは動くため、レコードを作成してから動作の完了までに何十秒かかかります。
作成されたデータは以下です。ちゃんと設定した値たちが入っていました。
ワークフローの動作履歴については、下図のようにワークフローの画面から確認できます。
設定を失敗してうまくいかない場合、エラー原因をここから確認できます。
最後に
ワークフロー以外にも、業務ルールやら計算フィールドやらあるので、この辺を活用すると
キャンバスアプリとのコラボレーション効果が出てくるのではないかと思います。
この辺も紹介してもっとPowerAppsを流行らせていきたいです。
(これがみなさんには響くのかどうかわかりませんが・・・・)