`
yiyiboy2010
  • 浏览: 132555 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

activiti学习笔记1

阅读更多

Activiti是一款非常优秀的工作流引擎,主要作者是曾经开发JBPM的作者,因为JBPM存在很严重的版本不兼容的问题,所以有些项目已经开始转向用Activiti来开发了,我最近也在学习Activiti。Activiti目前最新的版本是5.9,本次学习的也是这一个版本,下载地址为:http://activiti.org/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://activiti.org/download.html,大部分的源码都放在了所下载的发布包中,其余的完整源码需要到https://svn.codehaus.org/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 不允许。

怎么办?
请教了!

相关推荐

    Activiti学习笔记

    Activiti学习笔记,介绍Activiti的组成结构,工作流BPMN2.0规范等

    Activiti5学习笔记

    ### Activiti5学习笔记核心知识点解析 #### 一、Activiti5概述与环境搭建 **Activiti5**是一款开源的工作流引擎,基于Java语言开发,主要用于实现业务流程管理(BPM)和工作流自动化。其核心特性包括流程建模、...

    Activiti学习笔记三:管理流程定义

    在“Activiti学习笔记三:管理流程定义”中,我们将深入探讨如何使用Activiti来管理和操作流程定义。 首先,流程定义是Activiti中的核心概念,它是流程模型的静态表示,描述了工作流的结构和规则。流程定义通常以...

    Activiti 学习笔记11 接收活动(receiveTask,即等待活动)

    Activiti 学习笔记11:接收活动(receiveTask,即等待活动)

    Activiti 学习笔记六:流程执行历史记录

    本学习笔记将聚焦于流程执行的历史记录,这是理解流程运行情况、追踪问题以及优化流程的关键。 一、Activiti 的历史记录功能 历史记录是 Activiti 中的一个重要特性,它允许开发者和管理员查看已经执行过的流程实例...

    Activiti 学习笔记14:工作流定义的角色组

    在本篇Activiti学习笔记中,我们将深入探讨工作流定义中的关键概念——角色组,以及它们在Activiti流程引擎中的应用。Activiti是一款强大的、开源的企业级工作流和业务自动化引擎,广泛应用于业务流程管理(BPM)...

    Activiti 学习笔记13:分配组任务

    在本篇Activiti学习笔记中,我们将探讨如何在工作流引擎Activiti中分配组任务,这对于构建企业级流程管理系统至关重要。Activiti是一个轻量级、开源的业务流程管理(BPM)和工作流系统,它提供了强大的流程定义、...

    Activiti 学习笔记九:并行网关(parallelGateWay)

    在本篇学习笔记中,我们将深入探讨并行网关的工作原理、使用场景以及如何在 Activiti 中进行配置。 一、并行网关的概念 并行网关,也称为并发网关,允许流程实例同时沿着多个路径进行,这些路径可以是独立的,然后...

    Activiti 学习笔记12:分配个人任务

    本篇学习笔记将深入探讨如何在Activiti中进行个人任务的分配。 一、理解个人任务 在Activiti中,个人任务(User Task)代表了流程中的一个节点,这个节点只能由特定的用户或用户组来处理。这种任务的分配方式确保了...

    Activiti 学习笔记七:连线(SequenceFlow)

    本篇学习笔记将深入探讨SequenceFlow的概念、作用以及如何在流程设计中使用。 一、SequenceFlow简介 SequenceFlow 是 Activiti 流程模型中的概念,它表示了流程实例从一个活动(Activity)到另一个活动的流转。每个...

    Activiti 学习笔记五:流程变量

    理解并熟练操作流程变量是深入学习 Activiti 的关键部分。 在 Activiti 中,流程变量可以在以下场景中发挥作用: 1. **定义变量**:在 BPMN2.0 流程图中,可以通过 `user task`、`service task` 或其他元素的属性...

    Activiti 学习笔记十:开始活动节点(判断流程是否结束及查询历史)

    本学习笔记主要聚焦在开始活动节点以及如何判断流程是否结束,同时涵盖了查询历史流程实例的相关内容。 一、开始活动节点(Start Event) 在 Activiti 流程图中,开始活动节点(Start Event)标志着流程的起始点。...

    Activiti 学习笔记八:排他网关(ExclusiveGateWay)

    &lt;sequence-flow id="flow1" source-ref="exclusiveGateway" target-ref="taskA"&gt; ${someVariable == 'valueA'} ${someVariable == 'valueB'} ``` 在这个例子中,如果`someVariable`的值等于'valueA',流程将...

    activiti5学习笔记.pdf

    ### Activiti5学习笔记知识点概览 #### 一、Activiti5概述与环境搭建 - **JDK版本**: 使用Activiti5至少需要JDK 1.5或更高版本。建议使用较新版本以获得更好的性能和支持。 - **构建工具**: Ant 1.8.1或以上版本是...

    Activiti 学习笔记四:流程实例、任务的执行

    本学习笔记将深入探讨流程实例和任务执行这两个关键概念。 流程实例是 Activiti 中的一个核心概念,它代表了流程定义在实际运行中的一个具体执行。当你启动一个流程,实际上就是创建了一个流程实例。流程实例是动态...

    Activiti 5.9 学习笔记(流程发布)

    本文将深入探讨Activiti 5.9 的学习笔记,特别是关于流程发布的部分,这对于理解如何在实际环境中部署和运行流程至关重要。 ### 1. Activiti 简介 Activiti 是一个轻量级、灵活且强大的业务流程管理系统(BPM),它...

    提供activiti初学者的学习资料

    本学习资料集合包含两份文档:《Activiti学习笔记.docx》和《Activitiʵ۸.pdf》,它们将帮助你快速入门并逐步深入理解Activiti的核心功能。 《Activiti学习笔记.docx》可能是作者在学习过程中整理的笔记,通常这类...

    Activiti课程笔记从入门到实践.doc

    深入学习,我们关注到Activiti数据库的各个部分: 1. 资源库流程规则表: - act_re_deployment:包含部署信息。 - act_re_model:流程设计模型的部署信息。 - act_re_procdef:存储流程定义数据。 2. 运行时...

Global site tag (gtag.js) - Google Analytics