1.导入依赖

    <!-- activiti工作流 -->
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-engine</artifactId>
<version>5.14</version>
</dependency>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring</artifactId>
<version>5.14</version>
</dependency>

2.配置xml

  a.新建spring-activiti.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"> <bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">
<property name="activityFontName" value="微软雅黑"></property> <!-- 引入druid数据源 -->
<property name="dataSource" ref="dataSource"></property>
<!-- 引入spring事务管理 -->
<property name="transactionManager" ref="txManager"></property>
<!-- 建表策略 -->
<property name="databaseSchemaUpdate" value="true"></property>
<!-- 历史控制级别 -->
<property name="history" value="full"></property> <!-- 自动部署 -->
<property name="deploymentResources">
<list>
<value>classpath*:MyProcess.bpmn</value>
</list>
</property>
</bean> <bean id="processEngineFactoryBean" class="org.activiti.spring.ProcessEngineFactoryBean">
<property name="processEngineConfiguration" ref="processEngineConfiguration"></property>
</bean> <bean id="repositoryService" factory-bean="processEngineFactoryBean" factory-method="getRepositoryService"></bean>
<bean id="runtimeService" factory-bean="processEngineFactoryBean" factory-method="getRuntimeService"></bean>
<bean id="taskService" factory-bean="processEngineFactoryBean" factory-method="getTaskService"></bean>
<bean id="historyService" factory-bean="processEngineFactoryBean" factory-method="getHistoryService"></bean>
<bean id="formService" factory-bean="processEngineFactoryBean" factory-method="getFormService"></bean>
<bean id="identityService" factory-bean="processEngineFactoryBean" factory-method="getIdentityService"></bean>
<bean id="managementService" factory-bean="processEngineFactoryBean" factory-method="getManagementService"></bean> </beans>

  注意:其中 dataSource 和 txManager 为 spring-mybatis.xml 中配置的 “数据源(数据库连接池)” 和 “事务管理”,所以不能在web.xml中引入,而应在spring-mybatis.xml中引入

  b.在 spring-mybatis.xml 引入 spring-activiti.xml 配置

    <!-- 导入activiti工作流配置 -->
<import resource="spring-activiti.xml"/>

3.绘制流程图

  a.eclipse 中安装插件: help —> Install New Software —> Add

            Name:activiti

            Location:http://activiti.org/designer/update/

  b.新建流程图:新建 MyProcess.bpmn

4.使用

  a.在Service中使用

@Service
public class ProcessService { public final static String PROCESS_ID = "myProcess"; //流程储存服务组件
@Resource
RepositoryService repositoryService; //运行时服务组件
@Resource
RuntimeService runtimeService; //流程中的任务TASK组件
@Resource
TaskService taskService; //部署流程(若xml已配置自动部署,则不需要此方法)
public void deployProcess(){
// 部署流程,只要是符合BPMN2规范的XML文件,理论上都可以被ACTIVITI部署
repositoryService.createDeployment().addClasspathResource("MyProcess.bpmn").deploy();
} //启动流程
public void startProcess(){
// 开启流程,参数是流程的ID
runtimeService.startProcessInstanceByKey(PROCESS_ID);
} //根据Assignee查询task
public List<Task> findTaskByAssignee(String assignee){
List<Task> taskList = taskService.createTaskQuery().
taskAssignee(assignee). //根据办理人查询
orderByTaskCreateTime().asc(). //根据创建时间升序排列
list(); //返回列表 for(Task task : taskList){
System.out.println("任务ID:"+task.getId());
System.out.println("任务名称:"+task.getName());
System.out.println("任务的创建时间:"+task.getCreateTime());
System.out.println("任务的办理人:"+task.getAssignee());
System.out.println("流程实例ID:"+task.getProcessInstanceId());
System.out.println("执行对象ID:"+task.getExecutionId());
System.out.println("流程定义ID:"+task.getProcessDefinitionId());
System.out.println("=========================================");
} return taskList;
} //完成任务
//variables 为流程变量,对应bpmn 中 Condition 设置的 ${message=='不重要'}
public void completeProcess(String taskId, Map<String, Object> variables){
taskService.complete(taskId, variables);
System.out.println("完成任务ID:"+taskId);
}
}

  b.在Controller中测试

    //提交流程
@RequestMapping("submitProcess")
public @ResponseBody String submitProcess(HttpServletRequest request, HttpServletResponse response){
processService.startProcess();
return "提交流程成功";
} //部长审批
@RequestMapping("departmentProcess")
public @ResponseBody String departmentProcess(HttpServletRequest request, HttpServletResponse response){
List<Task> taskIdList = processService.findTaskByAssignee("department");
for(Task task : taskIdList){
String taskId = task.getId();
processService.completeProcess(taskId, null);
}
return "部长审批成功";
} //副总审批
@RequestMapping("managerProcess")
public @ResponseBody String managerProcess(HttpServletRequest request, HttpServletResponse response){
List<Task> taskIdList = processService.findTaskByAssignee("manager");
for(Task task : taskIdList){
String taskId = task.getId();
processService.completeProcess(taskId, null);
}
return "副总审批成功";
}

