SWF Component
Available as of Camel 2.13
The Simple Workflow component supports managing workflows from Amazon's Simple Workflow service.
Info | ||
---|---|---|
| ||
You must have a valid Amazon Web Services developer account, and be signed up to use Amazon Simple Workflow. More information are available at Amazon Simple Workflow. |
URI Format
Code Block |
---|
aws-swf://<workflow|activity>[?options] |
You can append query options to the URI in the following format, ?options=value&option2=value&...
URI Options
Name | Default Value | Context | Description |
---|---|---|---|
amazonSWClient |
| All | A reference to a com.amazonaws.services.simpleworkflow.AmazonSimpleWorkflowClient in the Registry. |
accessKey |
| All | Amazon AWS Access Key. |
secretKey |
| All | Amazon AWS Secret Key. |
sWClient.XXX |
| All | Properties to set on AmazonSimpleWorkflowClient in use. |
clientConfiguration.XXX |
| All | Properties to set on ClientConfiguration in use. |
startWorkflowOptions.XXX |
| Workflow/Producer | Properties to set on useStartWorkflowOptions in use. |
operation | START | Workflow/Producer | The operation to perform on the workflow. Supported operations are: SIGNAL, CANCEL, TERMINATE, GET_STATE, START, DESCRIBE, GET_HISTORY. |
domainName | null | All | The workflow domain to use. |
activityList | null | Activity/Consumer | The list name to consume activities from. |
workflowList | null | Workflow/Consumer | The list name to consume workflows from. |
eventName | null | All | The workflow or activity event name to use. |
version | null | All | The workflow or activity event version to use. |
signalName | null | Workflow/Producer | The name of the signal to send to the workflow. |
childPolicy | null | Workflow/Producer | The policy to use on child workflows when terminating a workflow. |
terminationReason | null | Workflow/Producer | The reason for terminating a workflow. |
stateResultType | Object | Workflow/Producer | The type of the result when a workflow state is queried. |
terminationDetails | null | Workflow/Producer | Details for terminating a workflow. |
dataConverter | JsonDataConverter | All | An instance of com.amazonaws.services.simpleworkflow.flow.DataConverter to use for serializing/deserializing the data. |
activitySchedulingOptions | null | Activity/Producer | An instance of ActivitySchedulingOptions used to specify different timeout options. |
activityTypeExecutionOptions | null | Activity/Consumer | An instance of ActivityTypeExecutionOptions. |
activityTypeRegistrationOptions | null | Activity/Consumer | An instance of ActivityTypeRegistrationOptions. |
workflowTypeRegistrationOptions | null | Workflow/Consumer | An instance of WorkflowTypeRegistrationOptions. |
Info | ||
---|---|---|
| ||
You have to provide the amazonSWClient in the Registry or your accessKey and secretKey to access the Amazon's Simple Workflow Service. |
Usage
Message headers evaluated by the SWF Workflow Producer
A workflow producer allows interacting with a workflow. It can start a new workflow execution, query its state, send signals to a running workflow, or terminate and cancel it.
Wiki Markup |
---|
{div:class=confluenceTableSmall} || Header || Type || Description || | {{CamelSWFOperation}} | {{String}} | The operation to perform on the workflow. Supported operations are: SIGNAL, CANCEL, TERMINATE, GET_STATE, START, DESCRIBE, GET_HISTORY. | | {{CamelSWFWorkflowId}} | {{String}} | A workflow ID to use. | | {{CamelAwsDdbKeyCamelSWFRunId}} | {{String}} | A worfklow run ID to use. | | {{CamelSWFStateResultType}} | {{String}} | The type of the result when a workflow state is queried. | | {{CamelSWFEventName}} | {{String}} | The workflow or activity event name to use. | | {{CamelSWFVersion}} | {{String}} | The workflow or activity event version to use. | | {{CamelSWFReason}} | {{String}} | The reason for terminating a workflow. | | {{CamelSWFDetails}} | {{String}} | Details for terminating a workflow. | | {{CamelSWFChildPolicy}} | {{String}} | The policy to use on child workflows when terminating a workflow. | {div} |
Message headers set by the SWF Workflow Producer
Wiki Markup |
---|
{div:class=confluenceTableSmall} || Header || Type || Description || | {{CamelSWFWorkflowId}} | {{String}} | The worfklow ID used or newly generated. | | {{CamelAwsDdbKeyCamelSWFRunId}} | {{String}} | The worfklow run ID used or generated. | {div} |
Message headers set by the SWF Workflow Consumer
A workflow consumer represents the workflow logic. When it is started, it will start polling workflow decision tasks and process them. In addition to processing decision tasks, a workflow consumer route, will also receive signals (send from a workflow producer) or state queries. The primary purpose of a workflow consumer is to schedule activity tasks for execution using activity producers. Actually activity tasks can be scheduled only from a thread started by a workflow consumer.
Wiki Markup |
---|
{div:class=confluenceTableSmall} || Header || Type || Description || | {{CamelSWFAction}} | {{String}} | Indicates what type is the current event: CamelSWFActionExecute, CamelSWFSignalReceivedAction or CamelSWFGetStateAction. | | {{CamelSWFWorkflowReplaying}} | {{boolean}} | Indicates whether the current decision task is a replay or not. | | {{CamelSWFWorkflowStartTime}} | {{long}} | The time of the start event for this decision task. | {div} |
Message headers set by the SWF Activity Producer
An activity producer allows scheduling activity tasks. An activity producer can be used only from a thread started by a workflow consumer ie, it can process synchronous exchanges started by a workflow consumer.
Wiki Markup |
---|
{div:class=confluenceTableSmall} || Header || Type || Description || | {{CamelSWFEventName}} | {{String} | The activity name to schedule. | | {{CamelSWFVersion}} | {{String}} | The activity version to schedule. | {div} |
Message headers set by the SWF Activity Consumer
Wiki Markup |
---|
{div:class=confluenceTableSmall} || Header || Type || Description || | {{CamelSWFTaskToken}} | {{String}} | The task token that is required to report task completion for manually completed tasks. | {div} |
Advanced amazonSWClient configuration
If you need more control over the AmazonSimpleWorkflowClient instance configuration you can create your own instance and refer to it from the URI:
The #client
refers to a AmazonSimpleWorkflowClient in the Registry.
For example if your Camel Application is running behind a firewall:
Code Block |
---|
AWSCredentials awsCredentials = new BasicAWSCredentials("myAccessKey", "mySecretKey"); ClientConfiguration clientConfiguration = new ClientConfiguration(); clientConfiguration.setProxyHost("http://myProxyHost"); clientConfiguration.setProxyPort(8080); AmazonSimpleWorkflowClient client = new AmazonSimpleWorkflowClient(awsCredentials, clientConfiguration); registry.bind("client", client); |
Dependencies
Maven users will need to add the following dependency to their pom.xml.
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
<dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-aws</artifactId> <version>${camel-version}</version> </dependency> |
where ${camel-version
} must be replaced by the actual version of Camel (2.13 or higher).
Include Page | ||||
---|---|---|---|---|
|