java中bpmn流程图_Java学习之BPMN知识以及Activiti的流程部署

BPMN的介绍

Activiti项目是一项新的基于Apache许可的开源BPM平台,从基础开始构建,旨在提供支持新的BPMN 2.0标准,包括支持对象管理组(OMG),面对新技术的机遇,诸如互操作性和云架构,提供技术实现。

那什么是BPM和BPMN呢?

BPM:即业务流程管理,是一种以规范化的构造端到端的卓越业务流程为中心,以持续的提高组织业务绩效为目的的系统化方法,常见商业管理教育如EMBA、MBA等均将BPM包含在内。

BPMN:业务流程建模与标注,包括这些图元如何组合成一个业务流程图(Business Process Diagram)。业务流程示意图是由一系列的元素符号构成。作为BPMN的基础,这些符号将业务流程建模简单化、图形化,将复杂的建模过程视觉化,让阅读者对BPMN有一个更加清晰明了的了解。既然BPMN符号如此重要,那在绘制BPMN示意图之前,便必须要对BPMN符号的名称、意义、使用方法等有一个全面的理解。

BPMN的四种基本元素

l 流对象(Flow Objects):包括事件、活动、网关,是BPMN的核心元素;

事件Event 用一个圆圈表示,它是流程中运行过程中发生的事情。事件的发生会影响到流程的流转.事件包含Start\Intermediate\End三种类型.如下图:

378de9c3e7a89a6b7144ca2728d98d1d.png

活动Activities用圆角矩形表示,一个活动多个活动组成,活动的类型分为Task和Sub-Process。如下下图:

82f493d8ae316c1b382b4f56479e0bac.png

网关Gateway用菱形表示,用于控制流程的分支和聚合.具体符号表示如下:

9ce9059d01da9e0771be2b7de1004a61.png

l 连接对象(Connecting Objects):包括顺序流、消息流、关联;

l 泳道(Swimlanes):包括池和道两种类型;

l 人工信息(Artifacts):包括数据对象、组、注释。

Activiti的流程部署

下面介绍在IDEA中如何部署一个简单的考勤补签流程

1、首先在resource目录下新建bpmn目录

2、点击bpmn目录右键——>new——>bpmn文件,输入bpmn文件名后会出现如下界面:

c264e8e245588bf6843e0d4360afc8f5.png

该界面的左边是属性面板,可以查看和修改各个bpmn元素的属性值,中间是bpmn流程图,最右侧是流程图中的各种元素。

3、绘制流程图

1)拖放一个StartEvent(开始事件)和一个EndEvent(结束事件)到流程图中,分别将名称设置为“补签开始”和“补签结束”。

2)拖放两个UserTask,分别将名称设置为技术经理审批和人事专员确认

3)将图形连接起来,如上图,提示:将鼠标移动到图形中心,图标形状会发生变化,然后拖动到下一个图形就完成了连接。

4、生成流程图png图片

部署一个Activiti流程需要bpmn文件和流程图图片(png格式),可以复制bpmn文件然后将后缀名改为xml,在xml文件上点击右键——>Diagrams——>Show BPMN2.0 Designer会出现如下界面:

316c681ddb4eb4ee9ca192f43dd86935.png

点击左上方的导出按钮,选择resources下的bpmn目录,就会保存为png图片。

5、部署流程

上章介绍过Activiti的核心引擎ProcessEngine,所有的服务都需要通过流程引擎来获得。

部署流程需要使用RepositoryService,仓库服务是存储相关的服务,一般用来部署流程文件,获取流程文件,查询流程定义信息等操作,是引擎中的一个重要的服务。

获得方法:

RepositoryService repositoryService

= engine.getRepositoryService();

部署流程:

@Test

public void deployAddSigninProcess() {

//获得配置对象

ProcessEngineConfiguration config =

ProcessEngineConfiguration.createProcessEngineConfigurationFromResourceDefault();

//创建核心引擎

ProcessEngine processEngine = config.buildProcessEngine();

//获得仓库服务

repositoryService = processEngine.getRepositoryService();

//部署流程,支持链式编程

repositoryService

.createDeployment() //创建部署对象

.key("addsigninProcess") //设置部署流程键值

.addClasspathResource("bpmn/proc_addsignin.bpmn") //添加bpmn文件

.addClasspathResource("bpmn/proc_addsignin.png") //添加png文件

.name("补签流程") //设置流程名称

.deploy(); //部署

}

执行完上面的代码后会向下面三张表中插入记录:

35eda88614e421f5271dc43b15b6cd29.png

