mule顺序流以等待另一个流
主流程:或流程Amule顺序流以等待另一个流,mule,Mule,主流程:或流程A <mule> <flow name="GetQBClassesFlow1" doc:name="GetQBClassesFlow1" processingStrategy="synchronous"> <http:inbound-endpoint exchange-pattern="request-response" host="${hostname}" port="${port}" path="getClasses" do
<mule>
<flow name="GetQBClassesFlow1" doc:name="GetQBClassesFlow1" processingStrategy="synchronous">
<http:inbound-endpoint exchange-pattern="request-response" host="${hostname}" port="${port}" path="getClasses" doc:name="HTTP"/>
<flow-ref name="Authenticate-QB" doc:name="Flow Reference"/>
<logger message="=========Acc Token==========#[sessionVars['accessToken']]" level="INFO" doc:name="Logger"/>
<flow-ref name="GetQBClassesFlow2" doc:name="Flow Reference"/>
</flow>
<flow name="GetQBClassesFlow2" doc:name="GetQBClassesFlow2" processingStrategy="synchronous">
<logger message="=========Acc Token 2==========#[sessionVars['accessToken']]" level="INFO" doc:name="Logger"/>
</flow>
</mule>
Authenticate QB
流设计为由最终用户通过HTTP调用,以便执行OAuth2舞蹈
因此,您不能使用
flow ref
调用它。身份验证部分在流执行的任何其他操作的带外完成。我看到流:Authenticate QB
、qbAccessToken
、GetQBClassesFlow1
和GetQBClassesFlow2
。您能否编辑您的问题并使用真名而不是A
和B
?很难理解你指的是什么。@DavidDossot,我已经给出了完整的流程,没有其他代码存在。它连接到intuit Quickbooks。Authenticate QB是在Authenticate流中定义的全局元素。qbAccessToken是身份验证流中的流名称。GetQBClasseFlow1和GetQBClasseFlow2是主流中的流名称。让我重新表述我的问题。流A(上面的主流)
是名为getqbclasseflow1
的流还是流B(上面的身份验证流)
是名为getqbclasseflow2
的流?它看起来是这样的,因为您说流A调用流B
,唯一的流ref
介于getqbclasseflow1
和getqbclasseflow2
之间。如果您可以在问题中使用真实的流名称,而不是A
和B
@DavidDossot,则会更容易。我有许多应用程序可以对quickbooks进行身份验证。我考虑过重构用于身份验证的代码,编写用于身份验证的单个代码,并使代码可重用,而不是在每个用于身份验证的流中编写100次,编写一次并在所有流中使用。还有什么可以处理我的情况吗?我真的不明白你的问题。您只需要Authenticate QB
和qbAccessToken
为每个Mule应用程序流一次。这个Mule应用程序可以包含许多流。我有10个Mule xml文件用于不同的任务,每个任务都需要身份验证。对于用户需要身份验证的所有任务,这里我必须对每个xml文件进行身份验证,不能有一个用于身份验证的通用xml文件并重用它。这10个Mule xml文件是在一个Mule应用程序中还是在10个Mule应用程序中?所有这些文件都在一个应用程序中。我面临的问题是,正如我前面解释的,无法为身份验证代码创建公共组件。
<mule ...>
<quickbooks:config name="QBAuthenticate" consumerKey="${consumerKey}" consumerSecret="${consumerSecret}" doc:name="Quickbooks Online - Authenticate"/>
<flow name="Authenticate-QB" doc:name="Authenticate-QB" processingStrategy="synchronous">
<http:inbound-endpoint exchange-pattern="request-response" host="${hostname}" port="8989" doc:name="HTTP"/>
<quickbooks:auth-user config-ref="Authenticate"
accessTokenUrl="https://oauth.intuit.com/oauth/v1/get_access_token"
authorizationUrl="https://appcenter.intuit.com/Connect/Begin"
callbackUrl="http://${hostname}:8989/getQBAccessToken"
requestTokenUrl="https://oauth.intuit.com/oauth/v1/get_request_token"
doc:name="Authenticate user" requestTokenId="tenantId"/>
</flow>
<flow name="qbAccessToken" doc:name="getAccessToken" processingStrategy="synchronous">
<http:inbound-endpoint exchange-pattern="one-way" host="${hostname}" port="8989" path="getQBAccessToken" doc:name="Get Token"/>
<logger message="=========GET QB Accounts ============" level="INFO" doc:name="Logger"/>
<quickbooks:get-access-token config-ref="QBAuthenticate" doc:name="get access token"/>
<logger message="=========realmId==============#[message.payload.realmId]" level="INFO" doc:name="Logger"/>
<set-session-variable variableName="accessToken"
value="#[message.payload.accessToken]" doc:name="Set accessToken" />
<set-session-variable variableName="accessTokenSecret"
value="#[message.payload.accessTokenSecret]" doc:name="Set accessTokenSecret" />
<set-session-variable variableName="realmId"
value="#[message.payload.realmId]" doc:name="Set realmId" />
</flow>
</mule>
INFO 2014-08-20 11:18:03,830 [[qbprojects].connector.http.mule.default.receiver.03] org.mule.api.processor.LoggerMessageProcessor: =========Acc Token==========null
INFO 2014-08-20 11:18:03,831 [[qbprojects].connector.http.mule.default.receiver.03] org.mule.api.processor.LoggerMessageProcessor: =========Acc Token 2==========null
INFO 2014-08-20 11:18:12,712 [[qbprojects].connector.http.mule.default.receiver.03] org.mule.api.processor.LoggerMessageProcessor: =========GET QB Accounts ============
INFO 2014-08-20 11:18:12,944 [[qbprojects].connector.http.mule.default.receiver.03] org.mule.api.processor.LoggerMessageProcessor: =========realmId==============1345020