サンプル: Xrm.Page.data.process.getEnabledProcesses

 

公開日: 2017年1月

対象: Dynamics 365 (online)、Dynamics 365 (on-premises)、Dynamics CRM 2016、Dynamics CRM Online

このサンプルは、Xrm.Page.data.process.getEnabledProcesses メソッドを使用してエンティティに対して有効にされたプロセスの情報を取得する方法を示します。

要件

サンプル JavaScript ライブラリの Sdk.formOnLoad 関数は、フォームの OnLoad イベント ハンドラーとして設定する必要があります。

使用例

Xrm.Page.data.process.getEnabledProcesses メソッドは、現在のユーザーが切り替えることのできる、エンティティに対して有効なプロセスの情報を返します。Xrm.Page.data.process.setActiveProcess メソッドを使用する場合は、getEnabledProcesses メソッドを使用して、設定可能な有効なプロセスに関する情報を取得できます。

このサンプルでは、the Xrm.Page.data.processsAPI でのいくつかのメソッドの使用方法を説明します。 その目的は、この API を使用してビジネス要件を満たす方法を説明することではなく、主なプロパティ値にコードでアクセスする方法を説明することです。

Sdk.formOnLoad 関数は、Xrm.Page.data.process.getEnabledProcesses メソッドを使用して、エンティティに対して有効にされた業務プロセス フローに関する情報を非同期で取得します。 このサンプルは、最初のパラメーターとして匿名関数を渡します。 この関数は、データが返され、パラメーターとして匿名関数に渡されると、非同期で実行されます。

有効な業務プロセス フローに関する情報は、ディクショナリ オブジェクトとして提供されます。このとき、プロセスの ID はプロパティの名前、業務プロセス フローの名前はプロパティの値になります。 サンプル コードは、この情報を処理し、グローバル Sdk.enabledProcesses 配列で値を設定して、後で実行されるロジックがアクセスできるようにします。 加えて、サンプルは Sdk.enabledProcesses 配列の値をループし、取得した業務プロセス フローに関する情報を Sdk.writeToConsole 関数を使用してコンソールに書き込みます。

//A namespace defined for SDK sample code
//You should define a unique namespace for your libraries
var Sdk = window.Sdk || { __namespace: true };
(function () {
 //A global variable to store information about enabled business processes after they are retrieved asynchronously
 this.enabledProcesses = [];

 // A function to log messages while debugging only
 this.writeToConsole = function (message) {
  if (typeof console != 'undefined')
  { console.log(message); }
 };

 //Code to run in the OnLoad event 
 this.formOnLoad = function () {
  //Retrieve Enabled processes
  Xrm.Page.data.process.getEnabledProcesses(function (processes) {
   //Move processes to the global Sdk.enabledProcesses array;
   for (var processId in processes) {
    Sdk.enabledProcesses.push({ id: processId, name: processes[processId] })
   }
   Sdk.writeToConsole("Enabled business processes flows retrieved and added to Sdk.enabledProcesses array.");

   //Write the values of the Sdk.enabledProcesses array to the console
   if (Sdk.enabledProcesses.length < 0) {
    Sdk.writeToConsole("There are no enabled business process flows for this entity.");
   }
   else {
    Sdk.writeToConsole("These are the enabled business process flows for this entity:");
    for (var i = 0; i < Sdk.enabledProcesses.length; i++) {
     var enabledProcess = Sdk.enabledProcesses[i];
     Sdk.writeToConsole("id: " + enabledProcess.id + " name: " + enabledProcess.name)
    }
   }

   //Any code that depends on the Sdk.enabledProcesses array needs to be initiated here

  });
 };

}).call(Sdk);

ブラウザーの開発者ツールを開いてこのサンプルを実行する場合に、有効な複数の業務プロセス フローを持つエンティティに関してコンソールに書き込まれる出力の例を以下に示します。

Enabled business processes flows retrieved and added to Sdk.enabledProcesses array.
These are the enabled business process flows for this entity:
id: 7994be68-899e-4a40-8d18-f5c3b6940188 name: Sample Lead Process
id: 919e14d1-6489-4852-abd0-a63a6ecaac5d name: Lead to Opportunity Sales Process

関連項目

業務プロセス フローのスクリプトを作成する
サンプル: Xrm.Page.data.process.getActivePath

Microsoft Dynamics 365

© 2017 Microsoft. All rights reserved. 著作権