ビジネスプロセスフロー(Business Process Flow、略称BPF)は、dynamics 365における重要な概念の1つです。それを理解するために、エンティティの関連性も把握しないといけないので、初心者に対しては少し難しいですが。今回の記事では分かりやすく説明させて頂きたいです。
BPFは名前の通りに、業務プロセスのフローと理解してもOKです。
BPFとエンティティの概念をざっくり説明
dynamics 365において、既存のBPFをカスタマイズし、D365に落とし込む意味も含まれます。BPFは各ステージに形成されます。ステージのデザインやロジックなどは、D365の中でカスタマイズ出来ています。
また、ステージのロジックを定義するために、エンティティの関係を把握する必要があります。
「お客様の問い合わせ⇒商品説明⇒営業活動⇒提案⇒見積もり⇒成約」という業務シナリオを想像してみてください。見積もりのステージから成約のステージに遷移するためには、必ず何かトリガーが存在します。例えば、お客様の予算金額と合致したり、お客様が承認ボタンを押したりというようなロジックがBPFの後ろに存在するはずです。
トリガーを起こす同時に、データのやり取りが生じます。上記の例では、お客様が所属するマスタデータ、商品データ、営業側のデータのやり取りが発生します。
「お客様が所属するマスタデータ」は、1つのエンティティと言います。つまり、3つのエンティティの関係が存在します。dynamics 365では、「1対1、1対多、多対多」の3つのエンティティ関係が定義されています。
BPFとエンティティについてざっくり説明しましたが、まとめますと、以下のフローでBPFが形成されます。
「対象BPFに登場するエンティティを整理する⇒エンティティの関係を定義する⇒ロジックをBPFのステージに組む⇒BPFが出来ている」
出来ているBPFは詳細設定⇒ソリューション⇒プロセスに集約されます。ここで主エンティティが表示されます。
BPFのステージに組む時の問題点
上記BPFの作成フローの中で、「ロジックをBPFのステージに組む」の段階は上手くいかない場合があります。
例えば、ステージを追加して、別のエンティティを選択すると、ある時はリレーションシップのオプションが表示され、ある時はそのエリアが表示されないことがあります。
Accountエンティティに、BPFを作成します。現在ステージが1つあります。
そこで新しいステージを1つ追加します。
右下のRelationShipに、Noneで表示されました。そこでAccount(取引先企業)のエンティティと関係のあるエンティティを選択する必要があります。
今回は、コンタクトステージの後にステージを追加するため、コンタクトに関係のないエンティティを選択します。例えば:Web Formのエンティティを選択します。
しかし、選択したら右下のRelationShipエリアが消えてしまいました。つまり、Web Formの関連エンティティが選択できない状態になります。
その原因は、BPFのこの動作は、ステージに選択されたエンティティ間の関係が間違ったのです。
最初のステージがアカウントで、次のステージがコンタクトで、アカウント>コンタクトという「1対多」の関係がある場合、関係(RelationShip)を選択するオプションが表示されますが、そうでない場合は何のオプションも表示されません。
原因を考える
さて、この関係(RelationShip)を選択するオプションは、何らかのRelationShipを選択した場合にはどうなるのか、また、何も選択しなかった場合にはどうなるのか。
まず最初に、次のステージとの「1対多」の関係がすべてリストアップされます。
関係(RelationShip)がなし(None)に設定されていて、「次のステージ」をクリックすると、次のステージボタンの隣には、「no contact, create new」という画面が表示されます。
ここで、いくつかの関係を選択してBPFを更新し、再度next stageをクリックすると、再び画面が表示されますが、今回は提供された関係に基づいて連絡先の関連レコードがすべて表示されます。
例えば、会社名(口座)が当座預金である連絡先レコードがすでに5件ある場合、これら5件のレコードがすべて表示されます。これは重複したレコードの作成を減らすためです。
まとめ:
BPFを作成する時、エンティティの重要性が明らかになりました。
各ステージのRelationShipエリアの有無は、現在ステージに紐づいてるエンティティと一個前ステージのエンティティの関係によります。エンティティの関係は「1対多」であれば、RelationShipエリアが表示されます。そうでない場合は、表示されません。
コメント