Flex Gateway新着情報
Governance新着情報
Monitoring API Manager次の例では、フラットファイルのコンテンツを読み取る方法に加えて、指定されたスキーマに従ってフラットファイルを書き込む方法も示しています。それぞれの例は、DataWeave を使用してフラットファイルの読み取りと書き込みを行う Mule アプリケーションで構成されています。
フラットファイルを操作するときは、フラットファイルのコンテンツの読み取りと書き込みに使用するフラットファイルスキーマを設定します。フラットファイルスキーマによってフラットファイルの構造が定義され、これによって Mule はこの形式で書き込みと読み取りを行うことができます。
これらの例のアプリケーションは、「フラットファイルスキーマ」で指定されているサンプルのフラットファイルデータとフラットファイルスキーマの例を操作するように設定されています。
次の例のアプリケーションは、以下で構成されています。
フローをトリガーする Scheduler コンポーネント
指定されたパスからフラットファイルを読み取る File Read 操作
フラットファイルから読み取られた内容を JSON 形式に変換する Transform Message コンポーネント
現在のペイロードを出力する Logger コンポーネント
<mule xmlns:file="http://www.mulesoft.org/schema/mule/file"
xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core"
xmlns="http://www.mulesoft.org/schema/mule/core"
xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd
http://www.mulesoft.org/schema/mule/file http://www.mulesoft.org/schema/mule/file/current/mule-file.xsd">
<file:config name="File_Config" doc:name="File Config" >
<file:connection workingDir="${fileWorkingDir}" />
</file:config>
<configuration-properties doc:name="Configuration properties" file="flatfileconfig.properties" />
<flow name="ReadFlatfileFlow" >
<scheduler doc:name="Scheduler">
<scheduling-strategy>
<fixed-frequency frequency="10000" />
</scheduling-strategy>
</scheduler>
<file:read doc:name="Read flat file" config-ref="File_Config"
path="${fileReadPath}"
outputMimeType='application/flatfile; schemapath=${schemaPath}'/> (1)
<ee:transform doc:name="Transform to JSON" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
payload]]>
</ee:set-payload>
</ee:message>
</ee:transform>
<logger level="INFO" doc:name="Logger" message='#["\n"]Reading flat file from: ${mule.home}/apps/${app.name}/${fileReadPath}#["\n"]#[payload]' />
</flow>
</mule>
1 | File Read 操作では次の属性が設定されます。
|
このアプリケーション例の実行後に、次の出力が生成されます。
{
"Batch": [
{
"TDR": [
{
"Record Type": "BAT",
"Sequence Number": 2,
"Amount": 32876,
"Account Number": "0123456789",
"Batch Function": "D",
"Type": "CR"
},
{
"Record Type": "BAT",
"Sequence Number": 3,
"Amount": 87326,
"Account Number": "0123456788",
"Batch Function": "D",
"Type": "CR"
}
],
"BCF": {
"Record Type": "BAT",
"Sequence Number": 4,
"Batch Transaction Count": 2,
"Batch Transaction Amount": 120202,
"Unique Batch Identifier": "A000000001",
"Batch Function": "T",
"Type": "CR"
},
"BCH": {
"Record Type": "BAT",
"Company Name": "ACME RESEARCH",
"Sequence Number": 1,
"Unique Batch Identifier": "A000000001",
"Batch Function": "H"
}
},
{
"TDR": [
{
"Record Type": "BAT",
"Sequence Number": 6,
"Amount": 3582,
"Account Number": "1234567890",
"Batch Function": "D",
"Type": "DB"
},
{
"Record Type": "BAT",
"Sequence Number": 7,
"Amount": 256,
"Account Number": "1234567891",
"Batch Function": "D",
"Type": "CR"
}
],
"BCF": {
"Record Type": "BAT",
"Sequence Number": 8,
"Batch Transaction Count": 2,
"Batch Transaction Amount": 3326,
"Unique Batch Identifier": "A000000002",
"Batch Function": "T",
"Type": "DB"
},
"BCH": {
"Record Type": "BAT",
"Company Name": "AJAX EXPLOSIVES",
"Sequence Number": 5,
"Unique Batch Identifier": "A000000002",
"Batch Function": "H"
}
}
],
"RQF": {
"Record Type": "RQF",
"File Batch Count": 2,
"File Transaction Count": 8,
"File Transaction Amount": 116876,
"Unique File Identifier": "A000000001",
"Type": "CR"
},
"RQH": {
"Record Type": "RQH",
"File Creation Time": "10:10:00",
"File Creation Date": "2018-09-01",
"Currency": "USD",
"Unique File Identifier": "A000000001"
}
}
次の例のアプリケーションは、以下で構成されています。
フローをトリガーする Scheduler コンポーネント
前の例からの JSON 出力が含まれるファイルを読み取る File Read 操作
JSON ペイロードを指定されたフラットファイル形式に変換する Transform Message コンポーネント
現在のペイロードを出力する Logger コンポーネント
ペイロードを指定された対象パスのフラットファイルに出力する File Write 操作
<mule xmlns:file="http://www.mulesoft.org/schema/mule/file"
xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core"
xmlns="http://www.mulesoft.org/schema/mule/core"
xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd
http://www.mulesoft.org/schema/mule/file http://www.mulesoft.org/schema/mule/file/current/mule-file.xsd">
<file:config name="File_Config" doc:name="File Config" >
<file:connection workingDir="${fileWorkingDir}" />
</file:config>
<configuration-properties doc:name="Configuration properties" file="flatfileconfig.properties" />
<flow name="WriteFlatFile" >
<scheduler doc:name="Scheduler" >
<scheduling-strategy >
<fixed-frequency frequency="10000" />
</scheduling-strategy>
</scheduler>
<file:read doc:name="Read JSON file" config-ref="File_Config" path="${jsonFileReadPath}"/>
<ee:transform doc:name="Transform to flat file"> (1)
<ee:message>
<ee:set-payload><![CDATA[%dw 2.0
output application/flatfile schemaPath = "flatfileschema.ffd"
%dw 2.0
---
{
RQH: {
"Record Type": payload.RQH."Record Type",
"File Creation Date": payload.RQH."File Creation Date" as Date {format: "yyyy-MM-dd"},
"File Creation Time": payload.RQH."File Creation Time" as Time,
"Unique File Identifier": payload.RQH."Unique File Identifier",
Currency: payload.RQH.Currency
},
Batch: payload.Batch map ( batch , indexOfBatch ) -> {
BCH: {
"Record Type": batch.BCH."Record Type",
"Sequence Number": batch.BCH."Sequence Number",
"Batch Function": batch.BCH."Batch Function",
"Company Name": batch.BCH."Company Name",
"Unique Batch Identifier": batch.BCH."Unique Batch Identifier"},
TDR: batch.TDR map (tdr, indexOfTdr) ->
{
"Record Type": tdr.TDR."Record Type",
"Sequence Number": tdr.TDR."Sequence Number",
"Batch Function": tdr.TDR."Batch Function",
"Account Number": tdr.TDR."Account Number",
"Amount": tdr.TDR.Amount,
"Type": tdr.TDR.'Type'
},
BCF: {
"Record Type": batch.BCF."Record Type",
"Sequence Number": batch.BCF."Sequence Number",
"Batch Function": batch.BCF."Batch Function",
"Batch Transaction Amount": batch.BCF."Batch Transaction Amount",
"Type": batch.BCF.'Type',
"Batch Transaction Count": batch.BCF."Batch Transaction Count",
"Unique Batch Identifier": batch.BCF."Unique Batch Identifier"}
},
RQF: {
"Record Type": payload.RQF."Record Type",
"File Batch Count": payload.RQF."File Batch Count",
"File Transaction Count": payload.RQF."File Transaction Count",
"File Transaction Amount": payload.RQF."File Transaction Amount",
Type: payload.RQF.Type,
"Unique File Identifier": payload.RQF."Unique File Identifier"
}
}
]]>
</ee:set-payload>
</ee:message>
</ee:transform>
<logger level="INFO" doc:name="Logger" message='#["\n"]Writing flat file to: ${mule.home}/apps/${app.name}/${fileWritePath}#["\n"]#[payload]'/>
<file:write doc:name="Write flat file" config-ref="File_Config" path="${fileWritePath}" /> (2)
</flow>
</mule>
1 | Transform コンポーネントでは、スクリプトヘッダーで次のライタープロパティが指定されます。
|
2 | File Write 操作では path プロパティが指定され、フラットファイルをどこに書き込むかが定義されます。 |
このアプリケーション例の実行後に、次の出力が生成されます。
RQH201809011010A000000001USD BAT000001HACME RESEARCH A000000001 BAT000000D 0000000000 BAT000000D 0000000000 BAT000004T0000120202CR000002A000000001 BAT000005HAJAX EXPLOSIVES A000000002 BAT000000D 0000000000 BAT000000D 0000000000 BAT000008T0000003326DB000002A000000002 RQF0002000008000000116876CRA000000001
例をローカルでテストするには、次の手順に従って Mule アプリケーション例を作成して設定します。
Anypoint Studio で新しい Mule プロジェクトを作成します。
テストするアプリケーションの XML コードをプロジェクトの [Configuration XML (設定 XML)] ビューにコピーします。
[Add Modules (モジュールを追加)] を使用して、ファイル用 Anypoint Connector (File Connector) をプロジェクトに追加します。
Mule アプリケーションの src/main/resources
フォルダー内に flatfileconfig.properties
という名前のファイルを作成し、次のプロパティを使用してその内容を設定します。
fileReadPath=flatfile schemaPath=flatfileschema.ffd fileWritePath=flatfilenew jsonFileReadPath=flatFileJson.json fileWorkingDir=#["${mule.home}/apps/${app.name}/"]
Mule アプリケーションの src/main/resources
フォルダー内に flatfile
という名前のファイルを作成し、DataWeave フラットファイルスキーマ例からのフラットファイルサンプルデータを使用してその内容を設定します。
Mule アプリケーションの src/main/resources
フォルダー内に flatfileschema.ffd
という名前のファイルを作成し、DataWeave フラットファイルスキーマ例からの完全なスキーマ例を使用してその内容を設定します。
Mule アプリケーションの src/main/resources
フォルダー内に flatFileJson.json
という名前のファイルを作成し、フラットファイルを読み取る例からの JSON 変換出力を使用してその内容を設定します。