我有一个子流程,可确保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>
该流程按设计工作正常,但这是我的问题。选择路由器检查令牌是否已过期。否则无需采取任何措施,并且如果默认路径为空,则流错误。最小化默认路径上的处理和任何资源利用的最简单元素是什么?