`
wenlongsust
  • 浏览: 71844 次
  • 性别: Icon_minigender_1
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

Activiti5小试牛刀demo流程

 
阅读更多

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流程图查看demo"是一个示例项目,旨在帮助用户理解如何在Activiti中查看和操作流程图。在本篇文章中,我们将深入探讨Activiti的核心概念、流程图的查看方法以及如何利用diagram-viewer工具来实现这一...

    Activiti5 请假流程 demo 代码示例

    这个"Activiti5 请假流程 demo 代码示例"是为初学者和开发者提供的一种实践指南,展示了如何利用 Activiti5 实现一个典型的请假流程。在这个流程中,员工发起请假申请,然后该请求将依次经过项目经理、人力资源部门...

    activiti 5.22.0绿色 官方 demo 及 jar

    5. 在代码中启动流程实例,可以通过 API 或服务任务来与 Activiti 引擎交互。 在官方 Demo 中,你将看到如何使用 Activiti 进行实际开发的示例。这些示例通常包括了从启动流程到完成任务的完整流程,你可以参考它们...

    springboot+activiti7 入门小demo

    Activiti是一款开源的企业级工作流引擎,它为业务流程自动化提供了强大的支持。结合Spring Boot,我们可以快速搭建一个功能丰富的应用程序,实现流程的创建、审批和跟踪。 首先,让我们从标题"springboot+activiti7...

    activiti5工作流demo

    这个"activiti5工作流demo"是专为初学者设计的,尤其适用于那些对工作流概念还不太熟悉的开发者。在这个实例中,我们将深入探讨如何使用 Activiti 5 实现一个简单的请假流程。 在开始之前,我们需要了解什么是工作...

    springboot整合activiti6.0的代码demo

    springboot整合activiti6.0的代码demo,首先按照自己的数据库地址修改springboot地址,然后运行AppBoot启动类,启动工程,然后通过postman工具访问MyController类中的方法即可观察结果。

    Activiti工作流示例Activiti Demo(带完整源码)非常实用

    5. **示例流程**:预定义的流程模型,如请假审批、报销申请等,用于演示Activiti的功能。 通过学习和实践这个示例,开发者不仅可以掌握Activiti的基本使用,还能了解到如何将流程引擎与实际业务场景相结合,提升...

    test-activiti_activiti_DEMO_activitidemo_

    在本实例"test-activiti_activiti_DEMO_activitidemo_"中,我们主要探讨如何利用 Activiti 实现一个流程演示,包括流程的办理、驳回以及展示工作流的状态流程图。 首先,`activiti DEMO` 是一个典型的应用场景,它...

    Activiti6.0工作流引擎入门Demo

    Activiti是一个工作流引擎, activiti可以将业务系统中复杂的业务流程抽取出来,使用专门的建模语言BPMN2.0进行定义,业务流程按照预先定义的流程进行执行,实现了系统的流程由activiti进行管理,减少业务系统由于...

    activiti-demo

    **标题解析:**"activiti-demo" 这个标题表明这是一个关于Activiti的工作流程引擎的演示实例。Activiti 是一个开源的业务流程管理(BPM)和工作流系统,广泛用于自动化企业的业务流程。 **描述解析:**描述提到这是...

    Activiti5.15.1简单入门Demo

    在"Activiti5.15.1简单入门Demo"中,你可能会学习到如何安装和配置 Activiti,如何创建和部署流程定义,如何启动流程实例,以及如何通过 API 或者 Web 界面来处理任务。此外,可能还会涉及如何调试流程,以及对异常...

    activiti自定义表单demo.rar

    在本项目"activiti自定义表单demo"中,我们主要关注的是如何使用SpringBoot集成Activiti工作流引擎,实现自定义表单和流程。这个Demo提供了完整的代码示例,帮助开发者理解并应用到实际项目中。以下是相关知识点的...

    ssh 整合 activiti5 demo

    通过运行这个Demo,你可以了解如何在实际项目中集成Activiti5,实现工作流的控制,比如如何定义和部署流程,如何启动和监控流程实例,以及如何处理用户任务等。这对于理解企业级应用中的业务流程自动化和工作流管理...

    Activiti 简单顺序流demo

    在这个“Activiti 简单顺序流demo”中,我们将深入理解如何利用Activiti实现一个基本的工作流过程,包括部署流程定义、启动流程实例、查询个人任务以及完成任务。 首先,我们要了解流程定义。在Activiti中,流程...

    Activiti流程演示Demo

    本"Activiti流程演示Demo"旨在帮助用户了解并实践如何在实际项目中应用Activiti。 1. **Activiti核心概念** - **流程定义(Process Definition)**:是流程的蓝图,定义了任务的顺序和逻辑。通常使用BPMN 2.0标准...

    Activiti创建数据库表demo

    5. **流程定义(Process Definition)**: 使用Activiti Designer(一个Eclipse插件)或者BPMN 2.0 XML文件可以创建流程定义。这些定义会被存储在数据库的`ACT_RE_PROCDEF`表中。 6. **流程实例(Process Instance...

    Activiti_安装和demo

    【标题】"Activiti_安装和demo"涵盖了关于Activiti工作流引擎的安装与演示的教程,这是一款基于Java的企业级流程自动化工具。它被广泛应用于业务流程管理(BPM)系统,允许开发者通过模型驱动的方式来设计、部署和...

    Activiti5学习-activiti流程图中文乱码

    本文主要探讨的是在使用Activiti5时遇到的流程图中文乱码问题,以及如何解决这个问题。 首先,我们需要理解Activiti的工作原理。Activiti是一个基于Java的BPMN 2.0标准实现,它可以解析流程定义文件(通常是 BPMN ...

    Activiti5-demo

    通过这个 "Activiti5-demo" 项目,学习者可以深入理解 Activiti 的核心概念,实践流程设计、部署和执行,为实际项目开发打下坚实的基础。同时,也可以了解到如何在 Eclipse 开发环境中配置和使用 Activiti,提升工作...

Global site tag (gtag.js) - Google Analytics