Json 在WSO2 ESB/EI中向salesforce发送多条记录

Json 在WSO2 ESB/EI中向salesforce发送多条记录,json,iterator,wso2esb,wso2ei,Json,Iterator,Wso2esb,Wso2ei,我有多个记录,需要将每个记录推送到Salesforce。有人能帮我达到这个要求吗 输入请求: [ { "Lead Source":"LDV Facebook - Book a Test Drive", "Preferred Model":"T60 4WD Diesel Dual Cab Ute", "Email":"Test1@bigpond.com", "Postal Code":"4211", "Enquiry Date":"

我有多个记录,需要将每个记录推送到Salesforce。有人能帮我达到这个要求吗

输入请求:

[
   {
      "Lead Source":"LDV Facebook - Book a Test Drive",
      "Preferred Model":"T60 4WD Diesel Dual Cab Ute",
      "Email":"Test1@bigpond.com",
      "Postal Code":"4211",
      "Enquiry Date":"27-03-20",
      "Date Sent":"01-04-20",
      "Mobile":"+61 414 994 774",
      "Name":"Stephen Ross",
      "Dealer":"QLD -Von Bibra Gold Coast - 554216"
   },
   {
      "Lead Source":"LDV i-Motor - Get a Quote",
      "Preferred Model":"T60 4WD Diesel Dual Cab Ute",
      "Email":"Test2@gmail.com",
      "Postal Code":"4209",
      "Enquiry Date":"27-03-20",
      "Date Sent":"01-04-20",
      "Mobile":"+61 423 927 999",
      "Name":"Jaxon",
      "Dealer":"QLD - Von Bibra Gold Coast - 554216"
   },
   {
      "Lead Source":"LDV i-Motor - Get a Quote",
      "Preferred Model":"T60 4WD Diesel Dual Cab Ute",
      "Email":"Test3@hotmail.com",
      "Postal Code":"4209",
      "Enquiry Date":"28-03-20",
      "Date Sent":"01-04-20",
      "Mobile":"+61 447809 834",
      "Name":"Brendan Dunleavy",
      "Dealer":"QLD - Von Bibra Gold Coast - 554216"
   }
]
 <iterate expression="//jsonArray/jsonElement" id="LDVid" sequential="true">
                    <target>
                        <sequence>
                            <property description="incomingRequest" expression="$body/*" name="incomingRequest" scope="default" type="OM"/>
                            <!-- Business  process related sequence -->
                            <sequence key="ProcessSequence"/>
                        </sequence>
                    </target>
                </iterate>
代理代码:

[
   {
      "Lead Source":"LDV Facebook - Book a Test Drive",
      "Preferred Model":"T60 4WD Diesel Dual Cab Ute",
      "Email":"Test1@bigpond.com",
      "Postal Code":"4211",
      "Enquiry Date":"27-03-20",
      "Date Sent":"01-04-20",
      "Mobile":"+61 414 994 774",
      "Name":"Stephen Ross",
      "Dealer":"QLD -Von Bibra Gold Coast - 554216"
   },
   {
      "Lead Source":"LDV i-Motor - Get a Quote",
      "Preferred Model":"T60 4WD Diesel Dual Cab Ute",
      "Email":"Test2@gmail.com",
      "Postal Code":"4209",
      "Enquiry Date":"27-03-20",
      "Date Sent":"01-04-20",
      "Mobile":"+61 423 927 999",
      "Name":"Jaxon",
      "Dealer":"QLD - Von Bibra Gold Coast - 554216"
   },
   {
      "Lead Source":"LDV i-Motor - Get a Quote",
      "Preferred Model":"T60 4WD Diesel Dual Cab Ute",
      "Email":"Test3@hotmail.com",
      "Postal Code":"4209",
      "Enquiry Date":"28-03-20",
      "Date Sent":"01-04-20",
      "Mobile":"+61 447809 834",
      "Name":"Brendan Dunleavy",
      "Dealer":"QLD - Von Bibra Gold Coast - 554216"
   }
]
 <iterate expression="//jsonArray/jsonElement" id="LDVid" sequential="true">
                    <target>
                        <sequence>
                            <property description="incomingRequest" expression="$body/*" name="incomingRequest" scope="default" type="OM"/>
                            <!-- Business  process related sequence -->
                            <sequence key="ProcessSequence"/>
                        </sequence>
                    </target>
                </iterate>

注意

  • 在ProcessSequence内部,需要获取每个json对象元素,因为json元素有业务相关的操作
  • 使用Salesforce Rest连接器,每个记录将使用调用中介器推送到Salesforce
  • 迭代器之后需要的聚合操作
在这里,我无法通过以下技术获取每个json元素

<property description="Email" expression="$ctx:incomingRequest//*[local-name()='Email']/text()" name="Email" scope="default" type="STRING"/>

我满足了我的要求,现在我可以使用迭代器将多条记录逐个发送给Salesforce

<iterate expression="//jsonArray/jsonElement" id="LDVid" sequential="true">
                    <target>
                        <sequence>
                            <sequence description="ProcessSequence" key="ProcessSequence"/>
                        </sequence>
                    </target>
                </iterate>
                <property name="Aggregated_Responses" scope="default">
                    <jsonObject/>
                </property>
                <aggregate id="LDVid">
                    <completeCondition>
                        <messageCount max="-1" min="-1"/>
                    </completeCondition>
                    <onComplete enclosingElementProperty="Aggregated_Responses" expression="$body/*[1]" xmlns:ns="http://org.apache.synapse/xsd">
                        <log description="***aggregated***" separator="***aggregated***">
                            <property expression="$ctx:Aggregated_Responses" name="Aggregated_Responses"/>
                        </log>
                        <send/>
                    </onComplete>
                </aggregate>


能否将主体记录在ProcessSequence中并在此处共享i?你好@arunasugunakumar,我也可以在序列中找到jsonbody。现在我获取了如下所示的json元素。