次の方法で共有


サンプル: ExportDataUsingFetchXmlToAnnotation カスタム API

このサンプルでは、sample_ExportDataUsingFetchXmlToAnnotation という名前のカスタム API をサポートするプラグインの作成方法を示します。 PowerApps-サンプル/dataverse/orgsvc/C#/ExportDataUsingFetchXmlToAnnotation/ からサンプル コードにアクセスできます。

プラグインは、カスタム API の主な操作のロジックを提供します。 sample_ExportDataUsingFetchXmlToAnnotation カスタムAPIは、提供された FetchXML 入力パラメーターを使用してデータを取得し、CSV ファイルを作成します。 次に、注釈レコードを作成し、annotationidAnnotationId レスポンス プロパティとして返します。

注 : CSV ファイルのデータのサイズは、システム設定で指定された添付ファイルのサイズ制限未満にする必要があります。そうでない場合、添付ファイルの作成は失敗します。

このサンプルを実行する方法

このサンプルにあるコードを実行するには、最初に組織でカスタム API を作成する必要があります。

カスタム API を作成するには、次の 2 つの方法があります。

  1. マネージド ソリューション ファイルのインポート
  2. カスタム API の作成

マネージド ソリューション ファイルのインポート

このフォルダーの ExportDataUsingFetchXmlToAnnotation_1_0_0_0_managed.zip には、このコードを使用する sample_ExportDataUsingFetchXmlToAnnotation カスタム API とクリーンアップ API sample_CleanupExportedDataAnnotations が含まれます。 このソリューション ファイルをインポートするだけで、組織でカスタム API を作成できます。 手順については、ソリューションのインポートを参照してください。

テストが終了したら、 sample_CleanupExportedDataAnnotations カスタム API を使用して作成したデータを削除し、管理ソリューション を削除してカスタム API を削除します。

sample_ExportDataUsingFetchXmlToAnnotation バインドされていないカスタム API です。 データの取得に使用される 1 つの入力パラメータ FetchXmlを取り、 AnnotationId CSV ファイル データを含む作成された注釈レコードのレコード ID を返します。

sample_CleanupExportedDataAnnotations API には入出力パラメータがありません。

カスタム API の作成

このプロジェクトでプラグイン アセンブリをビルドし、カスタム API を作成し、いくつかの方法のいずれかを使用してプラグイン ステップを関連付けることもできます。 詳細: カスタム API の作成

このソリューションには 2 つのカスタム API があります。 これらのカスタムAPIを記述する次の JSON は、Web API を使用して取得されました。 詳細: カスタム API に関するデータの取得

sample_ExportDataUsingFetchXmlToAnnotation

{
    "uniquename": "sample_ExportDataUsingFetchXmlToAnnotation",
    "allowedcustomprocessingsteptype@OData.Community.Display.V1.FormattedValue": "None",
    "allowedcustomprocessingsteptype": 0,
    "bindingtype@OData.Community.Display.V1.FormattedValue": "Global",
    "bindingtype": 0,
    "boundentitylogicalname": null,
    "description": "Exports data using the input Fetch Xml to CSV attaches to an annotation record.",
    "displayname": "Export Data Using Fetch XML to Annotation",
    "executeprivilegename": null,
    "isfunction@OData.Community.Display.V1.FormattedValue": "No",
    "isfunction": false,
    "isprivate@OData.Community.Display.V1.FormattedValue": "No",
    "isprivate": false,
    "workflowsdkstepenabled@OData.Community.Display.V1.FormattedValue": "No",
    "workflowsdkstepenabled": false,
    "customapiid": "bd8ffcee-5a38-4d0a-b296-6848c94dd22e",
    "iscustomizable": {
        "Value": true,
        "CanBeChanged": true,
        "ManagedPropertyLogicalName": "iscustomizableanddeletable"
    },
    "CustomAPIRequestParameters": [
        {            
            "uniquename": "FetchXml",
            "name": "Fetch Xml",
            "description": "Fetch XML which is used to fetch all data and export to CSV",
            "displayname": "Fetch Xml",
            "type@OData.Community.Display.V1.FormattedValue": "String",
            "type": 10,
            "logicalentityname": null,
            "isoptional@OData.Community.Display.V1.FormattedValue": "No",
            "isoptional": false
        }
    ],
    "CustomAPIResponseProperties": [
        {
            "uniquename": "AnnotationId",
            "name": "Annotation Id",
            "description": "Id of the created annotation entity record.",
            "displayname": "Annotation Id",
            "type@OData.Community.Display.V1.FormattedValue": "Guid",
            "type": 12,
            "logicalentityname": null
        }
    ],
    "PluginTypeId": {
        "typename": "PowerApps.Samples.ExportDataUsingFetchXmlToAnnotationPlugin",
        "version": "1.0.0.0",
        "name": "PowerApps.Samples.ExportDataUsingFetchXmlToAnnotationPlugin",
        "assemblyname": "ExportDataUsingFetchXmlToAnnotation"
    }
}

