2016-04-18 7 views
1

私はエンドポイントを返すはずのJavaオブジェクトを使用しているので、指定したエンドポイントでホストされているサービスを呼び出す必要があります。手伝ってください。以下は ミュールのJavaオブジェクトを使用

は以下

<spring:beans> 
     <spring:bean id="reqUrl" class="com.mule.sbus.drools.RequestUrl" 
      scope="singleton" /> 
    </spring:beans> 

    <bpm:drools /> 
    <http:listener-config name="NorthboundSingleEntrypoint" 
     host="0.0.0.0" port="8191" doc:name="HTTP Listener Configuration" /> 

    <http:request-config name="HTTP_Request_Configuration" 
     host="acdc3a38cffc411e5a18606a62b4ee07-877599714.us-west-1.elb.amazonaws.com" 
     port="80" doc:name="HTTP Request Configuration" /> 

    <flow name="sbusdroolsFlow"> 
     <http:listener config-ref="NorthboundSingleEntrypoint" 
      path="/*" doc:name="HTTP" /> 

     <set-variable variableName="requestUrl" 
      value="#[message.inboundProperties.'http.request.path']" doc:name="RequestUrl" /> 

     <script:component doc:name="Script"> 
      <script:script engine="groovy"> 
       <![CDATA[ 
        return requestUrl; 
       ]]> 
      </script:script> 
     </script:component> 

     <bpm:rules rulesDefinition="routingRules.drl" 
      initialFacts-ref="reqUrl" /> 
     <expression-transformer evaluator="groovy" 
      expression="message.getPayload().getObject()" doc:name="Expression" /> 

     <logger message="#[groovy:message.getPayload().getObject()]" level="INFO" 
      doc:name="LoggerResp" /> 

    </flow> 

は私のDroolsのは

#default dialect for the semantic code will be MVEL 
global org.mule.module.bpm.MessageService mule; 

import com.mule.sbus.drools.RequestUrl 

dialect "mvel" 

declare RequestUrl 
    @role(event) 
end 

rule "test123" 
    lock-on-active 
when 
    $url:RequestUrl(url=="test123") 
then 
    #order.setDestination("WAREHOUSE_A"); 
    modify($url){setEndPoint("test123")} 
end 

rule "test234" 
    lock-on-active 
when 
    $url:RequestUrl(url=="test234") 
then 
    #order.setDestination("WAREHOUSE_A"); 
    modify($url){setEndPoint("test234")} 
end 

を.drlというれるmule.xmlでは私の努力

で、私のJavaクラス

package com.mule.sbus.drools; 

public class RequestUrl { 

    private String url; 

    private String endPoint; 

    public String getUrl() { 
     return url; 
    } 

    public void setUrl(String url) { 
     this.url = url; 
    } 

    public String getEndPoint() { 
     return endPoint; 
    } 

    public void setEndPoint(String endPoint) { 
     /*if(endPoint=="test123") 
      this.endPoint = endPoint; 
     else*/ 
      this.endPoint = "/checkcibil"; 
      System.out.println("inside java :::: " + endPoint); 
    } 

    @Override 
    public String toString() { 
     // TODO Auto-generated method stub 
     return "url : " + url + " endPoint : " + endPoint; 
    } 

} 

することができますように私が呼び出しているのを見てくださいDroolsのファイルから、私は私が

<logger message="#[groovy:message.getPayload().getObject()]" level="INFO" 
      doc:name="LoggerResp" /> 

を使用して同じことを印刷したいが、私は、使用するmessage valueがどうあるべきか分からない文字列を取得し、一度私のセッター。答えを得た

+0

droolsファイルはXMLのようには見えません。私はそれを修正します:) – Majora320

+0

申し訳ありません、 droolsファイルは.drlファイルです。それを更新します –

+1

'expression-transformer'で何を達成しようとしていますか?また、 'script:component'は' ' –

答えて

0

支援してください、

私はグルーヴィー使用していたようには、Droolsのをコメントしている、と

<script:component doc:name="Script"> 
      <script:script engine="groovy"> 
       <![CDATA[ 
       reqUrl.setEndPoint(requestUrl); 
       String endpnt = reqUrl.getEndPoint(); 
       message.setProperty('endpnt', endpnt,org.mule.api.transport.PropertyScope.INVOCATION); 
       ]]> 
      </script:script> 
     </script:component> 

       <logger message="#[flowVars['endpnt']]" level="INFO" doc:name="LoggerResp" /> 

私はsetterメソッドとコールゲッターを呼び出していますグルーヴィーな使い方以下のようにコードを更新しますendptの値を持つことができます。これは今メッセージのプロパティとして設定することができますし、後で私たちは同じような(groovyのスクリプトタグ以外の)タグを取得することができます#[flowVars['endpnt']]