Activiti作为一个遵从Apache许可的工作流和业务流程管理开源平台,其核心是基于java的超快速、超级稳定的BPMN2.0流程引擎,强调流程服务的可嵌入式和可扩展性,既面向开发人员、也面向业务人员,同时扩展activiti在线流程模型设计、关联业务表单等功能,可达到面向客户的流程建模(定义)、管理等功能。
Activiti一直受业界青睐,也受开发者的青睐!下面这篇博客就来介绍jplogic之上关于activiti流程引擎的整合,后期将会推出jplogic自定义流程引擎完成jplogic关于工作流方面基本内需即可。我们都知道工作流在我们企业应用中被广泛应用,比如我们OA系统中员工与领导之间业务审批流程功能等这类拥有多参与者按照预定的规则(流程定义)传递信息、文档或者任务自动化执行,从而达到预定设定的目标的需求的功能都离不开我们的工作流引擎。同时工作流引擎只负责业务流程抽象模型的建立(定义)、解释以及运转。业务需求还是需要在具体业务模块中实现。那么如果我们业务需要按照某种预定于的规则(流程)执行的时候,我们就需要将我们业务与我们的工作流引擎关联(绑定)起来,这样我们就可以让流程引擎带动我们业务流程,那么业务流程就按照我们预定义流程运转了!从而实现我们应用业务流转的需要。也就是说单独工作流程是没有意义了!需要让工作流管理系统与我们业务系统建立管理才能使得工作流程应用变得有意义!所以现在市面上才出现了很多开源的工作流程引擎框架。那么当我们将这些独立流程引擎关联到我们应用的时候就需要让我们业务与之关联!
那么如何让这些工作流程引擎与我们业务系统灵活的关联在一起呢,这部分的工作在很多第三的开源框架都可以看到,在这里就不过多介绍。大家有兴趣的可以去了解一下,兴许你能设计出满足自己需要的流程引擎来!当然也欢迎进入群【376447127】与我交流相关技术。
以上是关于工作流程的基础说明,下面就来讲讲activit这个开源工作流程引擎,对于开发者来说activiti应用起来相对很简单。因为activiti本身提供很多丰富的API,这些API包含了大量的service,可快速的操作我们流程引擎。该流程引擎灵活的扩展到你的业务系统中可实现面向用户流程需求,不需要编写任务代码,其中就思路就是(首先将流程模型定义出来,然后动态关联我们业务表(表单)即可,其中这些业务表单动态建立,业务表也可动态建立,那么我们就需要设计在线的表单设计器来动态的创建表单,进而动态的创建业务表或者先动态创建业务表,然后再根据创建的业务表来创建我们的业务表单)。除了让我们业务关联工作流之外,我们来可以将我们应用中的权限控制与工作流程引擎关联起来,这样做可以让我们应用权限模块对流程流转业务进行控制。
好吧,说了一些关于工作流程应用的一些设计思路了!下面就来介绍activiti整合到jplogic中,activiti可以很方面的整合到你的应用中,不管是ssh\ssj\ssm等这些组合框架的搭配都很方面整合!但下面我集成到jplogic中,属于非这类搭配集成!因为jplogic的MVC架构不由这些开源框架组成!下面我把activiti作为jplogic的一个module来启动,集成如下所示:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<jplogic.config>
<Platform>
<!-- 应用模块 -->
<modules>
<!--多管理模块-->
<add name="db" type="org.jplogic.system.core.soa.component.db.DbAccesscComponent" init_priority="1"/>
<add name="sso" type="org.jplogic.system.core.soa.component.sso.SSOComponent" init_priority="2"/>
<add name="permission" type="org.jplogic.system.core.soa.component.permission.PermissionSoaComponent" init_priority="3"/>
<add name="memcached" type="org.jplogic.system.core.soa.component.memcached.cache.MemcachedCacheSoaComponent" init_priority="4"/>
<add name="initParam" type="org.jplogic.system.core.soa.component.param.InitParamSoaComponent" init_priority="5"/>
<add name="activiti" type="org.jplogic.system.core.soa.component.activiti.ActivitiSoaComponent" init_priority="6"/>
</modules>
</Platform>
<!--数据库管理模块-->
..........
如上所示添加activiti组件
<add name="activiti" type="org.jplogic.system.core.soa.component.activiti.ActivitiSoaComponent" init_priority="6"/>
该组件代码如下所示:
package org.jplogic.system.core.soa.component.activiti;
import java.util.Map;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngineConfiguration;
import org.apache.log4j.Logger;
import org.jplogic.system.core.ServiceContext;
import org.jplogic.system.core.ebl.util.PropertiesUtil;
import org.jplogic.system.core.module.IModule;
import org.jplogic.system.core.soa.component.SOAComponent;
public class ActivitiSoaComponent extends SOAComponent {
private static Logger logger = Logger.getLogger(ActivitiSoaComponent.class);
protected void initComponent() {
try {
this.componentType = "SOAComponent";
this.componentDescription = "初始化activiti组件";
this.componentClazz = getClass().getName();
logger.info("--componentType:" + this.componentType);
logger.info("--componentDescription:" + this.componentDescription);
} catch (Exception err) {
logger.error(err.getMessage(), err);
}
}
protected void initComponentOperates() {
try {
initActiviti();
} catch (Exception err) {
logger.error(err.getMessage(), err);
}
}
private void initActiviti() {
PropertiesUtil.getInstance().initProperties("Global.properties");
//读取activiti相关配置
String jdbcDriver = PropertiesUtil.getInstance().readUrl("jplogic.framkwork.activiti.JdbcDriver");
String jdbcUrl = PropertiesUtil.getInstance().readUrl("jplogic.framkwork.activiti.JdbcUrl");
String jdbcUsername = PropertiesUtil.getInstance().readUrl("jplogic.framkwork.activiti.JdbcUsername");
String jdbcPassword = PropertiesUtil.getInstance().readUrl("jplogic.framkwork.activiti.JdbcPassword");
String databaseSchemaUpdate = PropertiesUtil.getInstance().readUrl("jplogic.framkwork.activiti.DatabaseSchemaUpdate");
ProcessEngineConfiguration processEngineConfiguration = ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration();
//连接数据库的配置
processEngineConfiguration.setJdbcDriver(jdbcDriver);
processEngineConfiguration.setJdbcUrl(jdbcUrl);
processEngineConfiguration.setJdbcUsername(jdbcUsername);
processEngineConfiguration.setJdbcPassword(jdbcPassword);
processEngineConfiguration.setDatabaseSchemaUpdate(databaseSchemaUpdate);
//工作流的核心对象,ProcessEnginee对象
ProcessEngine processEngine = processEngineConfiguration.buildProcessEngine();
//或者通过配置文件初始化activiti,这种方式是通过spring的方式初始化
//ProcessEngine processEngine = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml").buildProcessEngine();
ServiceContext.getContext().put("processEngine", processEngine);
ServiceContext.getContext().put("repositoryService", processEngine.getRepositoryService());
ServiceContext.getContext().put("runtimeService", processEngine.getRuntimeService());
ServiceContext.getContext().put("taskService", processEngine.getTaskService());
ServiceContext.getContext().put("historyService", processEngine.getHistoryService());
ServiceContext.getContext().put("formService", processEngine.getFormService());
ServiceContext.getContext().put("managementService", processEngine.getManagementService());
ServiceContext.getContext().put("identityService", processEngine.getIdentityService());
}
@SuppressWarnings("unchecked")
@Override
protected void OnInit(Map configSettingMap) throws Exception {
super.OnInit(configSettingMap);
this.doService();
}
@Override
public IModule GetInstance() {
return this;
}
}
以上添加对activiti支持之后,在平台中就可以调用activiti提供的API了,如果对于activiti的API使用的还不是很爽的话,可以对activiti的API再进一步的封装一遍,方面自己的应用使用activiti提供功能来完成你的流程管理模块的功能,好了,下面是jplogic针对activiti流程引擎的一个实现案例的部分截图:
流程定义主界面:
其中ProcessInstanceMngForm.jsp列表页面代码:
<%@ page language="java" contentType="text/html; charset=utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@ taglib uri="/WEB-INF/tagtld/htmlTagComponet.tld" prefix="JB"%>
<html>
<head>
<JB:ComponentBase id="bomponentBase" isJudgeSession="true" disableContextmenu="true" isLoadingListener="true"></JB:ComponentBase>
<style>
html,body {
width: 100%;
height: 100%;
margin: 0px;
padding: 0px;
overflow: hidden;
}
</style>
</head>
<body id="flow_instance_body">
<script type="text/javascript">
var formOperate = new FormOperateObject();
function okOperate(){
closeBlDialog();
}
function noOperate(){
closeBlDialog();
}
function toolbarOperate(id){
var gridOperate = new GridOperateObject();
if(id=='flow_instance_Toolbar0'){//刷新
gridOperate.ReloadGrid(grid_flow_instance,'','');
}
}
//查看流程历史
function viewHistory(processInstanceId,processDefinitionId,activityId){
var title = "流程历史";
var url = "BPHandler?_bpForm=org.jplogic.system.web.view.webform.ActivitiProcessInstanceMngForm&_operate=viewProcessInstanceHistory&processInstanceId="+processInstanceId+"&processDefinitionId="+processDefinitionId+"&activityId="+activityId;
//增加一个分页标题
top.addNewTabPage(''+new Date(),url,title);
}
</script>
<!-- 流程实例-->
<JB:GridComponent
id="flow_instance"
colWidths="50,120,100,150,150,120,*"
parentId=""
setColAlign="center,left,left,left,left,left,left"
setColSorting="int,str,str,str,str,tr,str"
setColTypes="ch,ed,ed,ed,ed,ed,link"
headerItems="选择,编号,流程定义,流程实例,任务活动编号,关联业务Key,查看历史"
headerKeys="empty,id,processDefinitionId,processInstanceId,activityId,businessKey,opt"
toolbarId="flow_instance_Toolbar"
dataProvider=""
bpForm="org.jplogic.system.web.view.webform.ActivitiProcessInstanceMngForm"
operate="loadProcessInstanceList"
gridType="commonGrid"
enablePage="true"
gridHeight="480"
pagesInGrp="4"
pageSize="50"
editable="true"
enableMultiselect="true"
>
</JB:GridComponent>
<!-- 布局管理器 -->
<!-- 流程定义列表布局 -->
<JB:LayoutComponent layoutPattern="1C" parentId="flow_instance_body" id="flow_instance_layout" autoReSize="true" isAttachProgress="false">
<JB:LayoutCellComponent id="abc1" layoutCellTitle="运行中流程列表" layoutId="flow_instance_layout" layoutCellName="a" embeddedToolbarId="flow_instance_Toolbar" attachObjectId="grid_flow_instance" layoutCellHeigth="100" >
<JB:ToolBarComponent id="flow_instance_Toolbar" layoutCellToolbarId="flow_instance_Toolbar" onclick="toolbarOperate" title="运行中流程列表操作" gridId="" iconsPath="images/system/images/" >
<JB:ToolBarCellComponent id="flow_instance_Toolbar" cellType="button" btnSelectName="刷新" imgDisabled="refresh.gif" imgEnabled="refresh.gif" itemId="0" optionItems=""></JB:ToolBarCellComponent>
<JB:ToolBarCellComponent id="flow_instance_Toolbar" cellType="separator" imgDisabled="" imgEnabled="" itemId="1" optionItems=""></JB:ToolBarCellComponent>
<JB:ToolBarCellComponent id="flow_instance_Toolbar" cellType="button" btnSelectName="删除" imgDisabled="refresh.gif" imgEnabled="refresh.gif" itemId="2" optionItems=""></JB:ToolBarCellComponent>
<JB:ToolBarCellComponent id="flow_instance_Toolbar" cellType="separator" imgDisabled="" imgEnabled="" itemId="3" optionItems=""></JB:ToolBarCellComponent>
<JB:ToolBarCellComponent id="flow_instance_Toolbar" cellType="button" btnSelectName="查询" imgDisabled="refresh.gif" imgEnabled="refresh.gif" itemId="4" optionItems=""></JB:ToolBarCellComponent>
<JB:ToolBarCellComponent id="flow_instance_Toolbar" cellType="separator" imgDisabled="" imgEnabled="" itemId="5" optionItems=""></JB:ToolBarCellComponent>
</JB:ToolBarComponent>
</JB:LayoutCellComponent>
</JB:LayoutComponent>
</body>
</html>
流程图查看:
跟踪流程执行轨迹:
以上是jplogic关于activiti集成实例部分截图效果,以上内容希望对刚接触流程引擎的朋友帮助,也欢饮大伙与我交流相关技术。
分享到:
相关推荐
《Activiti整合流程自定义设计:SpringBoot+Activiti+Bootstrap+Angular实战解析》 在当今的信息化时代,业务流程管理(BPM)系统已成为企业不可或缺的一部分。Activiti,一个强大的开源工作流引擎,以其易用性和...
在企业级应用开发中,Activiti 是一个广泛使用的开源工作流引擎,它允许开发者通过模型驱动的方式来设计和执行业务流程。在"activiti6.0 自定义流程路径颜色和任务颜色"这个主题中,我们主要关注如何根据业务需求...
在IT行业中,Activiti是一个非常流行的开源工作流引擎,它被广泛用于企业级应用中来管理业务流程。本文将深入探讨如何在Activiti 6.0版本中实现流程图片的自定义颜色功能,以增强流程图的可读性和美观性。 首先,...
在本项目"activiti自定义表单demo"中,我们主要关注的是如何使用SpringBoot集成Activiti工作流引擎,实现自定义表单和流程。这个Demo提供了完整的代码示例,帮助开发者理解并应用到实际项目中。以下是相关知识点的...
【标题】"activiti整合drools案例"涉及的是在企业级工作流管理系统Activiti中集成规则引擎Drools的实践应用。Activiti是一款开源的工作流和业务自动化引擎,它允许开发者设计、部署和执行业务流程。Drools则是JBoss...
Activiti工作流引擎是一款强大的开源工作流解决方案,它基于模型驱动的架构,旨在为企业提供灵活、可扩展的业务流程自动化能力。在这个“Activiti工作流整合Web流程设计器整合”主题中,我们将深入探讨如何将...
Activiti7是一款强大的开源工作流引擎,用于在Java应用程序中实现业务流程自动化。它基于模型驱动的架构,允许开发者通过BPMN 2.0标准来设计、部署和执行流程。这个“Activiti7(流程引擎)简单笔记”很可能是作者在...
springboot整合activiti5.22实现页面流程设计项目,可直接启动,自动建表,调用接口http://localhost:8080/models/newModel,创建流程模型后,可直接访问http://localhost:8080/static/modeler.html?modelId=75001...
RuoYi-Activiti是一款基于Spring的开源工作流引擎,它基于 Activiti 的强大功能,为中国的开发者提供了更友好的界面和更贴近国内业务场景的解决方案。在本篇文章中,我们将深入探讨RuoYi-Activiti的原理、核心组件、...
Activiti 是一个开源的工作流和业务自动化引擎,它支持企业级的业务流程管理(BPM)和业务规则管理(BRM)。在这个主题中,我们主要关注如何在Activiti中进行流程图的部署以及如何操作流程图。 流程图的部署是...
1. **Activiti**:Activiti是一个开源的工作流和业务流程管理引擎,基于BPMN 2.0标准,提供了一种灵活、强大且易于使用的框架来设计和执行业务流程。它具有强大的图形化建模工具,支持流程定义、执行和监控,可以...
在信息化管理中,流程自动化扮演着至关重要的角色,而Activiti作为一款开源的工作流引擎,深受开发者喜爱。本示例“activiti5.22-web流程设计器整合demo”提供了一个完整的实践环境,帮助用户快速理解和应用Activiti...
压缩包中的"jeesite"可能是Jeesite框架的一个示例项目,Jeesite是一个开源的Java快速开发平台,集成了Activiti流程引擎,可以方便地将Activiti Designer设计的流程模型整合到实际的应用中。 总之,Activiti ...
Activiti是一款开源的工作流和业务流程管理(BPM)引擎,它基于 Activiti 5.22.0 版本。这个版本支持BPMN 2.0标准,提供了强大的流程定义和执行能力。Activiti Modeler 是Activiti提供的一个流程设计器,允许用户...
Activiti 是一个开源的工作流引擎,它支持 BPMN 2.0 标准,使得业务流程设计更加灵活。SpringBoot 是基于 Spring 框架的轻量级开发工具,它简化了项目的初始化和配置。将 Activiti 整合到 SpringBoot 中,可以轻松...
Flowable是一个高度灵活且可扩展的开源流程引擎,它支持BPMN 2.0标准,使得业务流程的建模和执行变得直观易懂。Flowable提供了强大的API,可以方便地集成到各种应用程序中,实现流程自动化。在6.4.2版本中,Flowable...
Activiti 是一个开源的工作流和业务自动化引擎,它支持企业级的业务流程管理(BPM)系统和模型驱动的应用程序。这个"activiti流程图查看demo"是一个示例项目,旨在帮助用户理解如何在Activiti中查看和操作流程图。在...
工作流Activiti是一个开源的工作流引擎,用于在Java应用程序中实现业务流程自动化。它提供了一套全面的工具和API,使开发人员能够轻松地设计、部署和管理业务流程。在这个"工作流activiti源码案例"中,我们可以深入...
Activiti 是一个开源的工作流引擎,它基于 BPMN 2.0 标准,提供了一套完整的流程定义、执行和监控工具。本文将详细探讨如何在 Activiti 中实现流程图的高亮显示,特别是已执行的节点和已执行路径。 首先,理解 ...
本课程从Activiti的基础架构、表结构、基础API开始介绍,逐渐讲解到Activiti的高级功能如:流程变量、网关,再到最后使用Activiti和Spring框架、SpringBoot整合,实现一个应用DEMO。 课程内容 章节一:Activiti...