我配置了一个调度程序任务来调用一个序列;我需要根据要求将参数传递给此序列。如何在WSO2 ESB中实现这一目标?我试图通过调度程序任务中的message属性传入值,并从序列中的消息中读取值。但未能获得序列中的值。我的代码和输出如下所示。请让我知道我应该做些什么才能让它发挥作用。感谢您提前的时间。
<asp:ScriptManager ID="scriptManager1" runat="server" AsyncPostBackTimeout="1800" />
日志文件中的输出
<task class="org.apache.synapse.startup.tasks.MessageInjector" group="synapse.simple.quartz" name="UploadFile2Vendor1" xmlns="http://ws.apache.org/ns/synapse">
<trigger interval="15"/>
<property name="message" xmlns:task="http://www.wso2.org/products/wso2commons/tasks">
<request>
<vendorId>1</vendorId>
</request>
</property>
<property name="sequenceName" value="SendFile2VendorSeq" xmlns:task="http://www.wso2.org/products/wso2commons/tasks"/>
<property name="injectTo" value="sequence" xmlns:task="http://www.wso2.org/products/wso2commons/tasks"/>
</task>
<sequence name="SendFile2VendorSeq" trace="disable" xmlns="http://ws.apache.org/ns/synapse">
<log>
<property xmlns:m0="http://services.samples"
expression="$body/m0:request/m0:vendorId" name="vendorId"/>
</log>
<dblookup description="get vendor">
<connection>
<pool>
<dsName>jdbc/DBDS</dsName>
</pool>
</connection>
<statement>
<sql>SELECT code, name FROM vendor WHERE id = ?</sql>
<parameter expression="get-property('vendorId')" type="INTEGER"/>
<result column="code" name="code"/>
<result column="name" name="name"/>
</statement>
</dblookup>
</sequence>
答案 0 :(得分:0)
您可以尝试的一个选项是使用org.apache.synapse.startup.tasks.TemplateMessageExecutor
作为任务类。该类公开了两个参数:
<强> 1。 templateParams 强>
您可以在某个根元素中的XML中设置参数。 示例:
<root>
<user>John</user>
<age>10</age>
</root>
<强> 2。 templateKey 强> 您可以在此处设置使用上述参数的序列模板的键。
示例:gov:/sequenceTemplates/getUserSequenceTemplate
样本序列模板
<template name="getUserSequenceTemplate" xmlns="http://ws.apache.org/ns/synapse">
<parameter name="user"/>
<parameter name="age"/>
<sequence>
<log level = "full">
<property name="User name is" expression={$func:user} />
<property name="User age is" expression={$func:age} />
</log>
</sequence>
</template>
答案 1 :(得分:0)
命名空间似乎有问题。我已经更新了任务和顺序如下。这对我有用。
任务
<task class="org.apache.synapse.startup.tasks.MessageInjector" group="synapse.simple.quartz" name="UploadFile2Vendor1" xmlns="http://ws.apache.org/ns/synapse">
<trigger interval="15"/>
<property name="message" xmlns:task="http://www.wso2.org/products/wso2commons/tasks">
<request xmlns="" xmlns:m0="http://services.samples">
<vendorId>1</vendorId>
</request>
</property>
<property name="sequenceName" value="SendFile2VendorSeq" xmlns:task="http://www.wso2.org/products/wso2commons/tasks"/>
<property name="injectTo" value="sequence" xmlns:task="http://www.wso2.org/products/wso2commons/tasks"/>
</task>
序列
<?xml version="1.0" encoding="UTF-8"?>
<sequence xmlns="http://ws.apache.org/ns/synapse"
name="SendFile2VendorSeq"
trace="disable">
<log level="full"/>
<log>
<property xmlns:m0="http://services.samples"
name="vendorId"
expression="//vendorId"/>
</log>
</sequence>