act_re_deployment存放流程定义的显示名和部署时间,每部署一次增加一条记录

e18777a8179d2e9583221f76d0c53692.png

act_re_procdef存放流程定义的属性信息,部署流程定义都会在这张表中增加一条记录。

e2918aae2131acb6905c61d63b3dde68.png

act_ge_bytearray存储流程定义相关的部署信息。即流程定义文档的存放地。

这样一个补签的流程就完成了部署,后面我们可以按照部署的流程进行层层审批直到完成整个流程。

千锋Java培训作为中国IT研发人才一体化服务的开拓者,为学生制定合理有序的学习计划,0学费入学,2周免费试听不满意不收费,与学员签订就业协议,坚持良心面授,从千锋Java培训班出去的学员均已高薪就业。千锋推出的免费java视频教程,让学员能够方面的巩固基础技术能力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/336827.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

javaone_JavaOne 2015 –第二十版十大收获

javaone我们刚刚在旧金山有了JavaOne的第二十版。 这将是我自2004年以来第十二次参加不间断的系列活动。最大的教训是什么,可以揭示Java的未来。 模块化斗争 自从Java 2007首次提到模块以来,已经花费了将近9年的时间,或者说,直到…

java批量处理数据库语句_Java项目中调用bat批处理进行多用户数据库备份

Java项目中调用bat批处理配合使用BCP进行多用户数据的备份一、项目需求最近项目中需要对数据库(Sql Server系列数据库)进行备份。项目中的需求不是简单的整个数据库的备份,而是根据用户来备份,具体的备份策略如下:①系统为某一赛事管理类型的…

mycat和应用程序集成_企业应用程序集成简介

mycat和应用程序集成本文是我们名为“ EAI的Spring集成 ”的学院课程的一部分。 在本课程中,向您介绍了企业应用程序集成模式以及Spring Integration如何解决它们。 接下来,您将深入研究Spring Integration的基础知识,例如通道,转…

activemq和jms_带有ActiveMQ和Maven的JMS Sender应用程序

activemq和jms我们已经看到了如何使用ActiveMQ和Maven创建JMS Receiver应用程序 。 让我们看看我们如何类似地创建JMS Sender应用程序 。 web.xml与创建接收器应用程序时使用的相同&#xff1a; <web-app xmlns"http://java.sun.com/xml/ns/javaee"xmlns:xsi&qu…

java经纬度曲线简化_JAVA 后台计算 经纬度 最短距离

