Skip to content

Instantly share code, notes, and snippets.

@adrianhsieh
Created January 17, 2014 00:36
Show Gist options
  • Select an option

  • Save adrianhsieh/8466294 to your computer and use it in GitHub Desktop.

Select an option

Save adrianhsieh/8466294 to your computer and use it in GitHub Desktop.
Recursive call to find the right number to increment against QuickBooks Online
<flow name="qb-findname-flow" doc:name="qb-findname-flow" processingStrategy="synchronous">
<vm:inbound-endpoint exchange-pattern="request-response" path="qb.findname" doc:name="qb.findname"/>
<enricher source="#[payload.size()]" target="#[variable:matched]" doc:name="Message Enricher">
<quickbooks:find-objects config-ref="quickbooks" queryFilter="name :EQUALS: #[payload.workingname]" accessTokenId="#[map-payload:realmid]" type="#[map-payload:synctype]" doc:name="Quickbooks Online"/>
</enricher>
<choice doc:name="Choice">
<when expression="#[matched > 0]">
<processor-chain>
<scripting:transformer doc:name="append-to-name">
<scripting:script engine="Groovy">
<scripting:text><![CDATA[def idx = payload.get('idx') + 1;
def workingname = payload.get('orgname') + ' ' + idx;
payload.put('idx', idx);
payload.put('workingname', workingname);
return payload;]]></scripting:text>
</scripting:script>
</scripting:transformer>
<logger message="QB Name conflict. Try next: #[payload]" level="WARN" doc:name="qb-name-conflict"/>
<vm:outbound-endpoint exchange-pattern="request-response" path="qb.findname" doc:name="qb.findname"/>
</processor-chain>
</when>
<otherwise>
<processor-chain>
<logger message="Found QB Name to use: #[payload]" level="INFO" doc:name="qb-found-name"/>
<expression-transformer expression="#[map-payload:workingname]" doc:name="return-name"/>
</processor-chain>
</otherwise>
</choice>
</flow>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment