2016-09-30 5 views
0

Ich laufe Mule CE und in einem meiner Flows greife ich auf eine statische XML-Datei mit komplexen Objekten. Ich lese dieses mit einer Bean und speichern Sie es in einer Variablen.Zugreifen auf Variablen in Transformator

<set-variable variableName="Settings" value="#[app.registry['LoadSetting']]" doc:name="Variable"/> 

So weit so gut. In meinem Transformer muss ich dann diese Werte lesen, das Objekt mit dem richtigen Schlüssel finden und einige Werte in meine Payload eintragen. So , wie kann ich diese Variable in meiner Transformer-Klasse zugreifen, wie

message.getInvocationProperty("test"); 

Soweit ich verstehe, die „Botschaft“ selbst ist nicht avilable .. oder ist es?

ich die advicein die Frage here das finden, aber ich verstehe nicht wirklich, dass die Antwort (es ist Freitag, nachdem alle ..)

Grüße

Antwort

1

Können Sie Ihre Transformation Klasse teilen?

Grundsätzlich können Sie auf die "Nachricht" zugreifen, wenn Ihre Transformation Klasse org.mule.transformer.AbstractMessageTransformer erweitert. Sie können einige einfache Beispiele von Mule User Guide oder Slideshare finden.

Als weitere Alternative können Sie die @Exprannotation verwenden. Übergeben Sie beispielsweise den Ausdruck @Expr("flowVars['Settings']") String myFlowVarSettings als Argument für Ihre Transformationsklasse. Verwenden Sie es dann, um die Nutzlast zu finalisieren.

+0

Danke für die Beantwortung, ja, ich überschreibe "doTransform". Ich werde sehen, ob ich diese Nachricht bekommen kann. Lies nie über die @Expr Alternative, sieht nett aus – elwis

+0

Dumm ich, ich habe den AbstractTransformer erweitert, nicht den AbstractMessageTransformer. Großer Unterschied. Es hat jedoch keine "@Expr" -Anmerkungen gehabt, aber ich kann es mit der .getInvocationProperty() bekommen - vielen Dank! – elwis

Verwandte Themen