Dynamics CRM 2015/Online 2015 更新プログラム SDK: フォームスクリプトでビジネスプロセスフローを操作する その 1

みなさん、こんにちは。

今回から 2 回に分けて、開発者の方向けの情報として、Microsoft Dynamics CRM 2015
および Microsoft Dynamics CRM Online 2015 更新プログラム SDK の新機能から、
フォームスクリプトでビジネスプロセスフローを操作する方法の紹介をします。

参考: Xrm.Page.data.process (クライアント側の参照)
https://msdn.microsoft.com/ja-jp/library/dn817878.aspx

尚、今回のリリースで業務プロセスフロー自体も強化されました。以下記事に詳細が
ありますので、合わせてご覧ください。

Dynamics CRM 2015/Online 2015 更新プログラム 業務プロセスフローの新機能 その1
Dynamics CRM 2015/Online 2015 更新プログラム 業務プロセスフローの新機能 その 2

概要

業務プロセスフローは、本来ユーザーが手動で行うべき作業ですが、これをフォーム
スクリプトで扱えるようになるメリットは自動化です。例えば以下のようなことが
できるようになっています。

- 業務プロレスフロー領域を自動で隠す。
- フィールドの値など、状況に応じて別の業務プロセスに自動で切り替える。
- プロセスを切り替えたタイミングで完了しているステップを自動で進ませる。
- フィールドの値などで任意のステップに自動で移動する。

他にも色々な使い方があると思いますが、何をするにも業務プロセスフローの各
要素をプログラム的に取得する必要がありますので、今回は各要素の取得方法から
紹介します。

業務プロセスフロー各要素の取得

全ての業務プロセスフローを取得する

フォームに複数の業務プロセスが存在する場合、以下の関数で取得できます。

Xrm.Page.data.process.getEnabledProcesses(callbackfunction(processes));

上記の通り有効な業務プロセスが結果として戻る関数ではなく、引数として
コールバック関数に返すことができる仕組みになっています。主には業務プロセス
フローの切り替えに使われるため、詳細は次回紹介します。

現在の業務プロセスフローを取得する

様々な操作をするためにも、現在表示されている業務プロセスフローを取得する
必要があります。コードを以下に示します。

var activeProcess = Xrm.Page.data.process.getActiveProcess();結果の詳細は以下関数で取得できます。

image

現在の業務プロセスフローの全ステージを取得する

上記の関数で取得したプロセスオブジェクトに紐づく、すべてのステージを
取得する場合、以下の関数を実行します。

var stages = activeProcess.getStages();

結果はステージの集合体です。ステージについては次に説明します。

現在アクティブなステージを取得する

現在のアクティブなステージは以下の関数で取得できます。

var activeStage = Xrm.Page.data.process.getActiveStage();

結果の詳細は以下の関数で取得できます。

image

ステージの全ステップを取得する

上記の関数で取得したステージの全ステップを取得するには、以下の関数を
実行します。

var steps = activeStage.getSteps()

結果はステップの集合体です。ステップについては次に説明します。

ステップの詳細

ステップの詳細はこれまでと同じように以下関数で取得できます。以下の
例は、上記で取得した steps の 1 つに対するものです。

image

まとめ

今回は業務プロセスフローの要素取得を紹介しました。これだけでは何も
できませんので、次回でどのような操作が実行できるかを紹介します。
お楽しみに!

- 中村 憲一郎