edi-x12-as2/camel/edi-x12-as2.camel.yaml (109 lines of code) (raw):
- routeConfiguration:
id: as2Error
onException:
- onException:
handled:
constant: true
exception:
- java.lang.Exception
steps:
- script:
groovy: |
httpContext = exchangeProperties['CamelAs2.interchange']
httpContext.setAttribute(org.apache.camel.component.as2.api.AS2Header.DISPOSITION_TYPE,
org.apache.camel.component.as2.api.entity.AS2DispositionType.FAILED)
- route:
id: receivePurchaseOrder
routeConfigurationId: as2Error
from:
uri: as2:server/listen
parameters:
serverPortNumber: 8081
requestUriPattern: /mycorp/orders
steps:
- to: jms:queue:edi
- route:
id: ingestPurchaseOrder
from:
uri: jms:queue:edi
steps:
- to: smooks:file:../smooks/ingest-x12-config.xml
- to: direct:track
- to: direct:genAck
- route:
id: generateFunctionalAck
from:
uri: direct:genAck
steps:
- setBody:
groovy: |
new org.smooks.io.source.JavaSource([*:headers.CamelSmooksExecutionContext.beanContext.beanMap])
- choice:
when:
- simple: ${headers.CamelSmooksExecutionContext.getTerminationError} == null
steps:
- transform:
groovy: body.with {beans.ackStatus = 'A'; body}
otherwise:
steps:
- transform:
groovy: body.with {beans.ackStatus = 'R'; body}
- to: smooks:file:../smooks/gen-x12-ack-config.xml
- to:
uri: as2:client/send
parameters:
targetHostName: "{{partner.host.name}}"
targetPortNumber: 8081
ediMessageContentType: application/edi-x12
ediMessageCharset: charset=US-ASCII
as2To: acme
as2From: mycorp
from: bob@example.org
requestUri: /acme/gateway
subject: Purchase Order Ack
as2MessageStructure: PLAIN
inBody: ediMessage
- route:
id: verifyAgreement
from:
uri: direct:tpm
steps:
- toD:
uri: "http://{{tpm.address}}"
parameters:
sender: ${body['applicationSenderCode']}
receiver: ${body['applicationReceiverCode']}
httpMethod: GET
- choice:
when:
- simple: ${headers.CamelHttpResponseCode} > 299
steps:
- throwException:
exceptionType: org.apache.camel.edi.example.InvalidPartnerException
- route:
id: createErpOrder
from:
uri: direct:erp
steps:
- choice:
when:
- simple: ${headers.CamelSmooksExecutionContext.getTerminationError} == null
steps:
- marshal:
json: {}
- to:
uri: "http://{{erp.address}}/purchase_orders"
parameters:
httpMethod: POST
- route:
id: track
from:
uri: direct:track
steps:
- setHeader:
name: Content-Type
constant: application/xml
- to:
uri: "http://{{tracker.address}}"
parameters:
httpMethod: POST