1、 代码块package com.ilogie.tms.util;import java.io.IOException;import java.math.BigDecimal;import java.text.MessageFormat;public class LocationUtils {// 以下为 获得 两点之间最短距离private static final BigDecimal EARTH_RADIUS MathUtil.toBigDecimal(6378.…

java ee的小程序_在Java EE应用程序中实现自动重试

java ee的小程序最初&#xff0c;我想将此博客称为“ 具有拦截器驱动的重试策略的灵活超时 ”&#xff0c;但后来我认为它太“繁重”。 该声明以及修改后的标题应该&#xff08;希望&#xff09;使您了解此帖子可能谈论的内容;-) 触发 这篇文章主要由我在较早的一篇文章中收到…

jboss eap 7_EAP 7 Alpha和Java EE 7入门

jboss eap 7红帽JBoss企业应用程序平台7&#xff08;JBoss EAP 7&#xff09;是基于开放标准构建并符合Java Enterprise Edition 7规范的中间件平台。 它建立在WildFly等经过验证的创新开源技术之上&#xff0c;这将使Java EE 7的开发更加容易。 这是有关如何开始使用最新ALPHA…

为什么说php单线程,php单线程的缺点是什么?

PHP即“超文本预处理器”&#xff0c;是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言&#xff0c;与C语言类似&#xff0c;是常用的网站编程语言。PHP独特的语法混合了C、Java、Perl以及 PHP 自创的语法。利于学习&#xff0c;使用广泛&#xff0c;主要适用于Web开发领…

openshift 部署_在OpenShift上部署Java EE微服务

openshift 部署我昨天用WildFly Swarm在博客上发布了有关简单JAX-RS微服务的博客。 您学习了如何使用Maven构建所谓的“胖子”&#xff0c;还使用Maven Docker插件对我们的微服务进行了Docker化并在Docker Machine上本地运行。 这是在本地测试事物的好方法。 到目前为止&#x…

apache.camel_Apache Camel 2.16发布–十大亮点

apache.camelApache Camel 2.16于上周五发布。 这篇博客文章是我尝试在此新版本中进行前10名&#xff08;加1作为奖励&#xff09;的亮点。 1.动态到 来自骆驼用户的最常见的常见问题是&#xff0c;如何将消息发送到端点&#xff0c;uri应该使用消息中的动态值&#xff08;例…

设计模式示例_责任链设计模式示例

设计模式示例本文是我们名为“ Java设计模式 ”的学院课程的一部分。 在本课程中&#xff0c;您将深入研究大量的设计模式&#xff0c;并了解如何在Java中实现和利用它们。 您将了解模式如此重要的原因&#xff0c;并了解何时以及如何应用模式中的每一个。 在这里查看 &#x…

edmonds算法matlab,匈牙利算法的matlab实现

匈牙利算法算法简介算法原理算法实现(附代码)测试算法简介下面摘用百度百科中的解释。匈牙利算法(Hungarian method)是由匈牙利数学家Edmonds于1965年提出&#xff0c;因而得名。匈牙利算法是基于Hall定理中充分性证明的思想&#xff0c;它是二分图匹配最常见的算法&#xff0c…

java jooq_将Java EE与jOOQ结合使用的初学者指南

java jooqJava EE附带了自己的持久性API&#xff1a;JPA。 当您想要将RDBMS实体&#xff08;表/关系&#xff09;映射到Java实体&#xff08;类&#xff09;时&#xff0c;JPA最强大&#xff0c;主要遵循1&#xff1a;1映射策略。 其背后的思想是&#xff0c;业务逻辑通常不像关…

php扩展 waf,基于PHP扩展的WAF实现

访问一下看看结果&#xff1a;可以看到ls命令成功的执行了&#xff0c;也就是说我们的正常文件是不会被拦截的&#xff0c;而只有upload目录中的文件会被拦截&#xff0c;这样做又会引发另一个弊端&#xff0c;倘若攻击者通过某种方法将shell写入正常的文件中&#xff0c;或是与…

junit4 集成测试_使用JUnit规则进行干净的集成测试

junit4 集成测试JUnit Rules的优势&#xff0c;尤其是在进行集成测试时&#xff0c;几乎不能被高估。 在本文中&#xff0c;我们将阐明ExternalResource扩展的有用性。 在我们必须使用抽象外部资源的第三方库的情况下&#xff0c;这简化了灯具控制。 作为示例&#xff0c;我们将…

多项式在matlab中的应用,matlab的应用-多项式函数及多项式拟合

matlab的应用-多项式函数及多项式拟合 Matlab 的应用- 多项式函数及多项式拟合 本节将向大家简要介绍 matlab 在多项式处理方面的应用。 多项式函数主要有&#xff1a; roots 求多项式的根 poly 特征多项式 polyval 多 项式的计算 poly2str(p, x )多项式代换 polyfit 多项式曲线…

乐惠科技php面试题,程序员中的奇葩,使用php构建魔兽世界

这是用PHP编写的魔兽世界服务器。现在它已经调试了登录服务器的过程。目前的魔兽世界客户端是2.4.3_8606。服务器列表和帐户密码数据需要查询AUTH库。世界服务器身份验证过程已完成&#xff0c;数据包加密已完成后续进程正在开发中......数据库文件在根目录: sql/sql.7z今天在群…

javafx窗体程序_JavaFX真实世界应用程序:EIZO CuratOR Caliop

javafx窗体程序JavaFX Real-World应用程序第四号称为Caliop 。 它是EIZO为医院手术室开发的CuratOR解决方案的前端。 前端在壁挂式控制台上运行&#xff0c;并允许操作团队查找有关患者的信息&#xff0c;控制各种视频源到不同显示器的路由&#xff0c;录制视频&#xff0c;拍摄…

java8 streams_Java 8 Streams:过滤和谓词否定

java8 streams最近&#xff0c;有关LJC 邮件列表的成员在流中.filter方法中使用谓词否定的有趣讨论&#xff0c;因此我认为值得在博客文章中进行总结。 讨论是关于使用.filter和否定谓词的方法。 这篇文章的代码可以在我的github帐户中找到 。 也许这就是您可能会想到的方式&…

hystrix熔断 简介_Hystrix简介– Hello World

hystrix熔断 简介在以前的博客文章中&#xff0c;我介绍了需要像Netflix Hystrix这样的库的动机。 在这里&#xff0c;我将跳入一些非常基本的方法来开始使用Hystrix&#xff0c;并在更复杂的用例中进行跟进。 你好&#xff0c;世界 以下是“ Hystrix命令”的一个简单的Hello …