次の方法で共有


コードを使用して Customer Engagement でカスタム ビジネス アプリを作成および管理する

Dynamics 365 Customer Engagement のビジネス アプリは、特定の作業領域に関連するロールベースの機能を提供するモジュール式の専用アプリです。 これらのアプリは、シンプルで直感的なインターフェースを提供することで、ユーザーが毎日やるべきことを素早く見つけやすくします。 たとえば、 Sales ビジネス アプリは、営業担当者に関連する適切なフォーム、ビュー、ダッシュボード、およびプロセス フローのセットのみを含む、よりシンプルで小さなサイトマップを提供します。

システム管理者とカスタマイザーは、セキュリティ ロールを使用して、これらのビジネス アプリへのアクセスをユーザーに提供できます。ユーザーは、アクセス許可を持つアプリにのみアクセスできます。

Dynamics 365 Customer Engagement のカスタム ビジネス アプリは、Power Apps のモデル駆動型アプリと同じです。どちらも同じ基盤となるプラットフォーム上に構築されています。 詳細: モデル駆動型アプリとは

アプリ デザイナーを使用してカスタム ビジネス アプリを作成するだけでなく、Dynamics 365 Customer Engagement (on-premises) でカスタム ビジネス アプリをプログラムで作成および管理できます。

Von Bedeutung

必要がなければ、カスタムビジネスアプリを構築するためにコードを書く必要はありません。 アプリ デザイナーは、タイルベースの情報構造と簡略化されたインターフェイスを提供することで、コードを記述することなくカスタム ビジネス アプリを構築するためのシンプルで直感的なエクスペリエンスを提供します。 こちらをご確認ください: アプリ デザイナーを使用してカスタム ビジネス アプリを設計

カスタムビジネスアプリの作成には、次の手順が含まれます。

  1. AppModule エンティティ インスタンスを作成して、アプリとそのプロパティを定義します。
  2. AddAppComponents アクションと RemoveAppComponents アクションを使用して、エンティティ、サイトマップ、カスタム アプリのその他のコンポーネントなどのコンポーネントをアプリに追加または削除します。
  3. ValidateApp 関数を使用して、不足している必要なコンポーネントがないかアプリを確認します。
  4. アプリを公開します。
  5. 適切なセキュリティ ロールをカスタム ビジネス アプリに関連付けて、ユーザーにアクセスを提供します。

ビジネス アプリを作成し、そのプロパティを定義する

アプリを作成するには、システム管理者またはシステム カスタマイザーのセキュリティ ロール、または同等のアクセス許可が必要です。

アプリを作成するには、少なくとも以下のプロパティを指定する必要があります。

  • name: あなたのアプリに対してユニークである名前
  • uniquename: これはユーザーのアプリの名前とは異なる場合があり、英文字および数字のみで構成されます。 このアプリを作成するとき、ソリューション発行者の接頭辞 (たとえば 'new_') が名前に自動的に付きます。
  • webresourceid: アプリのイメージ アイコンとして設定する Web リソースの ID です。 システムにはデフォルトのWebリソース (ID: 953b9fac-1e5e-e611-80d6-00155ded156f) が用意されており、アプリケーションのアイコンとして使用できます。

次の Web API 要求は、統一インターフェイスの種類のアプリを作成します。

POST [Organization URI]/api/data/v9.1/appmodules HTTP/1.1
Content-Type: application/json; charset=utf-8
OData-MaxVersion: 4.0
OData-Version: 4.0
Accept: application/json

{
    "name": "SDKTestApp",
    "uniquename":"SDKTestApp",
    "webresourceid":"953b9fac-1e5e-e611-80d6-00155ded156f"    
}

応答 OData-EntityId ヘッダーには、作成したアプリの URI が含まれています。

HTTP/1.1 204 No Content
OData-Version: 4.0
OData-EntityId: [Organization URI]/api/data/v9.1/appmodules(00aa00aa-bb11-cc22-dd33-44ee44ee44ee)

ビジネスアプリからコンポーネントを追加または削除する

サイトマップ、エンティティ、ダッシュボード、業務プロセス フロー、ビュー、フォームなど、ビジネス アプリに含めるアプリ内のコンポーネントを追加または削除できます。 ビジネス アプリに追加できるコンポーネントの詳細については、「 アプリ デザイナーでのアプリ コンポーネントの追加または編集」を参照してください。

