分享

activiti学习笔记1

 goldbomb 2012-06-15

Activiti是一款非常优秀的工作流引擎,主要作者是曾经开发JBPM的作者,因为JBPM存在很严重的版本不兼容的问题,所以有些项目已经开始转向用Activiti来开发了,我最近也在学习Activiti。Activiti目前最新的版本是5.9,本次学习的也是这一个版本,下载地址为:http:///download.html。学习的主要方式就是查看官方文档,将下载好的 activiti-5.9.zip解压并进入docs/userguide/index.html然后开始查看该官方文档。

下面是我翻译的官方文档的目录:

 

Activiti 5.9用户指南

目录

1. 介绍

许可证

下载

源码

所需软件

JDK 5+

Ant 1.8.1+

Eclipse 3.6.2

报告问题

实验性功能

内部实现类

2. 入门

一分钟版本

Demo安装

工作区中的示例工程

依赖库

Eclipse安装

检查数据库

数据库表名解释

3. 配置

创建一个ProcessEngine(流程引擎)

ProcessEngineConfiguration(流程引擎配置) bean

数据库配置

作业执行者激活

邮件服务器配置

历史配置

暴露在表达式和脚本中的配置Bean

支持的数据库

创建数据库表

数据库升级

4. Spring集成

ProcessEngineFactoryBean(流程引擎工厂Bean)

Transactions(事务)

表达式

自动资源调配

单元测试

5. API

引擎API

例外策略

单元测试

调试单元测试

在Web应用程序的流程引擎

流程虚拟机的API

表达式

6. 部署

业务档案

编程方式的部署

采用ant部署

使用Activiti Explorer部署

外部资源

Java类

从过程中使用的spring beans

创建一个单一的应用程序

流程定义的版本

提供流程图

生成流程图

7. BPMN 20 简介

什么是BPMN?

举例

定义一个流程

入门:十分钟教程

准备

目标

用例

流程图

XML表示方式

启动一个流程实例

任务列表

声明任务

完成任务

结束流程

代码概述

未来的增强

8. BPMN 20 构造

自定义扩展

事件

事件定义

计时器事件定义

错误事件定义

信号事件定义

消息事件定义

启动事件

无启动事件

定时器启动事件

消息启动事件

错误启动事件

结束事件

无结束事件

错误结束事件

取消结束事件

边界事件

定时器边界事件

错误边界事件

信号边界事件

取消边界事件

补偿边界事件

中间醒目事件

定时器中间醒目事件

信号中间醒目事件

中间抛出事件

中间无抛出事件

信号中间抛出事件

补偿中间抛出事件

顺序流

描述

图形符号

XML表示

有条件的顺序流

默认顺序流

网关

独有网关

并行网关

包容网管

事件网关

任务

用户任务

脚本任务

Java Service任务

WebService任务

业务规则任务

电子邮件任务

顽固(原:Mule)任务

人工任务

Java接受任务

外壳(原:Shell)任务

执行监听器

任务监听器

多实例(每个)

补偿处理程序

子流程和呼叫活动(原:Callactivities)

子流程

事件子流程

事务子流程

呼叫活动 (子流程)

事务个并发

异步连续

独有作业

9. 表单

表单属性

外形呈现

10. JPA(Java持久化API)

要求

配置

用法

简单示例

查询 JPA 流程变量

使用Spring Bean和JPA的高级示例

11. 历史

查询历史

HistoricProcessInstanceQuery(历史流程实例查询)

HistoricActivityInstanceQuery(历史活动实例查询)

HistoricDetailQuery(历史细节查询)

HistoricTaskInstanceQuery(历史任务实例查询)

历史配置

历史的审计目的

12. Eclipse设计器

安装

Activiti Designer编辑的功能

Activiti Designer BPMN 功能

Activiti Designer 部署功能

扩展的Activiti Designer

自定义调色板

验证图表和导出自定义输出格式

13. Activiti Explorer

案例概述

案例

启动流程实例

我的实例

管理

更改数据库

14. Activiti附加组件

周期

基于Signavio核心组件的Activiti Modeler

15. REST API

知识库

上传部署

获取部署

获取部署资源

获取一个部署资源

删除一个部署

删除部署

引擎

获取流程引擎

流程

列举流程定义

获取表单属性流程定义

获取表单资源中流程定义

启动流程实例

列举流程实例

获取流程实例详细信息

获取流程实例图

任务

获取任务摘要

任务列表

获取任务

获取任务表单

执行任务操作

表单属性列表

给任务添加附件

给任务增加URL

身份

登录

获取用户

列举用户的组

获取组

列举组用户

管理

工作列表

获得工作

执行一个工作

执行多个工作

获取数据库中的表

获取表的元数据

获得表中的数据

16. CDI(上下文和依赖注入[Contexts and Dependency Injection for Java EE])整合

