次の方法で共有


Dataverse ローコード プラグインの例 (プレビュー)

[このトピックはプレリリース ドキュメントであり、変更されることがあります。]

これらのサンプル プラグインの目的は、プラグインをアプリに統合して作業を開始できるようにすることです。 作成エクスペリエンスには、Power Fx 式がサポートする Microsoft Dataverse のカスタム API の作成が含まれており、Dataverse の内部または外部のアクションをトリガーできます。

重要

  • これはプレビュー機能です。
  • プレビュー機能は運用環境での使用を想定しておらず、機能が制限されている可能性があります。 これらの機能を公式リリースの前に使用できるようにすることで、顧客が一足先にアクセスし、そこからフィードバックを得ることができます。

前提条件

データ イベントのサンプル プラグインを使用するには、Dataverse アクセラレータ アプリが環境にインストールされている必要があります。 詳細情報: ローコード プラグインを作成するための前提条件

注意

メール テンプレートは、特定のテーブルでのみ使用できます。 詳細情報: 電子メールのテンプレートを作成する

負以外の値を返す

この例では、Abs() 関数 を使用して負以外の引数の値を返します。 数値が負の場合は、Abs は相当する正の値を返します。

  1. Dataverse アクセラレータ アプリを再生し、コマンド バーで 新しいアクション > インスタント プラグイン を選択します。

  2. 数式名や説明などの表示名を入力します。

  3. Out パラメータを作成して、文字列などの意味があり予期される動作を検証します。必要に応じて、式で意味のある、テストを容易にする入力パラメータを使用します。

  4. 数式エディターで、Out パラメータを中括弧で囲みます。

    {Out: "" }
    
  5. 数式をテストする式を入力します。

    • intellisense が数式を受け入れることを検証します (テキストが水色に変わります)。
    • たとえば、結果の検証に役立つ出力を指定する式を実装します。
    {Out: "Abs(-5) = 5: " & Text( Abs(-5) = 5 )  }
    
  6. 次へ を選択してから、保存 を選択します。

  7. テスト を選択して、式をテストします。 出力パラメータを使用して結果を検証します。

入力検証とカスタム エラー

重複データ検出

カスタム エラー メッセージをスローする重複エラー検出などのサーバー側の入力検証を実装します。

  1. Dataverse アクセラレータ アプリを再生し、コマンド バーで 新しいアクション > 自動化プラグイン を選択します。
  2. 名前ボックスに 重複確認 と入力します。
  3. Table には、連絡先 を選択します。
  4. 行の場合はこのプラグインを実行する では、作成済み を選択します。
  5. 数式  ボックス にこの数式を入力します。
 If( !IsBlank(LookUp([@Contacts],'Last Name'=ThisRecord.'Last Name' && 'First Name'=ThisRecord.'First Name')),
    Error("You have existing contacts with the same first name and last name")
)
  1. 保存 を選択します。

プラグインのテスト

  1. プラグインをテストするには、次の手順に従って連絡先テーブルを使用してキャンバス アプリを作成します。テーブルを指定する
  2. 連絡先行を作成する。
  3. 前の手順と同じ名前で別の連絡先を作成します。
  4. 重複レコードが見つかったことを示すメッセージが表示されます。 エラー メッセージ プロンプトで 無視して保存 を選択します。

次のカスタム エラー メッセージが表示されます: 姓名が同じ連絡先が 2 つあります

データ検証

ErrorKind 列挙を使用して、特定の種類のエラーを表示します。

  1. 新しい自動化プラグインを作成します。

  2. 次の値を指定します。

    • 名前: 入力検証
    • 説明: 有効な日付をチェックし、無効な場合はエラーをスローします
    • Table: 予定
    • 行が次の状態の場合は、このプラグイン ルールを実行します: 更新済み
  3. 以下の数式を入力します。

    If(ThisRecord.'Due Date' < Now(), 
     Error({ Kind: ErrorKind.Validation , Message: "The due date cannot be in the past" })
    );
    
  4. 詳細オプション で、いつ実行するか事前操作 に設定します。無効なデータを防ぐために、データが保存される前にこのルールを実行する必要があります。

  5. 保存 を選択します。

カスタム エラーに関する詳細は、Error() 関数 に移動してご覧ください。

データ イベントに基づいてメールを送信する

前提条件:

メール テンプレートの例

SenMail ベースのデータ イベント用に作成できるメール テンプレートの例を次に示します。

  • テンプレートの種類: グローバル
  • 名前: 注文ありがとうございます
  • 説明: このテンプレートを使用して、お客様に注文に対する感謝の意を表します。
  • 件名: Thank you for your order <orderconfirmation-{!salesorder:Order Number; }>
  • 本文: このコードを使用します。
   Hello {!Sales Order:First Name;},
   Order Type: {! Sales Order: Order Type;},
   Location Type: {! Sales Order: Location Type;},
   Address1: {! Sales Order: Address 1;},
   Address2: {! Sales Order: Address 2;},
   Preferred Service Start Date 1: {! Sales Order: Preferred Service Start Date;},
   Next Step- We take upto 48 hrs to schedule an in-person and will notify you as soon as we have a In-person Technician allocated at your site. For any questions, please contact us at 1-800-CON-SOLAR
   Yours Sincerely, 
   Contoso Sales 

