マッピング文書 Mendix あなたの接続を助けます Mendix アプリを外部ウェブサービスなどの他のシステムに接続します。これは、アプリ間の変換方法を指定することで実現します。 Mendix オブジェクトとXMLは、XMLスキーマまたはWSDLドキュメントに基づいて作成されます。 Mendix 6.1 ではこれらのドキュメントが大幅に改善されました。このブログでは、これにより、より複雑な状況に対処できるようになり、マッピング ドキュメントが使いやすくなり、貴重な時間を節約できるようになる方法について説明します。
目次
1. マッピングドキュメントの価値 Mendix
自律的AI Mendix 完全に機能するスタンドアロンアプリケーションを開発できます。しかし、現実世界のアプリケーションの多くは真空中では存在せず、外部の世界と統合して通信する必要があります。これを行うには、データを外部からエクスポートし、外部にインポートする必要があります。 Mendix アプリ。なぜなら Mendix 他のアプリケーションが異なるドメイン モデルを持つ場合、データの形式について合意する必要があります。データの形式を指定するための標準化された方法は、XML スキーマ (XSD) です。この形式は、Web サービス標準でも WSDL (Web サービス記述言語) ファイルの一部として使用されます。 Mendix XML スキーマと WSDL の両方をサポートします。
フォーマットを選択したら、データがどのように保存されるかを指定する必要があります。 Mendix ドメインは、そのデータ形式に合わせて変換する必要があります。ここでマッピングドキュメントが役立ちます。データの変換方法を指定するのは簡単な作業ではありません。 Mendix 変換を視覚化することで、作業を容易にするように設計されています。これは、ビジネス アナリストがマッピングを読んで理解できるようにするため、非常に重要です。これにより、ビジネス アナリストはマッピングが正しいことを検証し、マッピングを自分で作成することもできます。ビジネス アナリストはビジネス知識を持っているため、これは重要です。他の誰かが実装を行う必要がある場合、情報が失われる可能性があります。統合の最大の課題は、構文ではなくセマンティクスです。
マッピングを別のエンティティとして定義することのもう1つの利点は、 Mendix マッピングの再利用が可能であることです。マッピングを再利用すると時間が節約され、コストが削減されます。問題がすでに修正されている場合は、再度修正する必要はありません。さらに、既存のマッピングを再利用すると、プロジェクトのサイズが小さくなるため、バグを防ぐのに役立ちます。一般的に、プロジェクトが大きいほど、バグが多くなる傾向があります。最後に、プロジェクトが大きいほど、保守や拡張が難しくなるため、時間がかかります。マッピングを再利用すると、プロジェクトが小さくなり、これらの問題を回避できます。
最後に、マッピングにより、大きくて複雑なインターフェースの操作が容易になります。これは、初めてインターフェースを実装する場合に当てはまりますが、特にインターフェースを保守する場合に当てはまります。エンタープライズ環境や ERP システムの統合では、大きくて複雑なインターフェースが非常に一般的であるため、これは重要です。
In Mendix 6.1 ではマッピング ドキュメントが改善され、さらに使いやすくなりました。次のセクションでは、最も重要な変更点について説明します。
2. 名前の変更と矢印の方向
以前のバージョンの Mendix 2種類のマッピング文書は、XMLからドメインへのマッピングとドメインからXMLへのマッピングと呼ばれていました。私たちは、それらをインポートマッピングとエクスポートマッピングに改名することにしました。これは、文書が外部に送信されるデータの変換方法を指定しているかどうかをすぐに明確にするためです。 Mendix アプリを外部にエクスポートしたり、外部からアプリにデータをインポートしたりします。 Mendix アプリ(インポート)です。これをさらに明確にするために、データフローの描画方向も変更しました。 Mendix 左側がドメイン、右側が外部の世界です。このため、矢印はエクスポート マッピングでは左から右を指し、インポート マッピングでは右から左を指します。以前は、矢印は常に左から右を指していました。この記事の残りの部分では、図 1 のインポート マッピングの例と図 2 のエクスポート マッピングの例を使用して、マッピング ドキュメントのその他の変更点を説明します。
図 1. インポート マッピングの例
図 2. エクスポート マッピングの例
3. インポートマッピングの使用方法
データをインポートするプロセス Mendix 3 つのステップで構成されます。
- を取得 Mendix オブジェクト (作成、キーまたはマイクロフローによる検索)。
- 取得したオブジェクトに XML 属性をマップします。
- 必要に応じて、親オブジェクトへの関連付けを設定します。
マッピング ドキュメント内のこれらの手順の可視性が向上し、理解しやすくなり、構成しやすくなりました。このセクションでは、これについて詳しく説明します。
3.1 取得方法 Mendix オブジェクト
インポートマッピングの場合、入力矢印は、 Mendix 後のステップで使用するオブジェクトを作成します。図1では、すべての矢印の上に「新しいオブジェクトを作成」と書かれています。これは、各要素に対して新しいオブジェクトが作成されることを意味します。 Mendix オブジェクトが作成されます。その後、属性はそのオブジェクトにマッピングされます。 Mendix マッピングの詳細で指定されたとおりにオブジェクトをマッピングします。 Mendix オブジェクトが取得されたら、マッピング要素の 3 つをダブルクリックできます。たとえば、「ReceivedClient」エンティティをダブルクリックすると、図 XNUMX に示す画面が表示されます。
図 3. エンティティ 'ReceivedClient' のマッピングの詳細
この画面の上部で、 Mendix 受信 XML の属性をマップするオブジェクトと、これが失敗した場合の対処方法を指定します。「オブジェクトの作成」以外に、「オブジェクトの検索」または「マイクロフローの呼び出し」を選択できます。「オブジェクトの検索」を選択した場合は、マップ属性セクションでキーとして 4 つ以上の属性も選択する必要があります。マッピングが実行されると、データベース内で、選択した属性をキーとして持つオブジェクトが検索されます。マッピングでは、図 XNUMX に示すように、矢印の上に「キーで検索」と表示されます。
図4. このインポートマッピングではオブジェクトはキーによって検索されます
「マイクロフローを呼び出す」を選択すると、マッピングは実行時に選択したマイクロフローを呼び出して、 Mendix オブジェクト。これらの属性と親オブジェクトは、選択したマイクロフローに渡されます。ステップ 2 の属性のマッピングによって、マイクロフローのオブジェクトに設定した属性の値が上書きされる可能性があることに注意してください。図 5 では、「マイクロフローによる呼び出し」を選択した場合の矢印の外観を確認できます。マイクロフローを選択すると、すべてのパラメーターが強調表示されます。この場合、これは「ReceivedOrder」親エンティティと、Client XML 要素のすべての属性です。
図5. The Mendix オブジェクトはこのインポートマッピングのマイクロフローを介して取得されます
また、図 6 に示すように、矢印を右クリックしてオプションを選択することで、マイクロフローに移動したり、マイクロフローの呼び出しを変更したりできるようになりました。
図6. 「マイクロフローを呼び出す」のコンテキストメニュー
3.2 取得したオブジェクトにXML属性をマッピングする
XMLの属性をXMLの属性にマッピングする方法の定義方法に変更はありません。 Mendix オブジェクト。これは、図3の下部に示されているグリッドで行われます。マッピングドキュメント自体では、より目立つようにしています。XML要素で属性を選択すると、対応する属性がmendixオブジェクトで自動的に選択され、その逆も同様です。図7に、この例を示します。属性「dati」はXML要素Clientで選択され、対応する要素「dati」はXML要素Clientで選択されています。 Mendix エンティティ「ReceivedClient」も選択されています。 Mendix オブジェクトと XML 要素は一致する必要はありません。
図7. 属性マッピングは、互いにマッピングされている属性を強調表示することで表示されます。
3.3 関連付けを設定する
最後に、各マッピング要素について、その親への関連付けを設定するかどうかを決定する必要があります。これは、図 3 に示すマッピングの詳細画面を使用して行います。関連付けを設定することを選択した場合、これはマッピングに描画されます (例: 図 1 を参照)。関連付けを設定しない場合は、マッピングで単に省略されます。図 8 では、「ReceivedOrder」エンティティと「ReceivedClient」エンティティ間の関連付けを省略しています。すべてのオブジェクトが引き続き作成されることに注意してください。それらの間の関連付けのみ設定されません。
図8. ReceivedClientとReceivedOrderの間に関連付けが設定されていない
4. エクスポートマッピングの使用方法
データをエクスポートするプロセス Mendix 2 つのステップで構成されます。
- を取得 Mendix オブジェクト(関連付けまたはマイクロフローによる)。
- 取得したオブジェクトの属性を XML にマップします。
2 番目の手順はインポート マッピングと同じなので、オブジェクトの取得方法を示す方法に焦点を当てます。図 9 の例では、「Orderlines」エンティティをダブルクリックすると、図 XNUMX に示す画面が表示されます。
図 9. マッピングの詳細順序線
この画面では、メソッドが「関連付けによって取得」に設定されていることがわかります。図 2 を見ると、'Orderlines' と 'ReturnListOrderlines' の間に 'Orderlines_InputOrderlinesList' という関連付けが描かれていることがわかります。代わりに「マイクロフローによって取得」を選択し、マイクロフローを選択すると、マイクロフローは図 10 に示すように描画されます。
図10. マイクロフローで取得したエクスポートマッピング
5. 選択要素の選択ツリーの改善
XML要素が何にマッピングされるかを定義する前に Mendix オブジェクトと、どの属性が相互にマッピングされるかを決定するには、まずマッピングする要素を選択する必要があります。インポート マッピングでは、受信した XML の大部分には興味がないと判断できます。エクスポート マッピングでは、省略できるのはオプション要素のみです。オプション要素とは、最小出現回数が 0 の要素です (例: 0..1 または 0..*)。マッピングに含めることができる要素と省略できない要素と属性を明確にするために、要素の選択画面が改善されました。この画面を開くには、[要素の選択...] をクリックすると、図 11 のような画面が表示されます。
図11. エクスポートマッピングの要素を選択する
この例では、一部のチェックボックスが無効になっているのに対し、他のチェックボックスは有効になっていることがわかります。チェックボックスが無効になっている場合、チェックボックスの値を変更することはできません。したがって、たとえば、「Orderlines」XML 要素が選択されており、bool 属性の出現回数が 1 であるため、「Orderlines」XML 要素の「bool」属性を選択解除することはできません。同様に、「Order」XML 要素の「HighPriority」属性を選択することはできません (「Order」XML 要素が選択されていないため)。図 12 に示すように、無効になっているチェックボックスにマウスを移動すると、ツールヒントに無効になっている理由が表示されます。
図12. チェックボックスが無効になっている場合はツールヒントが表示されます
6. その他の重要な改善点
これまで説明した改善点の他に、マッピング ドキュメントにも改善点がさらにあります。これらについては皆さんにお伝えしたくないので、このセクションで詳しく説明します。
6.1 エクスポート マッピングの自動マップ
新しいマッピング ドキュメントを作成する場合、最初に XML 要素をエンティティ、関連付け、および属性に接続するのは非常に面倒な作業です。特にマッピングが大きい場合や、マッピングする既存のドメイン モデルがない場合には、これは大変な作業です。ここで、自動的にマップするヘルパー関数が役立ちます。この関数は、ドメイン モデルのエンティティと関連付けを検索または作成し、マッピングに追加して、多くの手作業から解放します。関数を実行すると、プロジェクトに加えられた変更の詳細なレポートが表示されます。以前は、このヘルパー関数はインポート マッピングでのみ使用できました。現在は、エクスポート マッピングでも使用できます。
6.2 拡張機能によるXML継承のサポート
XML スキーマには、complexType を別の complexType の拡張として定義することで継承関係を含めることができます。これを XML 継承と呼びます。 Mendix は長い間これを部分的にサポートしてきましたが、バージョン 6.1 では完全にサポートされています。これは、広く使用されている標準の一部が XML 継承を使用しているため重要です (たとえば、取引パートナー間で保険データを電子的に交換するための ACORD 電子データ標準)。今後は、XML スキーマで定義されているドメイン モデルで同様の継承構造にマップする必要があります。また、どのサブタイプをマップするかを決定する必要があります。これらの変更により、インポートおよびエクスポート マッピングで特定の親タイプの混合リストをサポートできるようになりました。この改善の詳細については、 この専用ブログ投稿.
6.3 モデラーのパフォーマンス向上
以前のバージョンでは、100 を超える要素を含む特に大規模なマッピングで作業する場合、マッピング エディターが遅くなることがありました。これは大幅に改善されました。これは、エンタープライズ環境や ERP システムの統合では大きくて複雑なインターフェイスが一般的であるため、重要です。
6.4 Mendix エンティティのコンテキスト メニュー
右クリックして Mendix マッピング ドキュメント内のエンティティをクリックすると、図 13 に示すようにコンテキスト メニューが表示されます。以前は、このメニューは XML 要素を右クリックしたときにのみ使用できました。
図 13. マッピング ドキュメント内のエンティティのコンテキスト メニュー
6.5 折りたたみ可能なマッピング
マッピング ドキュメントは、ネストが深く、XML 要素や属性が多数あるため、かなり大きくなる可能性があります。このような場合、作業中にマッピングの概要を把握することが困難になることがあります。このため、マッピングの一部を折りたたむことができるようにしました。折りたたむと、マッピングの一部がビューから非表示になります。これは、XML 要素の下の構成記号の下にあるマイナス記号をクリックすることで実行できます。これを説明するために、図 14 では「クライアント」XML 要素の下のすべてを折りたたんでいます。
図14. マッピングの一部を折りたたむ
6.6 インポート マッピングのオプション パラメータ
エクスポートマッピングでは、常に入力パラメータを定義する必要があります。 Mendix エクスポートする必要のあるオブジェクトです。インポート マッピングの場合、入力パラメータの定義はオプションです。マッピング用に定義する場合、渡されたオブジェクトを 1 つの方法で使用できます。まず、マイクロフローを呼び出すときにパラメータとして使用できます。次に、マッピングによって作成されたオブジェクトとパラメータ エンティティ間の関連付けを設定できます。以前のバージョンの Modeler では、この機能はプロパティ グリッドに隠されていましたが、現在はパラメータのプレースホルダが描画され、他のエンティティ プレースホルダと同様にエンティティをそのプレースホルダにドラッグできます。オプションのパラメータ エンティティのプレースホルダの例については、図 XNUMX の左上隅を参照してください。
6.7 属性マッピングMetween XML文字列と Mendix 列挙
属性マッピングでは、互換性のあるデータ型間でのみマッピングできます。マッピング元のデータ型がマッピング先のデータ型の代わりに使用できる場合、データ型は互換性があります。互換性のない属性間でマッピングする場合は、変換マイクロフローを作成する必要があります。以前は、文字列型のXML属性と Mendix 列挙型の場合は、このようなマイクロフローが必要になります。マッピングしたい列挙型ごとにこれを行う必要があるため、大量のマイクロフローを作成する必要があります。これは解決され、文字列型のXML属性は、 Mendix 列挙を直接実行します。
7. 結論
このブログ記事では、マッピングドキュメントの改善の概要を説明しました。 Mendix 6.1. 皆さんも私たちと同じように、これらを試してみたいと思います。皆さん自身でマッピングを作成したり、他の人が作成したマッピングを理解したりすることが、はるかに容易になると思います。変更は気に入りましたか? 他にフィードバックはありますか? お知らせください.