设定activiti-cdi

找到一个流程引擎

配置流程引擎

部署流程

结合CDI的上下文流程执行

与流程实例相关联的会话

声明式的流程控制

参考流程的Beans

使用 @BusinessProcessScoped beans工作

注入流程变量

接收流程事件

附加功能

已知的缺陷

目录表

2.1. 演示用户

2.2. webapp工具

3.1. 支持的数据库

6.1.

6.2.

8.1. 邮件服务器配置

8.2. 邮件服务器配置

8.3. 电驴服务器配置

8.4. 外壳任务参数配置

 

根据该目录进行查看官方文档感觉就好很多了,接下来就是正式的学习。

1.介绍

该部分基本上没有太多的关注点,主要讲述的是Activiti遵守的是Apache V2的协议,下载地址为http:///download.html,大部分的源码都放在了所下载的发布包中,其余的完整源码需要到https://svn./activiti寻找,运行所需的JDK版本是1.5或者更高,ant构建的版本是1.8.1+,Eclipse为3.6.2,还有其他的一些介绍。

 

2.入门

该部分主要介绍的是发布包中自带的demo的使用部署,以及相关的配置解释,然后就是eclipse插件的安装,官方文档中介绍的都很详细,这里就不赘述了。

 

3.配置

这一部分的内容比较琐碎和复杂,为了能够祈祷更好的学习效果,接下来讲述一个简单的应用Activiti的项目,以求快速入门。

分享到:
评论
1 楼 dashamo 2012-06-04   引用
你好,请教你一个问题,我是刚学activiti的
activiti下载包里有一个工程activiti-engine-examples
我拿 VacationRequest.bpmn20.xml 这个请假流程作为一个学习例子。假期申请人A提交一个开始节点的表单(request.form)时没有问题,这时启动一个流程实例,并给相关人员B生成一个代理任务,这也没问题,但当相应人员B处理该代理任务也就是处理A的请假请求时,他提交他的任务表单approve.form  ,后台代码如下

String taskId = request.getParameter("taskId");
String vacationApproved = request.getParameter("vacationApproved");
String managerMotivation = request.getParameter("managerMotivation");

Map<String, String> formProperties = new HashMap<String, String>();
formProperties.put("vacationApproved_type", vacationApproved_type);
formProperties.put("vacationApproved", vacationApproved);
formProperties.put("managerMotivation", managerMotivation);
formService.submitTaskFormData(taskId, formProperties);

这时最后一句话 formService.submitTaskFormData(taskId, formProperties);报错误,错误如下:
严重: Error while closing command context
org.activiti.engine.ActivitiException: condition expression returns non-Boolean: true (java.lang.String)
at org.activiti.engine.impl.el.UelExpressionCondition.evaluate(UelExpressionCondition.java:43)
at org.activiti.engine.impl.bpmn.behavior.ExclusiveGatewayActivityBehavior.leave(ExclusiveGatewayActivityBehavior.java:63)
at org.activiti.engine.impl.bpmn.behavior.FlowNodeActivityBehavior.execute(FlowNodeActivityBehavior.java:36)
at org.activiti.engine.impl.pvm.runtime.AtomicOperationActivityExecute.execute(AtomicOperationActivityExecute.java:44)
at org.activiti.engine.impl.interceptor.CommandContext.performOperation(CommandContext.java:76)
at org.activiti.engine.impl.persistence.entity.ExecutionEntity.performOperationSync(ExecutionEntity.java:497)

意思是表达式返回的不是布尔值,确实不是布尔值,
在 approve.form 中vacationApproved确实要求是boolean类型的
  <select name="vacationApproved">
    <option value="true">Yes</option>
    <option value="false">No</option>
   </select>
   <input type="hidden" name="vacationApproved_type" value="Boolean" />
我传递到后台的
String vacationApproved = request.getParameter("vacationApproved");
vacationApproved 是字符串 “true”,
可是流程文件中审批请假的这个用户任务后的这个分支节点的输入条件要求的表达式是
${vacationApproved}
流程文件片段如下
    <sequenceFlow id="flow3" sourceRef="requestApprovedDecision" targetRef="sendApprovalMail">
      <conditionExpression xsi:type="tFormalExpression">${vacationApproved}</conditionExpression>
    </sequenceFlow>

看意思是要求vacationApproved是布尔类型的,可这个变量
是请假审批人提交表单的一个数据,这个数据只能是字符串型的,因为
formService 这个服务类提交用户任务表单的方法是
void submitTaskFormData(String taskId, Map<String, String>
properties);

只能传递字符串。


现在的问题就是我传递字符串过去后台报错说 返回值是字符串“true”,不是boolean 类型的,可是我也不能直接传递一个boolean 类型的过去呀,因为api 不允许。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多