ノート
コミュニティの関心グループが Yammer から Microsoft Viva Engage に移行されました。 Viva Engage コミュニティに参加し、最新のディスカッションに参加するには、「 Finance and Operations Viva Engage Community へのアクセスを要求する 」フォームに入力し、参加するコミュニティを選択します。
フォームおよびレコードへの共有可能かつセキュリティで保護された URL を作成する方法について説明します。
開始する
開発者は、ルート移動可能な特定のフォームへの共有可能およびセキュリティ保護される URL (ディープ リンクとも呼ばれる) を作成できます。 オプションのデータ コンテキストをフォームに渡すと、フォームを開いた場合にフィルターや固有のデータを表示することができます。 URL ジェネレータは、レポート、電子メール、外部アプリケーションへのリンクの埋め込みなどのシナリオで使用できます。 URL ジェネレーターを使用すると、生成されたリンクを使用してナビゲーションすることで、指定したフォームまたはデータをすばやく簡単に検索できます。
使用方法
- 指定されたインスタンスでのルート移動可能なフォームに移動するために使用できる URL を生成する開発者を支援します。
- 必要に応じて、指定されたフォームに移動した際に表示されるデータ コンテキストを指定する開発者を支援します。
- ユーザーが、インターネットにアクセスできる任意のブラウザーから生成された URL を共有、保存、およびアクセスできるよう支援します。
- システム、フォーム、またはデータへの不正アクセスを防ぐために URL を保護します。
- 機密性の高いデータまたは改ざんの影響を防ぐために URL を保護します。
セキュリティ
サイト アクセス
ドメイン/クライアントへのアクセスは、既存のログインおよびSSL メカニズムを通じて制御されます。
フォーム アクセス
メニュー項目はセキュリティが施工されているエントリ ポイントなので、フォームへのアクセスはメニュー項目によって制御されます。 ユーザーがアクセス権を持たないメニュー項目を含む URL を使用して移動する場合、メニュー項目のセキュリティにより、フォームが開かれなくなります。 ユーザーは、フォームを開くために必要な権限を持っていないことを示すメッセージを受け取ります。
メモ
ディープ リンクは、ルート ナビゲーションを許可するメニュー項目に対してのみ機能します。
データ アクセス
データへのアクセスは、既存のフォーム レベルのクエリによって制御されます。 生成された URL を使用してフォームが開かれているとき、そのフォームは既存のフォーム レベルのクエリを実行します。これにより、データへのユーザーのアクセスが制限されます。 生成された URL で指定されたデータ コンテキストは、これらのフォーム レベルのクエリが適用された後に消費され、ユーザーに表示されるデータをさらにフィルタリングする場合にのみ発生します。 つまり、生成された URL は多くても 1 つのフォームを開いて、フォーム レベルのクエリに基づいてフォームがユーザーに表示するデータすべてを表示できます。 生成された URL には、生成された URL を使用していない場合にフォームでアクセスできないデータへのアクセスをユーザーに与えることはできません。
用途
財務と運用アプリのディープ リンクを作成するには、次の 2 つのオプションがあります。
- URL ジェネレーターは、X++ コードからディープ リンクを生成するために使用できる .NET ライブラリであり、メニュー項目とパーティションを使用して、クライアントでのナビゲーションのディープ リンク ターゲットを決定します。
- システム エンティティ ナビゲーションにより、X++ コード外でディープ リンク URL を生成できるようになります。 開発者は、ディープリンク URL の移動先となるレコードのエンティティ名とレコード ID に基づいてパラメータを提供することで、URL を構築できます。
URL ジェネレーター
URL ジェネレーターは、次の名前空間の下の X++ からアクセス可能な .NET ライブラリです。
Microsoft.Dynamics.AX.Framework.Utilities.UrlHelper.UrlGenerator
必要量
URL ジェネレーターは、アクティブなユーザー セッションまたはバッチ処理で、AOS 上で実行されているコードから使用する必要があります。 この要件は、URL を生成するインスタンスに固有の暗号化によるセキュリティで保護することができます。 少なくとも、作業 URL を生成するために次の情報を指定して URL ジェネレータに渡す必要があります。
-
ホスト URL
- インスタンスの Web ルートの URL。 例:
https://ax.dynamics.contoso.com/
- インスタンスの Web ルートの URL。 例:
-
メニュー項目の表示の AOT 名
- フォームを開くために使用するメニュー項目の表示。
-
パーティション
- 要求に使用するパーティション。
-
会社
- 要求に使用する会社。
例
// gets the generator instance
var generator = new Microsoft.Dynamics.AX.Framework.Utilities.UrlHelper.UrlGenerator();
var currentHost = new System.Uri(UrlUtility::getUrl());
generator.HostUrl = currentHost.GetLeftPart(System.UriPartial::Authority);
generator.Company = curext();
generator.MenuItemName = <menu item name>;
generator.Partition = getCurrentPartition();
// repeat this segment for each datasource to filter
var requestQueryParameterCollection = generator.RequestQueryParameterCollection;
requestQueryParameterCollection.AddRequestQueryParameter(
<datasource name>,
<field1>, <value1>,
<field2>, <value2>,
<field3>, <value3>,
<field4>, <value4>,
<field5>, <value5>
);
System.Uri fullURI = generator.GenerateFullUrl();
// to get the encoded URI, use the following code
fullURI.AbsoluteUri
システム エンティティ ナビゲーション
開発者は、SysEntityNavigation アクションを使用して、X++ コードの外部でディープ リンク URL を動的に構築できます。 開発者は、ディープ リンクの移動先となるレコードのエンティティ名とレコード ID を使用して URL を構築できます。 次に、SysEntityNavigation アクションは、定義されたエンティティのプライマリ メニュー項目に移動し、財務と運用アプリで定義されたレコードをフォームに入力します。
ナビゲーションにサポートされるエンティティは、財務と運用アプリの Dataverse 仮想テーブルに基づいています。 環境で仮想テーブルを有効にする方法の詳細については、Microsoft Dataverse 仮想エンティティを有効にする を参照してください。
パラメーター
次のパラメーターは、ディープ リンク URL の作成時に指定するパラメーターです。
| パラメーター | 内容 | データ タイプ | 要求済み |
|---|---|---|---|
| cmp | 法人の会社 ID。 Dataverse 仮想テーブルでは、これは会社コード列 (mserp_dataareaid) で識別されます。 |
文字列 | オプション |
| entityName |
Maker Portal で定義されている Dataverse 仮想テーブルのスキーマ名の複数形。 たとえば、mserp_custcustomerv3entities は、Customers V3 (mserp) 仮想テーブルの複数形のスキーマ名です。 |
文字列 | 要求済み |
| entityGuid | Dataverse 仮想テーブル内の選択されたレコードの一意の識別子プロパティの GUID。 たとえば、Customers V3 (mserp) 仮想テーブルの一意の識別子列は mserp_custcustomerv3entityid です。 |
GUID | 要求済み |
URL 形式
システム エンティティのナビゲーションを使用して、次の形式で URL を作成します。
https://[Root URL for the environment]/?cmp=[data area ID]&mi=action:SysEntityNavigation&entityName=[entity plural schema name]&entityGuid=[GUID of entity record]
例
次の例のディープ リンクは、Customers V3 (mserp) Dataverse 仮想テーブル内の ID 00004c03-0000-0000-6d28-014105000000 を持つ顧客の、USRT会社の財務と運用アプリ内の顧客レコードを開きます。
https://contoso.operations.dynamics.com/?cmp=usrt&mi=action:SysEntityNavigation&entityName=mserp_custcustomerv3entities&entityGuid=00004c03-0000-0000-6d28-014105000000