工作流——activiti的更多相关文章

  1. 工作流Activiti新手入门学习路线整理

    写在前面: 最近项目中使用到了工作流,虽然此部分不是自己需要完成的,但是也涉及到了要调用写的接口.正好有时间,就了解下,以便之后能在其他项目中用到时,不至于什么都不知道什么都不了解. 这里就主要整理下 ...

  2. (2)java程序走一遍工作流activiti

    工作流从流程定义到创建一个流程实例完成执行步骤 使用activi-designer创建一个流程定义(.bpmn结尾的文件) 将定义好的流程定义和生成的png图片通过RepositoryService( ...

  3. java工作流activiti的步骤

    链接:activiti 表名称的解释 工作流从流程定义到创建一个流程实例完成执行步骤(省略bpmn的画法) 工作流的所有操作都是使用流程引擎来进行操作的,流程引擎只是存储流程的过程,而不存储具体的业务 ...

  4. springboot~工作流activiti的搭建

    概念 工作流产品使用activiti的算是比较多了,自带了一套UI界面,可以直接使用,用来设计流程,下面简单总结一下它的步骤: 1 设计模型 2 发布为流程,一个模型可以发布多个版本的流程 3 建立一 ...

  5. 工作流--Activiti

    一.工作流 1.工作流介绍 工作流(Workflow),就是通过计算机对业务流程自动化执行管理.它主要解决的是“使在多个参与者  之间按照某种预定义的规则自动进行传递文档.信息或任务的过程,从而实现某 ...

  6. 工作流Activiti的学习总结(十二) activiti官方十分钟快速学习 (zhuan)

    http://topmanopensource.iteye.com/blog/1315341 ***************************************************** ...

  7. JeeSite 工作流Activiti的应用实例

    新建流程模型 在线办公-流程管理-模型管理-新建模型  点击“提交”后会立即跳转到“流程在线设计器”页面,请看下一章节 在线流程设计器 在线办公流程管理模型管理模型管理编辑 整体流程图 mat ...

  8. 工作流Activiti框架中表单的使用!详细解析内置表单和外置表单的渲染

    Activiti中的表单 Activiti提供了一种方便而且灵活的方式在业务流程中以手工方式添加表单 对表单的支持有2种方式: 通过表单属性对内置表单进行渲染 通过表单属性对外置表单进行渲染 表单属性 ...

  9. 工作流Activiti框架中的LDAP组件使用详解!实现对工作流目录信息的分布式访问及访问控制

    Activiti集成LDAP简介 企业在LDAP系统中保存了用户和群组信息,Activiti提供了一种解决方案,通过简单的配置就可以让activit连接LDAP 用法 要想在项目中集成LDAP,需要在 ...

随机推荐

  1. 解决ssh连接linux服务器速度慢

    服务器端sshd配置文件 /etc/ssh/sshd_config 看是否有如下的两条配置条目 GSSAPIAuthentication no UseDNS no 如果前面带#,请把#删掉,或者新添加 ...

  2. [Android] Android 最全 Intent 传递数据姿势

    我们都是用过 Intent,用它来在组件之间传递数据,所以说 Intent 是组件之间通信的使者,一般情况下,我们传递的都是一些比较简单的数据,并且都是基本的数据类型,写法也比较简单,今天我在这里说的 ...

  3. To making it count.

    - How do you take your caviar, sir? 鱼子酱还要吗,先生? - No caviar for me, thanks.  Never did like it much. ...

  4. hibernate之一对多,多对一

    配置文件 <!--一对多--><!--name:集合属性名字 column:外键列名 class:与它相关的对象的完整列名 cascade:级联操作:分3种 save-update: ...

  5. andriod webview和h5

    1.WebBrowserActivity extends BaseActivity 2.setContentView(R.layout.activity_web_html); <WebView ...

  6. 21 re正则模块 垃圾回收机制

    垃圾回收机制 不能被程序访问到的数据,就称之为垃圾 引用计数 引用计数:用来记录值的内存地址被记录的次数的:当一个值的引用计数为0时,该值就会被系统的垃圾回收机制回收 每一次对值地址的引用都可以使该值 ...

  7. h1-h3使用

    一个页面也就只允许出现一个h1标签.内容页文章的标题,是seo中使用最多的地方,基本的文章页面标题都是使用h1标签.一.<h1>用来修饰网页的主标题,一般是网页的标题 ,文章标题,< ...

  8. 对oracle用户创建asm磁盘

    --root用户执行vi /etc/sysctl.conf #Install oracle settingfs.aio-max-nr = 1048576fs.file-max = 6815744#ke ...

  9. ThinkPHP 2053错误

    这个报错是调用存储过程的时候产生的,用的是5.1的代码是根据官方文档写的,我怀疑5.0也有这个问题.去官方查了一下发现不少人有这个问题,但是官方都没有回应过,只能自己动手一步步调了. $center ...

  10. MySQL 的安装与使用(一)

    一.Windows 上安装 MySQL 1.Windows 上安装 MySQL 相对来说会较为简单,地那就链接 https://cdn.mysql.com//Downloads/MySQL-8.0/m ...