Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
SMILA/Specifications/RecordWorkflowDiscussion09
Based on discussion with Sebastian Voigt
Contents
Wanted
- it's wanted to have ability to filter record in Router/Listener before starting any operations/ or blackboard synchronization
- it's wanted to configure ODEWorkflowProcessor with record-filter used.
Suggested
The main idea is to configure both parameters in the Router/Listener configuration
WorkflowProcessor API update
Now WorkflowProcessor API accepts series of Ids only for starting pipelines.
public interface WorkflowProcessor { ... Id[] process(String workflowName, Id[] recordIds) throws ProcessingException; ... }
ODEWorkflowProcessor implementation is reading property "record.filter" from it's own configuration file and filtering all records before processing with only one filter.
It's suggested to configure record filter in Router/Listener rules. WorkflowProcessor public API should accepts record or Id + filterName.
public interface WorkflowProcessor { ... void process(String workflowName, Record record) throws ProcessingException; ... }
Or
public interface WorkflowProcessor { ... void process(String workflowName, Id id, String filterName) throws ProcessingException; ... }
Router/Listener configuration update
Now Router/Listener based on configured list of tasks to execute.
<Task> <Send Broker="b1" Queue="q1" RecordFilter="myFilter"/> </Task>
<Task> <Process Workflow="SomePipelineName"/> </Task>
Depending on flags Router/Listener did blackboard synchronization/commit automatically at the start of Task list process and before/after operations.
It's suggested
- to configure input filter in Task node as attribute
- to configure filter for every task as attribute
<Task RecordFilter="InputFilterForRule"> <Process Workflow="SomePipelineName" RecordFilter="workflow-filter1"/> </Task>
The result of configuration:
- input record will be filtered by the filter "InputFilterForRule"
- record will be synchronized with blackboard
- "SomePipelineName" pipeline will be executed with record-filter "workflow-filter1"
- record will be synchronized with blackboard
- record will be committed