http://pfwang.iteye.com/blog/98185
1.com.opensymphony.workflow.Workflow 工作流的用户接口。
主要定义了用户对工作流的操作方法和用户获得工作流信息的方法。如doAction(long id, int
actionId, Map
inputs)方法可以执行工作流的Action并产生transaction;用户调用getAvailableActions(long id,
Map inputs)可以获得知道工作流实例中符合条件的可以执行的Action。
2.com.opensymphony.workflow.WorkflowContext 工作流的Context接口。
只有两个方法,其中getCaller()获得调用者,setRollbackOnly()可以回滚Action造成的transaction。
setRollbackOnly()方法非常重要,可以在此方法中实现工作流数据与业务数据的事务处理。由于工作流引擎将流程数据与业务数据分离开管理,
所以工作流数据与业务数据之间的事务处理往往比较困难,甚至有很多商业的工作流引擎都没有解决这个问题,造成软件上的漏洞。可惜在
BasicWorkflowContext中并没有实现回滚时的事务处理,但实现起来应该不会很困难,在以后会单独考虑。
3.com.opensymphony.workflow.spi.WorkflowEntry 工作流实例的接口。
定义了获得工作流实例信息的方法。
4.com.opensymphony.workflow.config.Configuration 工作流配置接口。
获得osworkflw的配置信息和流程的定义信息, osworkflow中的例子就是使用此接口的默认实现。如果想让osworkflw与自己的系统更好的整合,这个接口需要自己实现。
5.com.opensymphony.workflow.loader.AbstractWorkflowFactory 流程定义的解析器。
osworkflow中提供了此抽象类的3种实现,最常用的是XMLWorkflowFactory,可以对编写的工作流定义xml文件进行解析。
6.com.opensymphony.workflow.spi.WorkflowStore 工作流存储接口。
实现此接口可以实现用多种途径保存工作流信息,jdbc,hibernate,ejb,memory.........
AbstractWorkflow类是workflow接口的最基本的实现。
1.public int[] getAvailableActions(long id, Map inputs)方法:
返回当前可以执行的Ation。
- 得到工作流流程实例。
- 得到工作流实例的定义。
- 得到工作流实例的PropertySet。
- 得到工作流的当前Step。
- 产生TransientVars。
- 得到Global Actions。
- 判断可以执行的Global Action增加到可执行Action列表中。
- 获得当前Steps中的可执行Action并添加到可执行Action列表中。
- 返回可执行Actions。
2. public void setConfiguration(Configuration configuration)方法:
设置工作流配置方法。
3.public Configuration getConfiguration()方法:
返回工作流配置方法,如果没有获得配置信息,初始化配置信息。
4.public List getCurrentSteps(long id):
获得工作流当前所在步骤。
5.public int getEntryState(long id):
获得工作流的状态。
6.public List getHistorySteps(long id)
获得工作流的历史步骤。
7. public Properties getPersistenceProperties()
获得设置的持久化参数。
8.public PropertySet getPropertySet(long id)
得到工作流的PropertySet,调用store中的方法。
9.public List getSecurityPermissions(long id)
得到工作流当前Step的permissions。
10.public WorkflowDescriptor getWorkflowDescriptor(String workflowName)
得到工作流的定义。
11.public String getWorkflowName(long id)
根据工作流实例返回工作流定义名。
12. public String[] getWorkflowNames()
返回系统中配置的所有工作流的名字。
13.public boolean canInitialize(String workflowName, int
initialAction),public boolean canInitialize(String workflowName, int
initialAction, Map inputs),private boolean canInitialize(String
workflowName, int initialAction, Map transientVars, PropertySet ps)
throws WorkflowException
判断指定的工作流初始化Action是不是可以执行。
14.public boolean canModifyEntryState(long id, int newState)
判断工作流是不是可以转换到指定状态。
- 不可以转换到CREATED状态。
- CREATED,SUSPENDED可以转换到ACTIVATED状态。
- ACTIVATED可以转换到SUSPENDED状态。
- CREATED,ACTIVATED,SUSPENDED 可以转换到KILLED状态。
15.public void changeEntryState(long id, int newState) throws WorkflowException
转换工作流状态。
16.public void doAction(long id, int actionId, Map inputs) throws WorkflowException
执行Action。
- 获得工作流store,和流程实例entry。
- 判断是不是活动的工作流,不是就返回。
- 获得工作流的定义。
- 获得工作流当前所再Steps。
- 获得工作流PropertySet。
- 生成transientVars。
- 从GlobalActions中和当前Steps的普通Actions中判断执行的Action是否试可执行的。
- 完成Action的Transition。
17.public void executeTriggerFunction(long id, int triggerId) throws WorkflowException
调用工作流的Trigger Function
18.public long initialize(String workflowName, int initialAction,
Map inputs) throws InvalidRoleException, InvalidInputException,
WorkflowException
初始化一个新的流程实例。返回流程实例id。
19.public List query(WorkflowQuery query),public List query(WorkflowExpressionQuery query)
查询流程实例。
20.public boolean removeWorkflowDescriptor(String workflowName) throws FactoryException
删除已经配置的工作流定义。
21.public boolean saveWorkflowDescriptor(String workflowName,
WorkflowDescriptor descriptor, boolean replace) throws FactoryException
保存工作流定义。
22.protected List getAvailableActionsForStep(WorkflowDescriptor wf,
Step step, Map transientVars, PropertySet ps) throws WorkflowException
获得指定步骤的可用Actions。
23.protected int[] getAvailableAutoActions(long id, Map inputs)
返回可执行的AutoActions。
24.protected List getAvailableAutoActionsForStep(WorkflowDescriptor
wf, Step step, Map transientVars, PropertySet ps) throws
WorkflowException
返回指定Step中可执行的AutoActions。
25.protected WorkflowStore getPersistence() throws StoreException
返回配置的store。
26.protected void checkImplicitFinish(long id) throws WorkflowException
判断工作流是不是还有可执行的Action,如果没有,完成此工作流实例。
27.protected void completeEntry(long id, Collection currentSteps) throws StoreException
结束工作流实例,就是把改变流程实例的状态并把当前的Steps都放入到历史表中。
28.protected boolean passesCondition(ConditionDescriptor
conditionDesc, Map transientVars, PropertySet ps, int currentStepId)
throws WorkflowException
29.protected boolean passesCondition(ConditionDescriptor
conditionDesc, Map transientVars, PropertySet ps, int currentStepId)
throws WorkflowException,protected boolean passesConditions(String
conditionType, List conditions, Map transientVars, PropertySet ps, int
currentStepId) throws WorkflowException
判断条件是不是符合。
30.protected void populateTransientMap(WorkflowEntry entry, Map
transientVars, List registers, Integer actionId, Collection
currentSteps) throws WorkflowException
产生临时变量transientVars,包含context,entry,store,descriptor,actionId,currentSteps,以及定义的register和用户的输入变量。
31.protected void verifyInputs(WorkflowEntry entry, List validators, Map transientVars, PropertySet ps) throws WorkflowException
验证用户的输入。
32.private boolean isActionAvailable(ActionDescriptor action, Map
transientVars, PropertySet ps, int stepId) throws WorkflowException
判断Action是否可用。
33.private Step getCurrentStep(WorkflowDescriptor wfDesc, int
actionId, List currentSteps, Map transientVars, PropertySet ps) throws
WorkflowException
获得Action所在Step。
34.private boolean canInitialize(String workflowName, int
initialAction, Map transientVars, PropertySet ps) throws
WorkflowException
判断工作流是不是可以实例化。
35.private Step createNewCurrentStep(ResultDescriptor theResult,
WorkflowEntry entry, WorkflowStore store, int actionId, Step
currentStep, long[] previousIds, Map transientVars, PropertySet ps)
throws WorkflowException
产生新的当前Step。
- 从resulte中获得nextStep,如果为-1,nextStep为当前Step。
- 获得定义中的owner,oldStatus,status。
- 完成当前Step,并且将当前Step保存到历史库中。
- 生成新的Step。
36.private void executeFunction(FunctionDescriptor function, Map transientVars, PropertySet ps) throws WorkflowException
执行Function。
37.private boolean transitionWorkflow(WorkflowEntry entry, List
currentSteps, WorkflowStore store, WorkflowDescriptor wf,
ActionDescriptor action, Map transientVars, Map inputs, PropertySet ps)
throws WorkflowException
完成工作流的transation。
DefaultConfiguration是Configuration接口的默认实现,用于初始化系统的基本配置信息。
1.public WorkflowDescriptor getWorkflow(String name) throws FactoryException
根据工作流的定义名获得工作流的定义。
2.public WorkflowStore getWorkflowStore() throws StoreException
获得配置的持久化类Store。
3.public void load(URL url) throws FactoryException
装载配置信息。
- 得到配置文件流,并解析。
- 获得持久化信息,包括持久化类的路径和持久化类初始化参数。
- 获得工作流信息解析类路径,并初始化。
4. public WorkflowStore getWorkflowStore() throws StoreException
获得工作流初始化类。
XMLWorkflowFactory用于解析工作流定义xml文件,获得工作流信息。
1.public WorkflowDescriptor getWorkflow(String name) throws FactoryException
根据工作流定义名获得工作流定义。
2.public String[] getWorkflowNames()
得到所有已经定义的工作流名称。
3.public void initDone() throws FactoryException
初始化workflows.xml文件中列出的工作流定义文件信息。
分享到:
相关推荐
OSWorkflow提供日志记录和审计功能,便于跟踪流程实例的详细执行历史,帮助分析流程性能和异常情况。 7. **持久化机制** 为了保证流程数据的可靠性,OSWorkflow支持多种持久化策略,如JDBC存储、Hibernate集成等...
- 使用OSWorkflow API进行流程定义。 - Java类与接口的使用示例。 - 流程实例与任务的创建、查询和控制。 - 数据持久化策略。 4. **高级特性**: - 动态工作流模型的构建。 - 条件分支与循环结构的应用。 - ...
【JBPM与OSWORKFLOW分析报告】 JBPM与OSWORKFLOW是两个在企业级工作流管理系统领域广泛应用的开源框架,它们为企业提供了强大的流程自动化和管理能力。本分析报告将深入探讨这两个工具的核心特点、工作原理以及各自...
### 四、osWorkflow 源码分析 源码中包含了 osWorkflow 的核心组件,如 WorkflowEngine、WorkflowDefinition、PersistenceManager 等。通过阅读源码,我们可以了解其内部实现细节,如: - 如何解析 XML 流程定义...
OSWorkflow 提供了一系列 Java API 和 XML 配置接口,用于创建、启动、暂停、恢复和终止工作流程实例。开发者可以通过这些 API 实现对流程的控制,例如 `WorkflowEngine` 类是核心入口,`Action` 接口定义了用户...
6. **API集成**:OSWorkFlow提供了丰富的API接口,可以方便地与企业其他系统(如ERP、CRM)集成,实现端到端的业务流程自动化。 在"OSWorkFlow_Helen"这个文件中,很可能是包含了一个示例项目或者代码,用于演示...
4. **用户接口集成**:OSWorkflow提供API,可以方便地与各种用户界面集成,如Web应用或桌面应用。 5. **权限控制**:支持角色和用户的权限设置,控制谁可以执行哪些操作。 6. **回退和恢复**:允许在流程中回溯到...
在本文中,我们将深入探讨如何利用OsWorkFlow来创建和管理流程图,并通过源码分析,理解其实现原理。 首先,我们要了解OsWorkFlow的基本概念。工作流引擎是负责执行工作流定义的软件,它能够处理工作流实例的生命...
《OSWorkflow 分析.pdf》和《OSWorkflow-chinese-manual-2.8.pdf》是关于 OSWorkflow 的详细文档,其中包含了如何安装、配置、使用以及扩展 OSWorkflow 的信息。中文手册对于国内开发者来说尤为实用,可以帮助他们更...
- **事务管理**: OSWorkflow与JTA(Java Transaction API)集成,确保在复杂操作中数据的一致性。 - **事件驱动**: 通过监听器(Listener)机制,开发者可以自定义工作流事件的处理逻辑,如任务开始、结束、挂起等...
4. **API使用**:手册会深入讲解OSWorkflow提供的Java API,包括如何启动工作流实例、查询当前状态、进行任务操作(如领取、完成、委托)等。 5. **持久化机制**:OSWorkflow支持多种持久化机制,如JDBC、Hibernate...
10. **示例与实践**:通过实际案例分析,学习如何将osWorkFlow应用于具体业务场景,如请假审批、报销流程等。 在提供的两个PDF文档——"osworkflow-chinese-manual.pdf"和"OSWorkflow开发指南.pdf"中,你应该能找到...
3. 整合OSWorkflow:在portlet中,开发者需要调用OSWorkflow的API,启动和操作工作流实例。 4. 用户界面设计:为了提供良好的用户体验,需要设计和实现一个友好的用户界面,使用户能够方便地启动和使用OSWorkflow...
因此,基于状态机思想的OSWorkflow应运而生,它不仅能够提供简单易用的API接口,还具备高度的可定制性。 #### 二、OSWorkflow的特点与优势 1. **易于集成**:OSWorkflow设计之初就考虑到了与现有系统的兼容性问题...
2. osworkflow的源码分析,可能涉及到核心类和方法,以及如何通过修改源码来定制化工作流引擎。 3. 在实际项目中的部署和集成,包括配置、API调用、错误处理等。 4. 使用osworkflow解决的具体业务问题,例如流程自动...
OSWorkflow是由OpenSymphony团队开发的,它提供了一个基于Java的API,使得开发者可以轻松地在应用中集成工作流管理。动态会签,又称为动态并行分支,是指在流程执行过程中,根据某些条件或规则,动态地创建多个并行...
深入分析 OSWorkflow 的持久化机制 ##### 3.1 数据库表结构 为了实现持久化,OSWorkflow需要定义一组数据库表来存储工作流实例的相关信息。这些表主要包括: - `os_workflow_instance`:存储工作流实例的基本...
总的来说,查询OSWorkflow的历史记录涉及对工作流API的理解,以及后端数据处理和前端展示的结合。通过`HistoryService`提供的接口,我们可以有效地追踪和分析工作流的执行历程,从而为业务决策提供数据支持。
4. **API使用**:介绍OSWorkflow的核心API,包括启动流程实例、查询当前状态、执行操作、回退和跳转等方法,让开发者能够编写出与工作流交互的代码。 5. **持久化机制**:说明OSWorkflow的数据库存储机制,以及如何...