AddAppComponents アクションまたは AddAppComponentsRequest メッセージを使用して、ビジネス アプリにコンポーネントを追加します。 そのアクションでは以下の内容を指定する必要があります。

  • AppId: コンポーネントを追加するアプリの ID
  • コンポーネント追加するコンポーネントのコレクションです。 追加するコンポーネントの ID とエンティティタイプを指定する必要があります。 Customer Engagement Web API のエンティティの種類の一覧については、「 Web API Entity Type Reference」を参照してください。

次の Web API 要求は、ビュー (savedquery) およびフォーム (systemform) をアプリに追加します。

POST [Organization URI]/api/data/v9.1/AddAppComponents HTTP/1.1
Content-Type: application/json; charset=utf-8
OData-MaxVersion: 4.0
OData-Version: 4.0
Accept: application/json

{
	"AppId":"00001111-aaaa-2222-bbbb-3333cccc4444",
	"Components":[
		{
			"savedqueryid":"00000000-0000-0000-00aa-000000666000",
			"@odata.type":"Microsoft.Dynamics.CRM.savedquery"
		},
		{
			"formid":"c9e7ec2d-efca-4e4c-b3e3-f63c4bba5e4b",
			"@odata.type":"Microsoft.Dynamics.CRM.systemform"
		}
	]
}

アプリからコンポーネントを削除するには、RemoveAppComponents アクションまたは RemoveAppComponentsRequest メッセージを使用します。 このアクションは、AddAppComponents アクションと同じパラメーターのセットを使用します。

次の Web API 要求はビュー (savedquery) をアプリから削除します。

POST [Organization URI]/api/data/v9.1/RemoveAppComponents HTTP/1.1
Content-Type: application/json; charset=utf-8
OData-MaxVersion: 4.0
OData-Version: 4.0
Accept: application/json

{
	"AppId":"00001111-aaaa-2222-bbbb-3333cccc4444",
	"Components":[
		{
			"savedqueryid":"00000000-0000-0000-00aa-000000666000",
			"@odata.type":"Microsoft.Dynamics.CRM.savedquery"
		}
	]
}

ビジネスアプリを検証する

アプリの検証には、ビジネス アプリに追加したコンポーネントの依存関係をチェックして、アプリが正常に動作することを確認することが含まれます。 これは、アプリ デザイナーで [検証 ] をクリックした場合と同じです。 詳細: アプリケーションを検証する

ValidateApp 関数または ValidateAppRequest メッセージを使用してアプリを検証します。 次の Web API 要求は、ID 00001111-aaaa-2222-bbbb-3333cccc4444 でビジネス アプリを検証する方法を示しています。

GET [Organization URI]/api/data/v9.1/ValidateApp(AppModuleId=00001111-aaaa-2222-bbbb-3333cccc4444)

検証エラーが発生しなければ、応答は次のいずれかになります。

HTTP/1.1 200 OK
OData-Version: 4.0

{
    "@odata.context": "[Organization URI]/api/data/v9.1/$metadata#Microsoft.Dynamics.CRM.ValidateAppResponse",
    "AppValidationResponse": {
        "ValidationSuccess": true,
        "ValidationIssueList": []
    }
}

アプリに検証の問題がある場合、応答により ValidationIssueList コレクション内にエラー/警告が表示されます。

HTTP/1.1 200 OK
OData-Version: 4.0

{
    "@odata.context": "[Organization URI]/api/data/v9.1/$metadata#Microsoft.Dynamics.CRM.ValidateAppResponse",
    "AppValidationResponse": {
        "ValidationSuccess": false,
        "ValidationIssueList": [
            {
                "ErrorType": "Error",
                "Message": "App does not contain Site Map",
                "DisplayName": null,
                "ComponentId": "00000000-0000-0000-0000-000000000000",
                "ComponentType": 0,
                "ComponentSubType": 0,
                "ParentEntityId": "00000000-0000-0000-0000-000000000000",
                "ParentEntityName": null,
                "CRMErrorCode": -2147155684,
                "RequiredComponents": []
            },
            {
                "ErrorType": "Warning",
                "Message": "Account doesn’t reference a form or view. App users will see all forms and views.",
                "DisplayName": null,
                "ComponentId": "00000000-0000-0000-0000-000000000000",
                "ComponentType": 0,
                "ComponentSubType": 0,
                "ParentEntityId": "00000000-0000-0000-0000-000000000000",
                "ParentEntityName": null,
                "CRMErrorCode": -2147155691,
                "RequiredComponents": []
            }
        ]
    }
}

ビジネスアプリを公開する