sample_CleanupExportedDataAnnotations

{
    "uniquename": "sample_CleanupExportedDataAnnotations",
    "allowedcustomprocessingsteptype@OData.Community.Display.V1.FormattedValue": "None",
    "allowedcustomprocessingsteptype": 0,
    "bindingtype@OData.Community.Display.V1.FormattedValue": "Global",
    "bindingtype": 0,
    "boundentitylogicalname": null,
    "description": "Clean Up Exported Data Annotations",
    "displayname": "Clean Up Exported Data Annotations",
    "executeprivilegename": null,
    "isfunction@OData.Community.Display.V1.FormattedValue": "No",
    "isfunction": false,
    "isprivate@OData.Community.Display.V1.FormattedValue": "No",
    "isprivate": false,
    "workflowsdkstepenabled@OData.Community.Display.V1.FormattedValue": "No",
    "workflowsdkstepenabled": false,
    "iscustomizable": {
        "Value": true,
        "CanBeChanged": true,
        "ManagedPropertyLogicalName": "iscustomizableanddeletable"
    },
    "CustomAPIRequestParameters": [],
    "CustomAPIResponseProperties": [],
    "PluginTypeId": {
        "typename": "PowerApps.Samples.CleanUpExportedDataAnnotationsPlugin",
        "version": "1.0.0.0",
        "name": "PowerApps.Samples.CleanUpExportedDataAnnotationsPlugin",
        "assemblyname": "ExportDataUsingFetchXmlToAnnotation"
    }
}

このサンプルの動作方法

Web API または Dataverse SDK for .NET を使用して、sample_ExportDataUsingFetchXmlToAnnotation カスタム API を使用できます。

  1. .NET 用 SDK のクイック スタートのサンプル手順を使用して、C# で .NET Framework コンソール アプリケーションを作成できます。 クイックスタート: .NET 用 SDK 要求を実行する (C#) を参照してください

  2. プログラム クラスに次の静的メソッドを追加して、 FetchXML を使用してデータをAnnotationにエクスポートするための再利用可能なメソッドを作成します。

    static Guid ExportDataUsingFetchXmlToAnnotation(IOrganizationService service)
    {
        var req = new OrganizationRequest("sample_ExportDataUsingFetchXmlToAnnotation")
        {
            ["FetchXml"] = @"<fetch version='1.0' output-format='xml-platform' mapping='logical'>
                            <entity name='account'>
                                <attribute name='accountid'/>
                                <attribute name='name'/>  
                            </entity>
                        </fetch>"
        };
    
        var resp = service.Execute(req);
    
        var annotationId = (Guid)resp["AnnotationId"];
    
        return annotationId;
    }
    
  3. WhoAmIRequest を呼び出すコードを次のコードに置き換えます。

     var annotationId = ExportDataUsingFetchXmlToAnnotation(svc)
    

実際の動作

  1. Fetch xml からデータを再帰的に取得する方法。
  2. 注釈エンティティへの csv 添付ファイルを作成する方法。
  3. カスタム API をサポートするプラグインの記述方法
  4. カスタム API を使用してカスタム API 関数を呼び出す方法
  5. .NET 用 SDK を使用してカスタム API を使用する方法

クリーンアップ

作成されたすべてのデータをクリーンアップするには、sample_CleanupExportedDataAnnotations カスタム API アクションを使用して、作成された注釈レコードを削除してから、管理ソリューション をアンインストールします。

sample_CleanupExportedDataAnnotations は次の基準を満たすすべての注釈レコードを削除します。

Column 価値
subject Export Data Using FetchXml To Csv
filename exportdatausingfetchxml.csv

Web API または Dataverse SDK for .NET を使用して、sample_CleanupExportedDataAnnotations カスタム API を使用できます。

  1. .NET 用 SDK のクイック スタートのサンプル手順を使用して、C# で .NET コンソール アプリケーションを作成できます。 クイックスタート: .NET 用 SDK 要求を実行する (C#) を参照してください

  2. 次の静的メソッドをプログラム クラスに追加して、sample_ExportDataUsingFetchXmlToAnnotation カスタム api を使用して作成したデータを削除するための再利用可能なメソッドを作成します。

    static void CleanupExportedDataAnnotations(IOrganizationService service)
    {
        var req = new OrganizationRequest("sample_CleanupExportedDataAnnotations")
    
       service.Execute(req);
    }
    
  3. WhoAmIRequest を呼び出すコードを次のコードに置き換えます。

     CleanupExportedDataAnnotations(svc)
    

参照

カスタム API の作成と使用
プラグインを記述する
プラグインの登録