Для этого в Mule я бы использовал SQL-запрос, чтобы получить необработанную информацию, а затем преобразовать ее, используя DataWeave:
<flow name="selectParameterizedQuery">
<db:select config-ref="dbConfig">
<db:sql>SELECT color FROM colortable</db:sql> <!-- query to get the color results -->
</db:select>
<ee:transform doc:name="Transform Message" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
%dw 2.0
output application/json
---
payload map {
color: $.color[0 to 4] // get 5 first characters
}
]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
Допустим, запрос возвращает это:
[{"color": "Black w/ Yellow Trim"}, {"color": "Black w/ blue Trim"}, {"color": "Red"},{"color": "Red w/ blue Trim"}]
Тогда преобразование вернется:
[
{
"color": "Black"
},
{
"color": "Black"
},
{
"color": null
},
{
"color": "Red w"
}
]
Обратите внимание, что вам все еще нужно настроить соединитель базы данных и адаптировать запрос.
Возможно, вам придется поэкспериментироватьс разными критериями выбора цвета. Обратите внимание, что «Red» вернет ноль, потому что подстрока слишком короткая. Для этого вы можете использовать выражения DataWeave.