Power Platform は、Power Apps のビジネス ロジックを作成するさまざまな機能を提供します。 この記事では、主な方法について説明し、使用する方法に関するガイダンスを提供します。
Power Fx と Power Apps
Power Fx は、Excel と Power Platform で共有されるローコードの関数型プログラミング言語です。 Power Platform コネクタを使用すると、データにアクセスし、カスタム アプリ ロジックを作成できます。
Power Fx は次をサポートしています:
ライブ: キャンバス Power Apps は、Excel スプレッドシートと同じように再計算します。 アプリを操作している間、Power Fx はバックグラウンドでデータ要求を行い、アプリの状態を Dataverse で最新に保ちます。
Delegation: Power Fx は、実行可能なことをサーバーに自動的に委任します。
Filter()、Lookup()、Search()などの機能により、アプリはサーバーサイドのフィルターを使用してデータにアクセスできるため、関連するデータのみがアプリに取り込まれ、エクスペリエンスと機能ロジックがサポートされます。 委任できない場合、関数はローカルの JavaScript コンテキスト (つまり、ローカル ブラウザー) で実行されます。Dataverse への最適化: Dataverse は Power Apps のネイティブ データ ストレージ サービスであるため、Dataverse (低レイテンシー アクセス) で Power Fx を使用する際のレイヤーは少なくなります。 さらに、Power Fx は Dataverse で利用可能な多対一と一対多の関係をサポートしています。
オフライン: Dataverse データは、現場で使用するためにモバイルプレーヤーでオフラインにすることができます。 再接続すると、両側の変更が同期されます。 アプリで定義されたビジネス ロジックは、オフラインの場合でも実行されます。
Power Automate
Power Platform のコネクタ エコシステムの上に構築されたロー コード ワークフロー サービスにより、Power Automate は Power Apps を構築する際に以下の機能を追加します:
非同期: Power Automate クラウド フローは本質的に非同期です。 フローが開始されると、フローはキューイング システムを使用してさまざまなサブタスクを管理します。 Power Automate の非同期性により、実行時間の長い複雑なロジック シーケンスに適しています。
詳細なログ記録: すべてのフローは、実行履歴と呼ばれる実行時の記録を作成します。 ログ記録はトレーサビリティを提供し、何が起こったか、なぜ起こったかについての監査記録があることを保証します。
マルチコネクタ: マルチコネクタの Power Apps ロジックを作成できますが、Power Apps のライブの性質上、 コネクタの数を増やすとパフォーマンスが低下します。 このような複雑なマルチコネクタ シナリオは、アプリでのライブ実行からこれらのケースをオフロードする Power Automate を使用する際に最適な場所です。
Dataverse プラグインと Power Fx
多くの開発者は Dataverse プラグイン を使用してビジネス ロジックを記述しています。 ローコード オプションとして、Power Fx はプラグインの作成に使用できるようになりました。
これらのプラグインは、委任と Dataverse の最適化をもたらします:
トランザクション内: Power Fx プラグインは、データベースを更新する Dataverse トランザクションで実行されます。 セカンダリ テーブルの更新で問題が発生した場合、すべての変更がロールバックされ、データベースは一貫性のある状態に保たれます。
エラー報告: アプリやフローでのエンドユーザーへのエラー報告は、
Error()関数を呼び出すだけで実現できます。 エンド ユーザーは、アクションの結果としてエラーを確認し、直ちに修正アクションを実行し、操作を再試行します。共通のボトルネック: プラグインを避けることはできません。 共通のビジネス ロジックは、すべてのアプリ、フロー、その他の Power Platform エンドポイント用に 1 か所で記述され、維持されます。
効率: プラグインは、Power Automate フローの複数のステップのストレージやネットワークのオーバーヘッドなしに、複数のコネクターとデータベースを連続して呼び出すことができます。
セキュリティの強化: Dataverse 仮想ネットワークのサポートにより、プライベート ネットワーク内のリソースへの送信接続を保護できます。 このようにして、Power Platform からのエグレス トラフィックをネットワーク ポリシーに従って安全に管理することができます。 さらに、サーバー側のプラグインでアクセスをラップすることで、クライアントからデータを分離して保護できます。
使用のタイミングと目的
Power Fx は、Power Apps でビジネス ロジックを作成する主要な方法であるべきです。 ただし、他のツールと同様に、長所と制限があり、他のツールを使用する方が適切な場合があります。
低レイテンシーのユースケース
Power App の低遅延を重視するのであれば、Power Fx 関数のライブ性は、Power Fx を介して低遅延のビジネス ロジックを提供する最高の能力を持っていることを意味します。 低レイテンシーの実現は、タスクの複雑さと関係するデータセットのサイズに大きく依存します。 Power Fx によって低遅延を達成できますが、何をしようとしているのか、どのように設計されているのかが、パフォーマンスに直接関係するということを強調することが重要です。 詳細情報については、Power Apps のパフォーマンスに関する考慮事項を参照してください。
一般的なデータ アクセス シナリオでは、Dataverse と Power Fx の組み合わせが最速のアプローチです。
複雑なシーケンスとマルチコネクタ
複数のコネクタを含む複雑なアクションのシーケンスでは、Power Automate は Power App から処理をオフロードする非同期メカニズムとして機能します。 その非同期性により、Power Appはワークフローを開始し、応答を待たずに操作を続行できるため、ユーザーエクスペリエンスが直接向上します。
一元化されたビジネスロジック
レコードを追加する前にデータを検証するなど、ビジネス ロジックがデータベースへの変更を制御する場合は、Power Fx と組み合わせた Dataverse プラグインを推奨します。 このアプローチがユニークな点は、Dataverse トランザクションと直接統合されるため、変更を開始したユーザーにエラーが通知されることです。 このフィードバック メカニズムにより、ユーザーはアクションを修正して再試行できるため、プロセス全体でデータベースの一貫性を確保できます。 プラグインは一元化されたコントロールポイントとして機能し、すべてのアプリケーション(キャンバスとモデル駆動型の両方)、フロー、およびその他のエンドポイントに一貫したビジネスロジックを適用します。
さらに、Power Automate や Dataverse プラグインと同様に、Power Fx プラグインは、必ずしもデータベースを変更しないカスタムアクションを定義するための一元化された場所を提供します。 この設定により、すべての Power Platform エンドポイント間で Power Fx ベースのビジネスロジックを共有することが容易になり、一貫性と再利用性が促進されます。