Передача параметра внутри скрипта groovy в mule4 - PullRequest
0 голосов
/ 25 мая 2020

Я пытаюсь параметризовать имя пользователя и пароль через файл .properties в mule. В скрипте groovy есть команда curl. Я определил VID и VPASS в разделе параметров исполняемого компонента и передал их внутри скрипта, как показано ниже. Во время выполнения он не может разрешить идентификатор и пароль. Как передать параметры здесь внутри команды curl.

def proctext = 'curl -H "apiAccessKeyId: + vid" -H "apiSecretAccessKey **: + vpass **" -H "Accept: application / json" --form "file=@C: \ Files \ test.csv" --form "params = {Type: Import}" -X POST http://mysuperserver/media/upload/ '

Ответы [ 2 ]

0 голосов
/ 25 мая 2020

Параметры для Groovy скрипта

Есть два способа передавать значения в Groovy скрипты и извлекать https://simpleflatservice.com/mule4/ParametersForGroovyScripts.html

Один из способов - использовать обычные переменные. В сценарии Groovy они являются атрибутами переменной vars. Другой способ - установить атрибуты скрипта. Таким образом, переменные могут использоваться напрямую по их именам. Выход похож. Что бы ни было последним оператором сценария, оно становится полезной нагрузкой после сценария Groovy. Для вывода значений переменных необходимо поменять атрибуты переменных. Переменные vars не могут быть изменены, поэтому теперь можно добавлять новые атрибуты, но сами атрибуты изменяемы и могут принимать любые значения.

Предупреждение - по умолчанию Mule пытается использовать потоки и может создавать некоторые трудности для взаимодействия. Например, если переменная в Mule равна JSON, это может быть поток, поэтому атрибуты в потоке не могут быть изменены внутри сценария Groovy. В этом случае лучше установить переменную как Java, тогда атрибуты будут доступны для изменения.

enter image description here

Groovy компонент скрипта enter image description here

Полный поток

<?xml version="1.0" encoding="UTF-8"?>

<mule xmlns:db="http://www.mulesoft.org/schema/mule/db"
    xmlns:tracking="http://www.mulesoft.org/schema/mule/ee/tracking" xmlns:scripting="http://www.mulesoft.org/schema/mule/scripting"

 xmlns:file="http://www.mulesoft.org/schema/mule/file"

 xmlns:email="http://www.mulesoft.org/schema/mule/email" xmlns:wsc="http://www.mulesoft.org/schema/mule/wsc" xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="
http://www.mulesoft.org/schema/mule/db http://www.mulesoft.org/schema/mule/db/current/mule-db.xsd http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd

http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd

http://www.mulesoft.org/schema/mule/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd
http://www.mulesoft.org/schema/mule/wsc http://www.mulesoft.org/schema/mule/wsc/current/mule-wsc.xsd
http://www.mulesoft.org/schema/mule/email http://www.mulesoft.org/schema/mule/email/current/mule-email.xsd
http://www.mulesoft.org/schema/mule/file http://www.mulesoft.org/schema/mule/file/current/mule-file.xsd
http://www.mulesoft.org/schema/mule/scripting http://www.mulesoft.org/schema/mule/scripting/current/mule-scripting.xsd
http://www.mulesoft.org/schema/mule/ee/tracking http://www.mulesoft.org/schema/mule/ee/tracking/current/mule-tracking-ee.xsd">

 <http:listener-config name="HTTP_Listener_config" doc:name="HTTP Listener config" doc:id="f7458033-5606-4521-ae2b-7c309c34bdb2" >

  <http:listener-connection host="0.0.0.0" port="8081" />

 </http:listener-config>

 <http:request-config name="HTTP_Request_configuration" doc:name="HTTP Request configuration" doc:id="13190c91-83f0-40bf-8288-1f1f330c0b48" >

  <http:request-connection host="localhost" port="8081" />

 </http:request-config>
    <email:smtp-config name="Email_SMTP" doc:name="Email SMTP" doc:id="45eb1460-05a9-41c5-80be-344a45b241e0" >
        <email:smtp-connection host="smtp.kclife.net" user="alex.kizub" password="8Abc#135" />
    </email:smtp-config>
    <flow name="workFlow" doc:id="ea9b69db-5516-4940-a81c-b88c3415c75d" >
        <http:listener doc:name="Listener" doc:id="81680002-4376-47d1-ada6-a4f18f978b36" config-ref="HTTP_Listener_config" path="/"/>
        <ee:transform doc:name="set myRegularVariable    and    myCollection" doc:id="e79005e0-6652-4cc6-8f83-807fc0432ed0" >
            <ee:message >
            </ee:message>
            <ee:variables >
                <ee:set-variable variableName="myRegularVariable" ><![CDATA[%dw 2.0
output application/java
---
'Hello']]></ee:set-variable>
                <ee:set-variable variableName="myCollection" ><![CDATA[%dw 2.0
output application/java
---
{
    start: now()
}]]></ee:set-variable>
            </ee:variables>
        </ee:transform>
        <scripting:execute engine="groovy" doc:name="Execute Groovy script" doc:id="b465ab5c-d2b7-4d86-860a-f0097aa30da4" >
            <scripting:code ><![CDATA[def string=vars.myRegularVariable + ' ' + myInScriptVaraiable
vars.myCollection['result']=string
string + '!' // return as payload]]></scripting:code>
            <scripting:parameters ><![CDATA[#[{myInScriptVaraiable:'World'}]]]></scripting:parameters>
        </scripting:execute>
        <logger level="INFO" doc:name="Log payload" doc:id="1f8b99ef-a4ce-42ec-8a2b-0b0e31b4128f" message="#[payload]"/>
        <logger level="INFO" doc:name="Log myCollection" doc:id="2cdd252d-3993-4dd5-b897-2456761ad293" message="#[vars.myCollection]"/>
    </flow>

</mule>
0 голосов
/ 25 мая 2020

Вы должны установить параметры в элементе parameters модуля сценариев в виде выражения DataWeave.

<flow name="groovy-paramsFlow" >
    <http:listener doc:name="Listener" config-ref="HTTP_Listener_config" path="/"/>
    <set-variable value="#[123]" doc:name="Set Variable" variableName="myVar"/>
    <scripting:execute doc:name="Execute" engine="groovy">
        <scripting:code ><![CDATA[def proctext = 'curl -H "apiAccessKeyId: ' + vid + '" -H "apiSecretAccessKey: ' + vpass +'" -H "Accept:application/json" --form "file=@C:\\Files\\test.csv" --form "params={Type:Import}" -X POST http://mysuperserver/media/upload/']]></scripting:code>
        <scripting:parameters ><![CDATA[#[{ vid: "abcd", vpass: "efgh" }]
        ]]></scripting:parameters>
    </scripting:execute>
    <logger level="INFO" message="Payload #[payload]"/>
</flow>

Output

Payload curl -H "apiAccessKeyId: abcd" -H "apiSecretAccessKey: efgh" -H "Accept:application/json" --form "file=@C:\Files\test.csv" --form "params={Type:Import}" -X POST http://mysuperserver/media/upload/
...