У меня есть подпоток, который обеспечивает токен доступа OAuth. Значение токена сохраняется в хранилище объектов, срок действия которого истекает незадолго до истечения времени ожидания. По истечении срока действия новое значение токена извлекается и помещается в хранилище объектов.
Я не нашел простых примеров методологии Mule v3обновить токен, который использует хранилище объектов, поэтому вот код, если кому-то интересно.
<sub-flow name="get_token">
<objectstore:retrieve config-ref="TokenStore" key="StatusToken" defaultValue-ref="#['expired']" targetProperty="StatusToken" doc:name="Get token from Object Store"/>
<choice doc:name="Expired?">
<when expression="#[flowVars.StatusToken == 'expired']">
<set-payload value="#[{'grant_type':'refresh_token', 'refresh_token':'${RefreshToken}'}]" doc:name="Set payload for token refresh"/>
<http:request config-ref="HTTP-Token" path="${tokenPath}" method="POST" doc:name="Get new token">
<http:request-builder>
<http:header headerName="Content-Type" value="application/x-www-form-urlencoded"/>
</http:request-builder>
</http:request>
<dw:transform-message doc:name="Write token to flowVar">
<dw:set-variable variableName="StatusToken">
<![CDATA[
%dw 1.0
%output application/java
---
payload.access_token
]]>
</dw:set-variable>
</dw:transform-message>
<objectstore:store config-ref="TokenStore" key="StatusToken" value-ref="#[flowVars.StatusToken]" doc:name="Put token to Object Store"/>
</when>
<otherwise>
<set-variable variableName="Useless" value="#['']" doc:name="Useless placeholder"/>
</otherwise>
</choice>
</sub-flow>
Поток работает хорошо, как задумано, но вот мой вопрос. Маршрутизатор выбора проверяет, не истек ли токен. В противном случае никаких действий не требуется, и поток выдает ошибку, если путь по умолчанию пуст. Какой самый простой элемент для минимизации обработки и использования ресурсов в пути по умолчанию?