※ 一度公開したエントリですが、不注意により上書き削除してしまったので、新たに書き直しています
BizTalk Server などで提供されている機能を、LogicApps 向けに切り出したものが Enterprise Integration Pack となっています。機能としては非常に豊富で使い出のあるものですが、利用できるようになるまでが大変だというのもあり、色々とまとめてみました。
まず Enterprise Integration Pack ですが、これは Visual Studio 2015 のアドインとなっていますので、VIsual Studio がインストールされている環境が必要です。
インストールすると、LogicApps がプロジェクト種類にされています。
ここから新規にソリューションを作成します。
作成直後は、このように何もない状態で、ソリューションのみがある状態です。
プロジェクトへの新規追加を行うと、上記のようにフラットファイルスキーマ、ファイルスキーマ、マップ、が追加可能となっています。Enterprise Integration では、スキーマにて入出力するデータのレイアウトを定義し、マップで変換や演算処理を定義して利用します。
今回は CSV ファイルをもとに処理を行おうと思いますので、フラットファイルスキーマを選択します。選択すると、上記のようなダイアログが表示されます。以前はこれは BizTalk Server 2013 と思い切り表示されていましたが、いつのまにかちゃんと直っていました(
スキーマを作成する元となるファイルを指定する画面です。Enterprise Integration の仕組みでは、何かしらの入力を一度 XML に変換を行います。その際に利用するルート属性名や、名前空間(BizTalk の仕組みとして、スキーマごとに独立した名前空間にして他との衝突を防止します)、文字コードを指定します。
次に、スキーマ生成の基とするデータとして、どこまでを利用するかを指定します。上記のように、見出し付きなデータの場合は、見出しも含めた形でスキーマ定義することが可能ですので、見出し+先頭データを選択します。
次はレコードやカラムを分ける方法を指定します。特定文字か、特定の文字数かを選択します。
特定文字を選択すると、このような分割する文字を指定する画面が表示されます。ここではレコードやカラムを分ける文字を指定するのですが、見出し付きデータを処理しようとした場合、ここでまずは「見出しとデータ」の分割を設定する必要があります。その場合は行端文字、大体は CRLF でしょうか、を設定します。
この画面ではほかにも「先頭にこの文字があった場合にのみレコードとみなす」という、タグ機能を利用する場合のタグを指定することも可能です。
見出しとレコードを分割する場合は、上記のように 2 行表示されていると思います。レコード中のカラムを分割する場合は、ここに分割されたカラム数ぶん一覧に表示されます。
ここでは分割された結果、それがどのようなものか、という詳細設定を行います。
見出し+レコードの場合、上記のような形で設定を行うかと思います。ポイントとなるのはデータ側のほうで、Element Type に「Repeating record」を指定して、レコードが複数回繰り返されると指定します。ここを単に record として場合は、1 行しか発生しないとみなされますし、Element や Attribute を指定した場合は、XML の値や属性として扱われます。
ここまでが基本的な流れとなります。今回の例では、先ほど Repeating record を指定していますので、この次にその部分についての設定が繰り返されます。
今度はデータ部のみですので、見出しを含まないように選択します。
今回はカンマで区切られているレコードに対してスキーマを定義するので、特定文字、を選択します。
前回は、見出しとレコードを分割する指定だったので CRLF でしたが、今回はレコードのカラムを分割する指定ですので、分割文字には カンマ を指定します。
各項目の名称や Data Type を指定します。Data Type では文字型、数値型、日付型など多くの種類が利用可能です。日付型のように、この画面で指定しただけでは設定が足りない場合、上記のように ! なアイコンが表示されますので、この場合は、スキーマ作成後にプロパティとして不足している情報を指定する必要があります。
ここまで行うことで、スキーマの定義が完了です。
このようにソリューションに作成したスキーマが追加されていれば、作業完了です。
ここで作成した xsd ファイルを、Azure ポータル上で統合アカウントに対してアップロードすることで、LogicApps から利用できるようになります。
次は、このスキーマを利用したマップの定義を行います。
0 件のコメント:
コメントを投稿