カスタムビジネスアプリに必要なコンポーネントを追加して検証したら、ユーザーが使用できるように公開する必要があります。

PublishXml アクションまたは PublishXmlRequest メッセージを使用して、カスタム ビジネス アプリを公開します。 次のリクエストは、ID: 00001111-aaaa-2222-bbbb-3333cccc4444 でビジネス アプリを発行する方法を示しています。

POST [Organization URI]/api/data/v9.1/PublishXml HTTP/1.1
Content-Type: application/json; charset=utf-8
OData-MaxVersion: 4.0
OData-Version: 4.0
Accept: application/json

{  
  "ParameterXml":"<importexportxml><appmodules><appmodule>00001111-aaaa-2222-bbbb-3333cccc4444</appmodule></appmodules></importexportxml>"
}

セキュリティ ロールを使用してビジネス アプリへのアクセスを管理する

ユーザーが [設定] > [マイ アプリ] 領域または Dynamics 365 Customer Engagement (on-premises) ホーム ページからアプリにアクセスできるようにするために、セキュリティ ロールをビジネス アプリに関連付けることができます。 関連付けられたセキュリティ ロールに割り当てられ、Customer Engagement でビジネス アプリを表示および使用できるユーザー。

AppModule Entity エンティティの appmoduleroles_association ナビゲーション プロパティを使用して、ビジネス アプリをセキュリティ ロールに関連付けます。 次の要求は、ビジネス アプリをセキュリティ ロールに関連付ける方法を示しています。

POST [Organization URI]/api/data/v9.1/appmodules(00001111-aaaa-2222-bbbb-3333cccc4444)appmoduleroles_association/$ref HTTP/1.1
Content-Type: application/json; charset=utf-8
OData-MaxVersion: 4.0
OData-Version: 4.0
Accept: application/json

{  
  "@odata.id":"[Organization URI]/api/data/v9.1/roles(<roleId>)"
}

セキュリティ ロールとビジネス アプリの関連付けを解除するには、同じナビゲーション プロパティで DELETE 要求を使用します。 例えば次が挙げられます。

DELETE [Organization URI]/api/data/v9.1/appmodules(00001111-aaaa-2222-bbbb-3333cccc4444)/appmoduleroles_association/$ref?$id=[Organization URI]/api/data/v9.1/roles(<roleId)

ビジネスアプリとそのコンポーネントを管理する

このセクションでは、アプリの取得、アプリのプロパティの更新、アプリのコンポーネントの取得、およびアプリの削除に関する情報を提供します。

公開済みアプリの取得

公開済みアプリを取得するには、以下の要求を使用します。

GET [Organization URI]/api/data/v9.1/appmodules?$select=name

未公開のアプリの取得

未公開アプリを取得するには、RetrieveUnpublishedMultiple 関数を使用します。 例えば次が挙げられます。

GET [Organization URI]/api/data/v9.1/appmodules/Microsoft.Dynamics.CRM.RetrieveUnpublishedMultiple()?$select=name

公開済みのビジネスアプリのコンポーネントを取得する

ビジネス アプリのアプリ コンポーネントを取得するには、 RetrieveAppComponents 関数または RetrieveAppComponentsRequest メッセージを使用します。 例えば次が挙げられます。

GET [Organization URI]/api/data/v9.1/RetrieveAppComponents(AppModuleId=00001111-aaaa-2222-bbbb-3333cccc4444)

公開されたビジネス アプリに関連付けられたセキュリティ ロールの取得

ビジネス アプリに関連付けられているセキュリティ ロールを取得するには、appmoduleroles_association ナビゲーション プロパティと共に $expand システム クエリ オプションを使用します。 たとえば、ID が 00001111-aaaa-2222-bbbb-3333cccc4444 のビジネス アプリに関連付けられているすべてのセキュリティ ロールを取得する要求を次に示します。

GET [Organization URI]/api/data/v9.1/appmodules(00001111-aaaa-2222-bbbb-3333cccc4444)?$expand=appmoduleroles_association&$select=name,appmoduleroles_association

ビジネスアプリを削除する

DELETE リクエストを使用して、ビジネスアプリを削除します。 例えば次が挙げられます。

DELETE [Organization URI]/api/data/v9.1/appmodules(00001111-aaaa-2222-bbbb-3333cccc4444)

ビジネスアプリのクライアントAPIサポート

次のクライアント API を使用して、ビジネス アプリを操作できます。

こちらも参照ください

アプリ デザイナーを使用してカスタム ビジネス アプリを設計します