Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
みなさん、こんにちは。
前回に続いて Microsoft Dynamics CRM 2015 および Microsoft Dynamics CRM
Online 2015 更新プログラム SDK の新機能から、フォームスクリプトでビジネス
プロセスフローを操作する方法の紹介をします。
参考: 業務プロセス フローのスクリプトを作成する
https://msdn.microsoft.com/ja-jp/library/dn817874.aspx
前回は業務プロセスフローの各要素を取得する方法を紹介しましたので、
今回は取得した要素を利用して何ができるかを紹介します。
利用する業務プロセスフローを切り替える
Xrm.Page.data.process. getEnabledProcesses で取得したプロセスの一覧から
利用したいプロセスを Xrm.Page.data.process. setActiveProcess に渡すことで
プロセスを切り替えることが出来ます。
例えば、以下の様に潜在顧客に対してロール別のプロセスがある場合、現在
ログインしているユーザーのセキュリティロールよりどちらのプロセスを
利用するかを指定することが考えられます。
以下のサンプルでは、ユーザーのロールを取得して、ロールにより利用
する業務プロセスフローを切り替えます。
function switchBPF() {
// ユーザーのロールを取得
var userRoles = Xrm.Page.context.getUserRoles();
// ユーザーのロールが複数ある場合はなにもしない
if (userRoles.length > 1)
return;
// 業務プロセスフロー一覧の取得
Xrm.Page.data.process.getEnabledProcesses(function (processes) {
for (var processId in processes) {
// セキュリティロールが営業担当者の場合
if (userRoles[0] == "b215f8d4-32ae-e411-80e3-c4346badf6d8") {
if (processes[processId] == "営業担当者向け業務プロセス")
{
// 業務プロセスフローの切り替え
Xrm.Page.data.process.setActiveProcess(processId, function () {
alert("業務プロセスフローを切り替えます。");
});
}
}
// セキュリティロールがマーエティング プロフェッショナルの場合
else if (userRoles[0] == "ac0df8d4-32ae-e411-80e3-c4346badf6d8")
{
if (processes[processId] == "マーケティング担当者向け業務プロセス")
{
// 業務プロセスフローの切り替え
Xrm.Page.data.process.setActiveProcess(processId, function () {
alert("業務プロセスフローを切り替えます。");
});
}
}
}
});
}
ステージの移動
通常ユーザーが手動で行うステージ間の移動を以下関数で自動化できます。
次に進む場合: Xrm.Page.data.process. moveNext
前に戻る場合: Xrm.Page.data.process. movePrevious
特定のステージに移動する場合: Xrm.Page.data.process.setActiveStage
※ setActiveStage を利用する場合、移動先ステージは同じエンティティである
必要があります。現在潜在顧客レコードを開いている場合に、営業案件に移動
することはできません。
ステージの移動を行う際には、現在の状況を確認する必要があります。
その場合は Xrm.Page.data.process. getActivePath 関数を利用できます。
戻り値はステージの集合体であり、各ステージのステータスが取得できるほか
各ステップの状況も確認できます。
詳細は以下のサンプルをお試しください。
サンプル: Xrm.Page.data.process.getActivePath
業務プロセスフローの表示をコントロールする
状況よって業務プロセスフロー領域を最小化しておきたい場合は、
Xrm.Page.ui.process. setDisplayState 関数を利用します。引数が Boolean 型
ではなく、文字列であることに注意してください。
折りたたむ場合
Xrm.Page.data.process.setDisplayState(“collapsed");
展開する場合
Xrm.Page.data.process.setDisplayState(“expanded");
また完全に業務プロセスフロー領域の表示を制御したい場合には、
Xrm.Page.ui.process. setVisible 関数を利用します。引数は Boolean 型です。
まとめ
業務プロセスフローはとても強力で便利な機能です。フォームスクリプトで
操作が行えるようになったことで、自動化や表示/非表示の制御が柔軟になり
より使える機能になりました。
是非お試しください!
- 中村 憲一郎
Comments
- Anonymous
January 31, 2017
The comment has been removed- Anonymous
February 16, 2017
The comment has been removed - Anonymous
February 16, 2017
Onchange 時は値が変更されている状態のため、業務プロセスフローを切り替わえられないと考えられます。フィールドの値により業務プロセスを変更したい場合は、業務プロセスフローの中で条件を追加し対応されることをお勧めします。- 河野 高也
- Anonymous