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.
Difference between revisions of "SMILA/Specifications/RecordWorkflowDiscussion09"
(5 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | + | Based on discussion with Sebastian Voigt | |
− | # it's wanted to have ability to filter record in Router/Listener before starting any operations | + | =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. | # 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 | + | |
− | + | == WorkflowProcessor API update== | |
Now WorkflowProcessor API accepts series of Ids only for starting pipelines. | Now WorkflowProcessor API accepts series of Ids only for starting pipelines. | ||
Line 20: | Line 23: | ||
ODEWorkflowProcessor implementation is reading property "record.filter" from it's own configuration file and filtering all records before processing with only one filter. | 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. | |
− | + | ||
− | + | ||
− | WorkflowProcessor public API should accepts record or Id + filterName. | + | |
− | + | ||
<source lang="java"> | <source lang="java"> | ||
public interface WorkflowProcessor { | public interface WorkflowProcessor { | ||
... | ... | ||
− | void process(String workflowName, record) throws ProcessingException; | + | void process(String workflowName, Record record) throws ProcessingException; |
... | ... | ||
} | } | ||
</source> | </source> | ||
− | |||
Or | Or | ||
− | |||
<source lang="java"> | <source lang="java"> | ||
public interface WorkflowProcessor { | public interface WorkflowProcessor { | ||
... | ... | ||
− | void process(String workflowName, Id id, filterName) throws ProcessingException; | + | void process(String workflowName, Id id, String filterName) throws ProcessingException; |
... | ... | ||
} | } | ||
</source> | </source> | ||
+ | == Router/Listener configuration update== | ||
+ | Now Router/Listener based on configured list of tasks to execute. | ||
+ | |||
+ | <source lang="xml"> | ||
+ | <Task> | ||
+ | <Send Broker="b1" Queue="q1" RecordFilter="myFilter"/> | ||
+ | </Task> | ||
+ | </source> | ||
+ | |||
+ | <source lang="xml"> | ||
+ | <Task> | ||
+ | <Process Workflow="SomePipelineName"/> | ||
+ | </Task> | ||
+ | </source> | ||
+ | |||
+ | 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 | ||
+ | |||
+ | <source lang="xml"> | ||
+ | <Task RecordFilter="InputFilterForRule"> | ||
+ | <Process Workflow="SomePipelineName" RecordFilter="workflow-filter1"/> | ||
+ | </Task> | ||
+ | </source> | ||
+ | |||
+ | 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 |
Latest revision as of 07:53, 25 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
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