Interface WorkflowExternalProcess


public interface WorkflowExternalProcess

This is the interface to use to run external process steps.

The external process steps are covered by WorkflowNode.TYPE_EXTERNAL_PROCESS. They are typically used for asynchronous tasks to execute on external systems.

Flow:
  1. First the execute(WorkItem, com.adobe.granite.workflow.WorkflowSession, com.adobe.granite.workflow.metadata.MetaDataMap) method is called, providing an identifier for the external process
  2. Then the hasFinished(java.io.Serializable, WorkItem, com.adobe.granite.workflow.WorkflowSession, com.adobe.granite.workflow.metadata.MetaDataMap) method is called periodically to check if the external process has finished. Interval and timeouts can be configured on the step
  3. Once hasFinished(java.io.Serializable, WorkItem, com.adobe.granite.workflow.WorkflowSession, com.adobe.granite.workflow.metadata.MetaDataMap) returns true the handleResult(java.io.Serializable, WorkItem, com.adobe.granite.workflow.WorkflowSession, com.adobe.granite.workflow.metadata.MetaDataMap) method is called, to read the results, if any
Process Identifiers:
It's up to the implementation how the external process identifier returned by execute() looks like. The engine does not make any assumptions about it, other than it must be serializable. But of course the implementations of hasFinished() and handleResult() must know about it and handle it accordingly.
  • Method Details

    • execute

      Serializable execute(WorkItem item, WorkflowSession session, MetaDataMap arguments) throws WorkflowException
      Executes the external process step. In order to keep track of this asynchronous process, an identifier must be returned. One can return null to indicate that nothing was executed. In this case, the step directly advances to the next step.
      Parameters:
      item - The current work item
      session - The current workflow session
      arguments - The current steps node arguments (aka as node meta data)
      Returns:
      Any serializable identifier for the external process executed, or null
      Throws:
      WorkflowException - thrown in case something goes wrong during execution
    • hasFinished

      boolean hasFinished(Serializable externalProcessId, WorkItem item, WorkflowSession session, MetaDataMap arguments)
      Tests the external process, given by the external process id, for completeness.
      Parameters:
      externalProcessId - The external process to test for completeness
      item - The current work item
      session - The current workflow session
      arguments - The current steps node arguments (aka as node meta data)
      Returns:
      true if the specified external process has finished
    • handleResult

      void handleResult(Serializable externalProcessId, WorkItem workItem, WorkflowSession session, MetaDataMap arguments) throws WorkflowException
      Get and handle the result of the external process, given by the external process id. This would include storing any results where appropriate for further use.
      Parameters:
      externalProcessId - The external process to handle the results for
      workItem - The current work item
      session - The current workflow session
      arguments - The current steps node arguments (aka as node meta data)
      Throws:
      WorkflowException - thrown in case something goes wrong during execution