如何在Wso2 ESB中创建全局变量

如何在Wso2 ESB中创建全局变量,wso2,wso2esb,wso2is,wso2dss,Wso2,Wso2esb,Wso2is,Wso2dss,我是新来的,正在使用wso2esb 4.7.0和wso2dss 3.0.0 我想创建一个全局变量,并将该变量调用到我的代理服务中 我的代理如下所示 <proxy xmlns="http://ws.apache.org/ns/synapse" name="Get_details" transports="https,http" statistics="disable" trace="disable" startOnLoad="true"> <target endpoint="E

我是新来的,正在使用wso2esb 4.7.0和wso2dss 3.0.0

我想创建一个全局变量,并将该变量调用到我的代理服务中

我的代理如下所示

<proxy xmlns="http://ws.apache.org/ns/synapse" name="Get_details" transports="https,http" statistics="disable" trace="disable" startOnLoad="true">
 <target endpoint="Endpoint">
  <inSequence>
     <property name="messageType" value="application/json" scope="axis2" type="STRING"/>        
     <property name="username" expression="//username/text()" scope="default" type="STRING"/>
     <property name="password" expression="//password/text()" scope="default" type="STRING"/>
     <log>
        <property name="username" expression="get-property('username')"/>
        <property name="password" expression="get-property('password')"/>
     </log>
     <payloadFactory media-type="xml">
        <format>
           <p:select_login_op xmlns:p="http://ws.wso2.org/dataservice">
              <p:username>$1</p:username>
              <p:password>$2</p:password>
           </p:select_login_op>
        </format>
        <args>
           <arg evaluator="xml" expression="get-property('username')"/>
           <arg evaluator="xml" expression="get-property('password')"/>
        </args>
         </payloadFactory>
         <property name="Get"       expression="fn:concat('http://192.168.1.201:9764/services/', 'Get_details')"/>
            <header name="To" expression="get-property('Get')"/>
        <send>
        <endpoint>
           <default/>
        </endpoint>
     </send>
      </inSequence>
       <outSequence>
     <send/>
      </outSequence>
   </target>
   <description/>
   </proxy> 
在上面的代理中,我使用了concat函数来组合我的Url和服务名称,这里我想做的是通过创建一个全局变量来使用一个变量而不是Url,并将Url分配为其值,并在concat函数中使用该变量,而不是在这个代理和其他几个代理中使用Url


如何做到这一点?

您可以将值保存为,并从代理服务内部使用它。例如,如果我有一个名为“MyURL”的本地条目,我可以如下所示使用它

synapse:get-property('MyURL')
另一个例子

 <log level="custom">
    <property name="MyURL" expression="synapse:get-property('MyURL')"/>
 </log>
ESB 5.0.0的一个示例:

假设我们在名为nowTimeProp的属性中有当前时间

将属性存储在注册表中:

<property name="conf:/resource/yourResourceName" type="STRING" expression="$ctx:nowTimeProp" scope="registry"/>
<property name="lastStoredInstantProp" expression="get-property('registry', 'conf:/resource/yourResourceName')"/>
稍后,我们要从注册表读取属性:

<property name="conf:/resource/yourResourceName" type="STRING" expression="$ctx:nowTimeProp" scope="registry"/>
<property name="lastStoredInstantProp" expression="get-property('registry', 'conf:/resource/yourResourceName')"/>