`

部署工作流程并执行

阅读更多

1、在myeclipse中建立工程

 

2、添加jbpm所需的jar包支持,这里我用到的是前面提到的在myeclipse中建立用户库的形式

 

3、建立jpdl定义文件,在工程上右键---->new-----> other----->jboss jbpm--->jbpm 4 process definition,完成后如下图:

 

jpdl文件的代码如下:

<?xml version="1.0" encoding="UTF-8"?>

 

<process name="holiday" xmlns="http://jbpm.org/4.3/jpdl">

   <start name="start1" g="38,16,48,48">

      <transition name="to state1" to="state1" g="-59,-17"/>

   </start>

   <state name="state1"  g="16,96,92,52">

      <transition name="to task1" to="task1" g="-53,-17"/>

   </state>

   <task name="task1" assignee="wang01" g="16,180,92,52">

      <transition name="to end1" to="end1" g="-47,-17"/>

   </task>

   <end name="end1" g="38,264,48,48"/>

</process>

 

4、建立java类,发布流程并开启流程实例执行。

package com.tc.test;

 

import java.util.Iterator;

import java.util.List;

 

import org.jbpm.api.Configuration;

import org.jbpm.api.Execution;

import org.jbpm.api.ExecutionService;

import org.jbpm.api.HistoryService;

import org.jbpm.api.ProcessEngine;

import org.jbpm.api.ProcessInstance;

import org.jbpm.api.RepositoryService;

import org.jbpm.api.TaskService;

import org.jbpm.api.history.HistoryProcessInstance;

import org.jbpm.api.task.Task;

 

public class HolidayTest {

 

/**

* @param args

*/

public static void main(String[] args) {

//replayHoliday();

executeHoliday();

}

public static void replayHoliday(){

//获得流程引擎对象

ProcessEngine pe=Configuration.getProcessEngine();

//获得流程资源对象

RepositoryService rs=pe.getRepositoryService();

//向流程资源对象中添加jpdl xml并发布流程到jbpm数据库中

String id=rs.createDeployment().addResourceFromClasspath("holiday.jpdl.xml").deploy();

//在控制台下输出已部署的流程id

System.out.println("流程已经部署:"+id);

}

 

public static void executeHoliday(){

//获得流程引擎对象

ProcessEngine pe=Configuration.getProcessEngine();

//获得流程执行服务接口对象

ExecutionService es=pe.getExecutionService();

//根据流程名字获取流程实例对象

ProcessInstance pi=es.startProcessInstanceByKey("holiday");

//输出流程实例id

System.out.println("新建流程实例的id为:"+pi.getId());

//查找name为state1的state

Execution state1=pi.findActiveExecutionIn("state1");

System.out.println("state1:"+state1.getName());

//通过流程执行对象把该state执行

es.signalExecutionById(state1.getId());

//重新从数据库中获取指定id的流程实例对象

pi=es.findProcessInstanceById(pi.getId());

//查找name为task1的任务

Execution task=pi.findActiveExecutionIn("task1");

System.out.println("task name:"+task.getName());

 

//获得任务服务接口对象

TaskService ts=pe.getTaskService();

//根据用户名wang01获得该用户的所有应处理任务中的第一个任务

//              这里并不一定是当前流程实例应该处理的Task

Task  toDo=ts.findPersonalTasks("wang01").get(0);

System.out.println("ExecutionId"+toDo.getExecutionId());

System.out.println("do id:"+toDo.getId());

System.out.println("to do Name:"+toDo.getName());

 

//处理该任务

//注:这里处理的任务并不一定是我们刚刚创立的流程实例所应处理的任务,可能是其他流程实例未处理的任务

//因为我们上面代码是:ts.findPersonalTasks("wang01").get(0)

ts.completeTask(toDo.getId());

 

//获得历史服务接口对象

HistoryService hs=pe.getHistoryService();

//获取所有流程历史记录信息并输出

List<HistoryProcessInstance> hiss=hs.createHistoryProcessInstanceQuery().list();

for (Iterator iterator = hiss.iterator(); iterator.hasNext();) {

HistoryProcessInstance historyProcessInstance = (HistoryProcessInstance) iterator

.next();

System.out.println(historyProcessInstance.getKey()+"====="+historyProcessInstance.getProcessDefinitionId()

+"======"+historyProcessInstance.getProcessInstanceId()+historyProcessInstance.getState());

}

}

}

 

  • 大小: 22.5 KB
分享到:
评论

相关推荐

    基于Activiti6.0,集流程设计、流程部署、流程执行、任务办理、流程监控于一体的开源工作流开发平台

    这个平台融合了流程设计、流程部署、流程执行和任务办理功能,为企业带来高效且灵活的流程管理能力。 流程设计是平台的核心组成部分之一,它通常通过BPMN(Business Process Modeling Notation)2.0标准进行,这是...

    WebLogic部署应用程序(图解)

    我们可以创建一个名称为Deploy_Test的应用程序,执行后,则在控制台中的应用程序部署中可以看到创建的应用程序已经部署。这是本地自动部署,WebLogic Server将定期扫描&lt;domain-name&gt;/applications目录,自动部署里面...

    Activiti流程图部署及流程图部分操作.pdf

    Activiti 是一个开源的工作流和业务自动化引擎,它支持企业级的业务流程管理(BPM)和业务规则管理(BRM)。在这个主题中,我们主要关注如何在Activiti中进行流程图的部署以及如何操作流程图。 流程图的部署是...

    Activiti学习文档(二)之画流程图并部署流程

    在“Activiti学习文档(二)之画流程图并部署流程”中,我们将深入探讨如何设计和部署工作流程。 首先,流程图是Activiti中至关重要的部分,它使用Business Process Model and Notation (BPMN) 2.0标准来表示业务...

    应用程序部署引导执行程序

    应用程序主引导程序,完成部署、升级等任务,使得你的软件像杀毒软件一样具有自动升级功能,改进C/S程序的部署成本问题,详细使用参见博客文章

    Gitllab+Jenkins+Docker+Harbor 自动化部署流程

    在自动化部署流程中,Harbor 负责存储和管理 Docker 镜像,并提供了一个安全的环境来部署应用程序。 五、 自动化部署流程 自动化部署流程的主要步骤包括: 1. 代码提交:开发者将代码提交到 Gitllab 服务器上。 2...

    jenkins自动化部署流程-web项目

    ### Jenkins自动化部署流程详解——Web项目 #### 一、项目背景与目标 随着软件开发项目的不断迭代和更新,持续集成和持续部署(CI/CD)成为提升开发效率和软件质量的关键手段之一。Jenkins作为一款开源的持续集成...

    Activiti的流程部署

    部署流程时,可以使用RepositoryService的createDeployment()方法创建部署对象,并添加bpmn文件和png图片,最后调用deploy()方法完成部署。 在进行流程部署前,确保已正确配置了Activiti工作流管理系统的环境,并且...

    利物小程序部署指南.txt

    - **安装部署说明**:这部分内容会详细介绍如何在服务器上安装并部署利物小程序。 - **视频配置流程**:除了文本说明外,还提供了视频教程,帮助用户更直观地理解配置过程。 ### 三、标签解析:利物小程序 教程 ...

    基于Flowable6.x,集流程设计、流程部署、流程执行、任务办理、流程监控于一体的开源工作流开发平台

    RuoYi-boot是有名的开源权限管理系统,集权限管理和代码快速生成于一体,将其作为基础开发平台集成flowable框架完成工作流引擎开发,打造集流程设计、流程部署、流程执行、任务办理、流程监控于一体的强大工作流平台...

    activity流程绘制及部署说明文档.docx

    这份"activity流程绘制及部署说明文档.docx"详细介绍了如何设计和部署流程图,包括各种类型的节点和网关,以及它们在流程中的作用。以下是文档中涉及的主要知识点: 1. **开始节点**:流程的起点,不可或缺,用于...

    c# winform 程序打包部署和VS2008制作程序安装包.docx

    C# WinForm 程序打包部署是指将 C# WinForm 应用程序转换为可执行文件并将其部署到目标机器上。为了实现这个目标,需要使用 VS2008 中的安装向导来创建一个安装项目,并将应用程序的可执行文件和相关文件添加到安装...

    使用activiti工作流引擎显示流程图时高亮显示流程图中已执行节点和已执行路径方法源代码

    Activiti 是一个流行的开源工作流引擎,它基于模型驱动的架构,提供了一套完整的工具来设计、部署和执行业务流程。在使用Activiti时,为了更好地理解流程状态和追踪执行过程,开发者往往需要实现流程图的高亮显示...

    Deadline10安装部署流程

    【Deadline10安装部署流程】 Deadline是一款强大的渲染农场管理和任务调度工具,广泛应用于Windows、Linux和macOS系统,兼容80多种创意应用软件,如Maya、3ds Max、Cinema 4D等。它提供了丰富的功能组件和高度可...

    WatchPuppy(CAD防火墙)部署程序1.2.zip

    该版本1.2的部署程序包含了一个名为"WatchPuppy部署程序1.2.exe"的可执行文件,该文件用于安装和配置防火墙,以便在CAD环境中运行。 CAD病毒,如acaddoc.lsp和vlx病毒,是一种特殊的恶意软件,它们通常通过AutoCAD...

    Go-StackUp一个简单的部署工具能在多个主机上并行执行给定的一组命令

    它简化了复杂环境下的部署流程,使得开发者可以高效地管理和更新分布式系统。在现代云计算环境中,这种能够快速、一致地部署代码的工具变得至关重要。 ### Go语言的优势 Go(Golang)是由Google开发的一种静态类型...

Global site tag (gtag.js) - Google Analytics