コレクションアグリゲータを使用して1つのフローで複数のファイルを読み込んでいる状況があります。私はその後、1つずつ処理するためにファイルを分割するためにスプリッタを使用します。さて、私はファイルのいくつかの要素をマップに入れたいので、このマップをすべてのセッションで使用できるようにして、すべてのファイルに対してそのマップを作成できるようにします。セッション変数をスプリッタのすべてのセッションで使用できるように設定する
ファイル処理の範囲、すなわちスプリッタをオンにした後にファイル処理の現在のセッションで使用できるように設定します。しかし、私はスプリッタの前にセッション変数をnullとして宣言することを考えていました。それは分割後にすべてのセッションで利用できるでしょうか?
私は最初のファイルプロセスで見たようだと思います。セッション変数をnullに設定する方法も知りたい。私はそれを見つけるように見えませんでした。また、状況に対する他の解決策も認められるだろう。
ここに私の流れです:
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:json="http://www.mulesoft.org/schema/mule/json"
xmlns:mulexml="http://www.mulesoft.org/schema/mule/xml"
xmlns:file="http://www.mulesoft.org/schema/mule/file" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
xmlns:spring="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.mulesoft.org/schema/mule/json http://www.mulesoft.org/schema/mule/json/current/mule-json.xsd
http://www.mulesoft.org/schema/mule/xml http://www.mulesoft.org/schema/mule/xml/current/mule-xml.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/file http://www.mulesoft.org/schema/mule/file/current/mule-file.xsd">
<flow name="dictionary_keywordsFlow">
<file:inbound-endpoint path="D:\mJunction\CATALOG INTEGRATION TO BE MODIFIED\sOURCE FILES\Read_dir" connector-ref="Filefinal" pollingFrequency="10000" responseTimeout="10000" doc:name="File" moveToDirectory="D:\mJunction\CATALOG INTEGRATION TO BE MODIFIED\sOURCE FILES\Read_dir\backup">
<file:filename-regex-filter pattern="BSL.*" caseSensitive="true"/>
</file:inbound-endpoint>
<!-- <set-session-variable value="#[message.inboundProperties['originalFilename']]" variableName="filename" doc:name="Session Variable" /> -->
<set-property propertyName="MULE_CORRELATION_ID" value="#[message.inboundProperties['originalFilename']]" doc:name="Property"/>
<collection-aggregator failOnTimeout="true" doc:name="Collection Aggregator"/>
<!-- <custom-transformer class="AddContainerMapSessionvalue" doc:name="Java"/> -->
<splitter expression="#[payload]" doc:name="Splitter"/>
<logger message=">>> flow to extract keywords and create dictionary" level="INFO" doc:name="Logger"/>
<logger message="Payload received for maeterial list is #[payload]" level="INFO" doc:name="Original Payload"/>
<splitter expression="#[xpath3('//CATALOGUE',payload,'NODESET')]" doc:name="Splitter"/>
<mulexml:dom-to-xml-transformer doc:name="DOM to XML"/>
<json:xml-to-json-transformer doc:name="XML to JSON"/>
<json:json-to-object-transformer returnClass="java.util.Map" doc:name="JSON to Object"/>
<logger message="payload is #[payload]" level="INFO" doc:name="Logger"/>
<custom-transformer class="com.mjunction.transformers.DictionarykeywordsGenerator" doc:name="Java"/>
<logger message="payload is #[payload]" level="INFO" doc:name="Logger"/>
<logger message="session variable is #[sessionVars.container_map]" level="INFO" doc:name="Logger"/>
<json:object-to-json-transformer doc:name="Object to JSON"/>
<file:outbound-endpoint path="src/main/resources/dictionaryfiles/output" outputPattern="output.txt" connector-ref="Filefinal" responseTimeout="10000" doc:name="File"/>
</flow>
</mule>
おかげで、 アルン