自動化プラグインを作成する

  1. Dataverse アクセラレータ アプリを選択し、自動化されたプラグイン にある +新しいプラグイン を選択します。
  2. 次の情報を入力してください。
    • 名前: SendEmailUponCreate

    • テーブル: 販売注文の論理テーブル名である SalesOrder を選択します。 このイベントは、販売注文テーブルに基づいています。

    • 行が次の状態の場合は、このプラグインを実行します: 作成済み

    • 数式: 以下のコードを 数式 ボックスに貼り付けます。 SendEmailFromTemplate 関数の詳細については、SendEmailFromTemplate アクション を参照してください。

      XSendEmailFromTemplate(
          LookUp('Email Templates',StartsWith(title,"Order Thank You")).'Email Template',
      ThisRecord,
      LookUp(Users,'Primary Email'="sampleemail@sample.com"),[ThisRecord.Email]
      )
      
  3. 詳細 > 事後操作 を選択します。
  4. 保存 を選択します。

確認メッセージ プラグインは正常に保存されました が表示されます。

インスタント アクションに基づいてアプリ内通知を送信する

アプリ内通知により、作成者はモデル駆動型アプリでユーザー向けにコンテキストに応じたアクション可能な通知を構成できます。

アプリ内通知を送信するローコード プラグインを作成する

  1. Dataverse アクセラレータ アプリを再生し、インスタント プラグイン にある +新しいプラグイン を選択します。
  2. 次の情報を入力して、次へ を選択します。
    • 名前: NotifyTechnican1
    • 説明: このインスタント プラグインはアプリ ユーザーに通知します。
  3. 定義 ページで、次のデータ型を使用して入力パラメータを作成します。
    • OrderID: 文字列
    • TechnicianEmail: 文字列
  4. 数式数式 ボックスに、次のコードを貼り付けます。 この数式の詳細については、SendAppNotification アクション を参照してください。
     XSendAppNotification(
         "New service",
         LookUp(Users,'Primary Email'=TechnicianEmail),
         "You have a new solar panel installation scheduled on "& LookUp('Scheduling Results','OrderId'=OrderID).'ServiceDate'&" in "& LookUp('Service Orders','Order Number'=OrderID).City &". Contact the coordinator with any questions.",
     [
         XCreateSidePaneActionForEntity(
                 "View order",
             OrderID,
             "Sales Order",
             "cr8b8_serviceorder1",
             LookUp('Service Orders','Order Number'=OrderID).'Service Order'
             )
         ]
     )
    
  5. 次へ を選択します。
  6. 概要 ページで 保存 を選択します。

アプリ内通知インスタント アクションを呼び出す

  1. キャンバス アプリを選択してコマンド バーの 編集 を選択するか、新規作成 します。
  2. 左側のナビゲーション ウィンドウで画面を選択するか、新しい画面を作成します。
  3. 挿入 メニューで、テキスト 技術者に通知する を使用して ボタン をページに追加します。
  4. ボタンを選択し、fx 数式バーに次のように入力します。DataCardValue17 は、受注 ID を含む列で、DataCardValue15 は、技術者のメール アドレスを含む列です。 この例では、サービス注文アプリ という名前のキャンバス アプリが使用されます。
    Environment.cr8b8_Notifytechnician1({
           OrderID: DataCardValue17.Text,
       TechnicianEmail: DataCardValue15.Text 
    });
    
        Notify("The technician was notified!", NotificationType.Success, 2000);
    
    
    技術者に通知を送信するための Power Fx 式を含むボタンを追加します
  5. 変更を 保存 して 公開 します。

アプリで技術者に通知アクションが選択されると、サービス注文に割り当てられた技術者にアプリ内通知が送信されます。 通知に対するアクションを実行すると、サイド ウィンドウにサービス注文の詳細が表示されます。

アプリで受信する技術者に送信される通知

MSN Weather コネクタを使用したインスタント プラグインのサンプル

このプラグインは、MSN Weather コネクタ を使用して、特定の場所の現在の天気を返します。

前提条件:

  1. 環境でまだ利用できない場合は、MSN Weather の接続参照を作成します: 右側の接続参照ペインからアプリで接続参照を作成する

  2. スニペットのコピー: 接続ペインからアクション スニペットをコピーする

  3. intellisense を使用して式の編集を終了し、必要に応じてコネクタ応答プロパティを使用します: エディターでプラグイン定義を完了する

  4. 保存​​

  5. プラグインのテスト

ヒント

応答に含まれる可能性のあるさまざまなプロパティにアクセスする場合は、With() 関数を使用して 1 つのアクションから応答全体をキャプチャします。 以下の例には、入力パラメーター Location (文字列) と出力パラメーター Out (文字列) があります。

With({ /* Capture current weather response from connector */
c: new_MsnWeather.CurrentWeather( Location, "Imperial" ).responses.weather.current
},{ /* Return concatenated weather details */
Out: "Current temp: " & c.temp & " degrees. Feels like " & c.feels & " degrees. Wind speed is " & c.windSpd & " mph."
})

ベスト プラクティス

自動化されたローコード プラグインでの無限ループ エラーの処理

パッチがプラグインと同じテーブルで発生する 'Update' イベント時に自動プラグインにパッチ ステートメントを記述しないでください。 これにより、無限ループやプラグインの実行エラーが発生します。

問題のあるパターン: Patch() 式を使用すると、別の更新プログラムをトリガーします。 "自動プラグインの問題のある式"

推奨されるパターン: この問題を回避するには、代わりに Set() 式を使用します。 "自動プラグインの推奨される式"

参照

ローコード プラグイン Power Fx (プレビュー)