Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Difference between revisions of "SMILA/Specifications/RecordWorkflowDiscussion09"
< SMILA | Specifications
Line 67: | Line 67: | ||
# input record will be filtered by the filter "InputFilterForRule" | # input record will be filtered by the filter "InputFilterForRule" | ||
# record will be synchronized with blackboard | # record will be synchronized with blackboard | ||
− | # "SomePipelineName" pipeline will be executed | + | # "SomePipelineName" pipeline will be executed with record-filter "workflow-filter1" |
− | # record will be synchronized with blackboard | + | # record will be synchronized with blackboard |
# record will be committed | # record will be committed |
Revision as of 11:49, 17 November 2008
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
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> <Fetch Filter="myFilter" <Send Broker="b1" Queue="q1"/> </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