demo流程目标:刚接触Activiti5,先大致了解下Activiti5的架构,熟悉下开发流程
搭建开发环境
首先给MyEclipse安装Activiti Designer插件,下载网址http://www.activiti.org/designer/archived/
当然也可以在线安装,网址http://www.activiti.org/designer/update
有可能因为版本不兼容安装不上,不过也不要紧,只是小试牛刀,并不影响demo流程的开发,后面会介绍Web版流程设计器
此外,新建一个java project,然后把activiti-explorer\WEB-INF\lib下面的jar包全部导入
设计示例流程
如果已经按安装好了Activiti Designer插件,直接使用就可以了,如果安装失败,先临时下载一个流程的定义文件,参考网址:http://yiyiboy2010.iteye.com/blog/1530924
编写测试代码
工程的代码结构如下:
测试的代码
import java.util.List
import org.activiti.engine.HistoryService
import org.activiti.engine.ProcessEngine
import org.activiti.engine.ProcessEngineConfiguration
import org.activiti.engine.RepositoryService
import org.activiti.engine.RuntimeService
import org.activiti.engine.TaskService
import org.activiti.engine.history.HistoricProcessInstance
import org.activiti.engine.task.Task
public class Test {
// 本流程模拟的是某公司2012年实习生招聘流程
// 张三来参加该招聘流程,公司相关负责人负责处理流程
public static void main(String[] args) {
// 加载配置文件
ProcessEngine processEngine = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml").buildProcessEngine()
RepositoryService repositoryService = processEngine.getRepositoryService()
repositoryService.createDeployment().addClasspathResource("resources/diagrams/Interview.bpmn20.xml").deploy()
RuntimeService runtimeService = processEngine.getRuntimeService()
String processId = runtimeService.startProcessInstanceByKey("Interview").getId()
TaskService taskService = processEngine.getTaskService()
HistoryService historyService = processEngine.getHistoryService()
// 得到笔试的流程
System.out.println("***************笔试流程开始***************")
List<Task> tasks = taskService.createTaskQuery().taskCandidateGroup("人力资源部").list()
for (Task task : tasks) {
System.out.println("人力资源部的任务:name:" + task.getName() + ",id:" + task.getId())
taskService.claim(task.getId(), "张三")
}
System.out.println("张三的任务数量:" + taskService.createTaskQuery().taskAssignee("张三").count())
tasks = taskService.createTaskQuery().taskAssignee("张三").list()
for (Task task : tasks) {
System.out.println("张三的任务:name:" + task.getName() + ",id:" + task.getId())
taskService.complete(task.getId())
}
System.out.println("张三的任务数量:" + taskService.createTaskQuery().taskAssignee("张三").count())
System.out.println("***************笔试流程结束***************")
System.out.println("***************一面流程开始***************")
tasks = taskService.createTaskQuery().taskCandidateGroup("技术部").list()
for (Task task : tasks) {
System.out.println("技术部的任务:name:" + task.getName() + ",id:" + task.getId())
taskService.claim(task.getId(), "李四")
}
System.out.println("李四的任务数量:" + taskService.createTaskQuery().taskAssignee("李四").count())
for (Task task : tasks) {
System.out.println("李四的任务:name:" + task.getName() + ",id:" + task.getId())
taskService.complete(task.getId())
}
System.out.println("李四的任务数量:" + taskService.createTaskQuery().taskAssignee("李四").count())
System.out.println("***************一面流程结束***************")
System.out.println("***************二面流程开始***************")
tasks = taskService.createTaskQuery().taskCandidateGroup("技术部").list()
for (Task task : tasks) {
System.out.println("技术部的任务:name:" + task.getName() + ",id:" + task.getId())
taskService.claim(task.getId(), "李四")
}
System.out.println("李四的任务数量:" + taskService.createTaskQuery().taskAssignee("李四").count())
for (Task task : tasks) {
System.out.println("李四的任务:name:" + task.getName() + ",id:" + task.getId())
taskService.complete(task.getId())
}
System.out.println("李四的任务数量:" + taskService.createTaskQuery().taskAssignee("李四").count())
System.out.println("***************二面流程结束***************")
System.out.println("***************HR面流程开始***************")
tasks = taskService.createTaskQuery().taskCandidateGroup("人力资源部").list()
for (Task task : tasks) {
System.out.println("技术部的任务:name:" + task.getName() + ",id:" + task.getId())
taskService.claim(task.getId(), "李四")
}
System.out.println("李四的任务数量:" + taskService.createTaskQuery().taskAssignee("李四").count())
for (Task task : tasks) {
System.out.println("李四的任务:name:" + task.getName() + ",id:" + task.getId())
taskService.complete(task.getId())
}
System.out.println("李四的任务数量:" + taskService.createTaskQuery().taskAssignee("李四").count())
System.out.println("***************HR面流程结束***************")
System.out.println("***************录用流程开始***************")
tasks = taskService.createTaskQuery().taskCandidateGroup("人力资源部").list()
for (Task task : tasks) {
System.out.println("技术部的任务:name:" + task.getName() + ",id:" + task.getId())
taskService.claim(task.getId(), "李四")
}
System.out.println("李四的任务数量:" + taskService.createTaskQuery().taskAssignee("李四").count())
for (Task task : tasks) {
System.out.println("李四的任务:name:" + task.getName() + ",id:" + task.getId())
taskService.complete(task.getId())
}
System.out.println("李四的任务数量:" + taskService.createTaskQuery().taskAssignee("李四").count())
System.out.println("***************录用流程结束***************")
HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery().processInstanceId(processId).singleResult()
System.out.println("流程结束时间:" + historicProcessInstance.getEndTime())
System.exit(0)
}
}
参考网址:http://yiyiboy2010.iteye.com/blog/1530924
这里需要特别说明的是,测试的代码编写好之后,如果要运行,必须有一个Activiti的数据库环境,修改activiti.cfg.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="processEngineConfiguration"
class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
<property name="databaseSchemaUpdate" value="true" />
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/activiti5" />
<property name="jdbcDriver" value="com.mysql.jdbc.Driver" />
<property name="jdbcUsername" value="root" />
<property name="jdbcPassword" value="admin" />
<property name="jobExecutorActivate" value="true" />
</bean>
</beans>
到这里,demo流程就可以跑起来了,不出意外的话,测试代码都可以正常运行
<script type="text/javascript">
$(function () {
$('pre.prettyprint code').each(function () {
var lines = $(this).text().split('\n').length;
var $numbering = $('<ul/>').addClass('pre-numbering').hide();
$(this).addClass('has-numbering').parent().append($numbering);
for (i = 1; i <= lines; i++) {
$numbering.append($('<li/>').text(i));
};
$numbering.fadeIn(1700);
});
});
</script>
分享到:
相关推荐
这个"activiti流程图查看demo"是一个示例项目,旨在帮助用户理解如何在Activiti中查看和操作流程图。在本篇文章中,我们将深入探讨Activiti的核心概念、流程图的查看方法以及如何利用diagram-viewer工具来实现这一...
这个"Activiti5 请假流程 demo 代码示例"是为初学者和开发者提供的一种实践指南,展示了如何利用 Activiti5 实现一个典型的请假流程。在这个流程中,员工发起请假申请,然后该请求将依次经过项目经理、人力资源部门...
5. 在代码中启动流程实例,可以通过 API 或服务任务来与 Activiti 引擎交互。 在官方 Demo 中,你将看到如何使用 Activiti 进行实际开发的示例。这些示例通常包括了从启动流程到完成任务的完整流程,你可以参考它们...
Activiti是一款开源的企业级工作流引擎,它为业务流程自动化提供了强大的支持。结合Spring Boot,我们可以快速搭建一个功能丰富的应用程序,实现流程的创建、审批和跟踪。 首先,让我们从标题"springboot+activiti7...
这个"activiti5工作流demo"是专为初学者设计的,尤其适用于那些对工作流概念还不太熟悉的开发者。在这个实例中,我们将深入探讨如何使用 Activiti 5 实现一个简单的请假流程。 在开始之前,我们需要了解什么是工作...
springboot整合activiti6.0的代码demo,首先按照自己的数据库地址修改springboot地址,然后运行AppBoot启动类,启动工程,然后通过postman工具访问MyController类中的方法即可观察结果。
5. **示例流程**:预定义的流程模型,如请假审批、报销申请等,用于演示Activiti的功能。 通过学习和实践这个示例,开发者不仅可以掌握Activiti的基本使用,还能了解到如何将流程引擎与实际业务场景相结合,提升...
在本实例"test-activiti_activiti_DEMO_activitidemo_"中,我们主要探讨如何利用 Activiti 实现一个流程演示,包括流程的办理、驳回以及展示工作流的状态流程图。 首先,`activiti DEMO` 是一个典型的应用场景,它...
Activiti是一个工作流引擎, activiti可以将业务系统中复杂的业务流程抽取出来,使用专门的建模语言BPMN2.0进行定义,业务流程按照预先定义的流程进行执行,实现了系统的流程由activiti进行管理,减少业务系统由于...
**标题解析:**"activiti-demo" 这个标题表明这是一个关于Activiti的工作流程引擎的演示实例。Activiti 是一个开源的业务流程管理(BPM)和工作流系统,广泛用于自动化企业的业务流程。 **描述解析:**描述提到这是...
在"Activiti5.15.1简单入门Demo"中,你可能会学习到如何安装和配置 Activiti,如何创建和部署流程定义,如何启动流程实例,以及如何通过 API 或者 Web 界面来处理任务。此外,可能还会涉及如何调试流程,以及对异常...
在本项目"activiti自定义表单demo"中,我们主要关注的是如何使用SpringBoot集成Activiti工作流引擎,实现自定义表单和流程。这个Demo提供了完整的代码示例,帮助开发者理解并应用到实际项目中。以下是相关知识点的...
通过运行这个Demo,你可以了解如何在实际项目中集成Activiti5,实现工作流的控制,比如如何定义和部署流程,如何启动和监控流程实例,以及如何处理用户任务等。这对于理解企业级应用中的业务流程自动化和工作流管理...
在这个“Activiti 简单顺序流demo”中,我们将深入理解如何利用Activiti实现一个基本的工作流过程,包括部署流程定义、启动流程实例、查询个人任务以及完成任务。 首先,我们要了解流程定义。在Activiti中,流程...
本"Activiti流程演示Demo"旨在帮助用户了解并实践如何在实际项目中应用Activiti。 1. **Activiti核心概念** - **流程定义(Process Definition)**:是流程的蓝图,定义了任务的顺序和逻辑。通常使用BPMN 2.0标准...
5. **流程定义(Process Definition)**: 使用Activiti Designer(一个Eclipse插件)或者BPMN 2.0 XML文件可以创建流程定义。这些定义会被存储在数据库的`ACT_RE_PROCDEF`表中。 6. **流程实例(Process Instance...
【标题】"Activiti_安装和demo"涵盖了关于Activiti工作流引擎的安装与演示的教程,这是一款基于Java的企业级流程自动化工具。它被广泛应用于业务流程管理(BPM)系统,允许开发者通过模型驱动的方式来设计、部署和...
本文主要探讨的是在使用Activiti5时遇到的流程图中文乱码问题,以及如何解决这个问题。 首先,我们需要理解Activiti的工作原理。Activiti是一个基于Java的BPMN 2.0标准实现,它可以解析流程定义文件(通常是 BPMN ...
通过这个 "Activiti5-demo" 项目,学习者可以深入理解 Activiti 的核心概念,实践流程设计、部署和执行,为实际项目开发打下坚实的基础。同时,也可以了解到如何在 Eclipse 开发环境中配置和使用 Activiti,提升工作...