activiti入门小结

activiti入门-activiti官方应用使用 0.目录 1.0 了解activiti 1.1 什么是 activiti 1.2 activiti 相关概念 1.3 为什么使用 activiti 1.4 activiti的适用场景 1.5 使用activiti官方应用 1.5.1 相关war包介绍及发布 1.5.2 基本的请假流程 1.5.3 使用activiti-admin.war 管理流程 2.0 activiti的使用... 阅读详情

因为实习会用到activiti的知识,于是学习了activiti。

 

入门步骤 -> 1.学习相关知识点 -> 2.安装eclipse插件 -> 3.敲实例代码,熟悉代码和数据库。

1.activiti是什么?

activiti是一个用于开发企业协同工作相关业务的框架,开发像下图所示工作流程的系统。

activiti包括一系列的数据库(五种,共21张数据表)和开发用的api。

数据库:

以act_ge开头的表 ---------通用数据表,存放通用信息

以act_re开头的表 --------- 仓库表,存放流程信息,部署信息等。

以act_ru开头的表 --------- 运行表,存放一个流程实例化(就是运行起来)后的相关信息,有任务表,变量表等。

以act_id开头的表 --------- 身份表,存放身份,身份组信息等。

以act_hi开头的表 -------- 历史表,存放历史信息,比如已经完成的任务,或者完成的实例化流程。

api:

RepositoryService类,RuntimeService类,TaskService类,HistoryService类,IdentityService类,ManagementService类。

2.安装eclipse插件

安装插件在网上有很多教程,但是我仍然弄了很久。在安装插件的时候要注意下面几个问题

  1. 除非翻了墙,不然不要用网络安装,最好下载插件安装。
  2. 最好用2012一下版本的myeclipse安装,我之前就因为用的2017怎么也安装不上,最后发现是2017已经安装的一个插件与activiti插件冲突。(可以试试解压activiti插件压缩包,将文件中的冲突插件删除再压缩,然后安装,如果不行就卸了安装2012版吧)

3.敲示例代码

网上发现的一个不错的博客,照着敲很快就可以弄懂Activiti进阶(一)——HelloWorld

我在敲完之后将示例代码都保存为了snippets,可以方便后续开发,忘了的时候也可以拿来看看。

snippets的代码如下

<?xml version="1.0" encoding="UTF-16" standalone="no"?>
<snippets>
    <category filters="*" id="category_1563588489731" initial_state="0" label="Activiti" largeicon="" smallicon="">
        <description><![CDATA[Activiti工作流开发相关代码]]></description>
        <item category="category_1563588489731" id="item_1563588942171" label="activiti_HistoricProcessInstanceFind">
            <description><![CDATA[查询历史实例变量]]></description>
            <content><![CDATA[//查询历史实例
//		List<HistoricProcessInstance> list = processEngine.getHistoryService()
//				.createHistoricProcessInstanceQuery()
//				.processDefinitionId("myProcess:5:504")
//				.list();
//		
//		if(list != null && list.size() > 0){
//			for(HistoricProcessInstance hp : list){
//				System.out.println(hp.getId()+"  "+hp.getStartTime()+"  "+hp.getEndTime());
//			}
//		}]]></content>
        </item>
        <item category="category_1563588489731" id="item_1563588896546" label="activiti_addVariable">
            <description><![CDATA[添加流程变量]]></description>
            <content><![CDATA[//		//添加流程变量
//		String processInstanceId  = "1501";
//		String assignee = "张三";
//		TaskService taskService = processEngine.getTaskService();
//		
//		Task task = taskService.createTaskQuery()
//				.processInstanceId(processInstanceId)
//				.taskAssignee(assignee)
//				.singleResult();
//		
//		taskService.setVariable(task.getId(), "请假人", assignee);
//		taskService.setVariable(task.getId(), "请假天数", 3);
//		taskService.setVariable(task.getId(), "请假日期", new Date());]]></content>
        </item>
        <item category="category_1563588489731" id="item_1563588827866" label="activiti_ProcessDefinitionFind">
            <description><![CDATA[查询流程定义]]></description>
            <content><![CDATA[//查询流程定义
//		List<ProcessDefinition> list = processEngine.getRepositoryService()
//				.createProcessDefinitionQuery()
//				.processDefinitionKey("myProcess")
//				.orderByProcessDefinitionVersion().desc()
//				.list();
//		
//		if(list != null && list.size()>0){
//			for(ProcessDefinition pd:list){
//				System.out.println("流程定义的ID:"+pd.getId());
//				System.out.println("流程定义的名字:"+pd.getName());
//				System.out.println("流程定义的Key:"+pd.getKey());
//				System.out.println("流程定义的部署ID:"+pd.getDeploymentId());
//				System.out.println("流程定义的资源名称:"+pd.getResourceName());
//				System.out.println("流程定义的版本:"+pd.getVersion());
//				System.out.println("#################################################");
//			}
//		}]]></content>
        </item>
        <item category="category_1563588489731" id="item_1563588756642" label="activiti_complete">
            <description><![CDATA[activiti完成个人任务]]></description>
            <content><![CDATA[//		String taskId = "1804";
//		Map<String, Object> variables = new HashMap<String, Object>();
//		variables.put("message", "重要");
//		processEngine.getTaskService().complete(taskId, variables);
//		System.out.println("完成任务:"+taskId);]]></content>
        </item>
        <item category="category_1563588489731" id="item_1563588714298" label="activiti_task">
            <description><![CDATA[acitviti查询个人任务]]></description>
            <content><![CDATA[//		String assignee = "总经理";
//		List<Task> tasks = processEngine.getTaskService()
//				.createTaskQuery()
//				.taskAssignee(assignee)
//				.list();
//		if(tasks != null && tasks.size() > 0){
//			for(Task task:tasks){
//				System.out.println("任务ID:"+task.getId());
//				System.out.println("任务的办理人:"+task.getAssignee());
//				System.out.println("任务名称:"+task.getName());
//				System.out.println("任务的创建时间:"+task.getCreateTime());
//				System.out.println("流程实例ID"+task.getProcessInstanceId());
//				System.out.println("####################################");
//			}
//		}]]></content>
        </item>
        <item category="category_1563588489731" id="item_1563588666594" label="acitiviti_instanceInstance">
            <description><![CDATA[acitivti实例化进程]]></description>
            <content><![CDATA[//		String processDefinitionId = "myProcess:9:1705";
//		ProcessInstance pi = processEngine.getRuntimeService()
//				.startProcessInstanceById(processDefinitionId);
//		System.out.println("流程实例ID:" + pi.getId());//流程实例ID:101
//		System.out.println("流程实例ID:" + pi.getProcessInstanceId());//流程实例ID:101
//		System.out.println("流程定义ID:" + pi.getProcessDefinitionId());//MyProcess:1:4]]></content>
        </item>
        <item category="category_1563588489731" id="item_1563588614818" label="acitivit_deploy">
            <description><![CDATA[acitivit部署]]></description>
            <content><![CDATA[//		Deployment deployment = processEngine.getRepositoryService()
//				.createDeployment()
//				.addClasspathResource("diagrams/helloWorld.bpmn")
//				.addClasspathResource("diagrams/helloWorld.bmp")
//				.deploy();
//		
//		System.out.println("部署ID:" + deployment.getId());//部署ID:1
//		System.out.println("部署时间:" + deployment.getDeploymentTime());//部署时间]]></content>
        </item>
        <item category="category_1563588489731" id="category_15635884897311563588560524" label="activiti.cfg.xml" snippetProvider="org.eclipse.wst.common.snippets.ui.TextSnippetProvider">
            <description><![CDATA[activiti.cfg.xml 的配置模板]]></description>
            <content><![CDATA[<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="jdbcUrl" value="jdbc:h2:mem:activiti;DB_CLOSE_DELAY=1000" />

    <property name="jdbcDriver" value="org.h2.Driver" />

    <property name="jdbcUsername" value="sa" />

    <property name="jdbcPassword" value="" />



    <property name="databaseSchemaUpdate" value="true" />



    <property name="asyncExecutorActivate" value="false" />



    <property name="mailServerHost" value="mail.my-corp.com" />

    <property name="mailServerPort" value="5025" />

  </bean>



</beans>]]></content>
        </item>
    </category>
</snippets>

打开Snippet的View,右键点击Customize,再点import导入上述文件即可。

 

 

 

 

JAVA-工作流-Activiti7入门demo JAVA-工作流-Activiti7Activiti概述1. Activiti介绍2. BPMN介绍3. Activiti使用步骤Activiti入门demo1. 开发环境2.数据库准备3. activiti7入门demo搭建3.1安装流程设计器插件3.2创建maven项目,引入依赖,编写log4j配置文件3.3编写activiti.cfg.xml文件 Activiti概述 1. Activiti介绍 Activiti是一个工作流引擎,可以将业务系统中复杂的业务流程抽取出来,使用专门的建模语言BPMN2.0 阅读详情

相关推荐

【Activiti工作流引擎】官方快速入门demo

Activiti官方快速入门demo 地址: https://www.activiti.org/quick-start 0. 版本 activiti 5.22.0 JDK 1.8 1. 介绍 这个快速入门指南用于介绍如何在你编写的应用程序中嵌入BPM(Business Process Management)框架Activiti,你可以构建一个基于命令行的BPMN(业务流程建模...

Copywang 2万+

Activiti工作流-任务的办理、回退和拒绝

一、办理任务 /** * @description 办理任务 * @param taskId 需要办理的任务ID * @author giserDev * @email giserDev@163.com * @date 2020-10-17 11:18:13 */ @Override public void completeTask(String taskId) { taskService.complete(taskId); } 二、回退任务 任务的回退即将当前任务

晶谛-giserDev 5474

一文搞懂深度学习:最全神经网络介绍

本文是深度学习系列文章的第二篇,我们将深入探讨各种类型的人工神经网络,探索它们独特的特性和应用。

2402_82802238的博客 2800

Activiti应用实践(四)-提交任务

一、概述 在作业流管理中,如何一个流程节点完整后需要走到下一个节点都需要提交任务。创建请假申请电子流后需要提交,流程才能走到审批环节。审批人审批请假电子流,无论是审批通过或者审批不通过都需要提交,如果审批通过提交后流程结束,如果审批不通过,提交都驳回到申请人那里;这是通过不同的条件值实现的。 二、示例代码 /** * 提交任务。 * * @param taskId 任务ID * @retu...

Neo.Yang的专栏 1574

知识的定义与分类体系详解 - 从零基础到专业理解

知识的定义与分类体系详解 - 从零基础到专业理解

engchina的专栏 4363

burpsuite抓取ios数据包

1:首先在burpsuite中设置 添加proxy listeners 2:电脑开热点,手机连接,把代理设为电脑的ip和代理的端口 3:在Safari浏览器中打开网址http://burp下载证书 4:打开设置->通用->描述文件与设备管理 5:设置->通用->关于本机->证书信任设置 之后就可以正常抓包了 ...

weixin_45682070的博客 2065

Activiti工作流-简介篇

一、前言 工作流(Workflow),就是“业务过程的部分或整体在计算机应用环境下的自动化”。在工作中慢慢接触的业务流程,就向流程控制语言一样,一步一步都对应的不同的业务,但整体串联起来就是一个完整的业务。而且实际工作中尤其是在企业内部系统的研发中,确实需要对应许多审批流程的管理。而工作流就是能够在程序中,将这些支离破碎的流程,通过配置的方式管理起来,整体作为一个流程,方便修改,也方便维护。 de...

蓝星花 1288

DDS信号发生器设计避坑指南:从AD9834配置到巴特沃斯滤波实战

本文详细解析了基于AD9834芯片的DDS信号发生器设计中的关键技术要点与常见陷阱,涵盖时钟源选择、寄存器配置时序、巴特沃斯滤波器设计等核心内容。针对中高频段信号质量优化,提供了实用的解决方案和代码示例,帮助工程师规避设计误区,提升信号发生器的性能和稳定性。

2y3u4i5o6p的博客 781

解决activiti监听无法注入类字段

首先看看如何注入 string,注入 string 类型的值 xml 中会加上 <![CDATA[ ..值.. ]]> <activiti:field name="one"> <activiti:string><![CDATA[hello]]></activiti:string> </activiti:field> 再看如何注入 bean,注入 bean 要用表达式方式注入!注入 bean 类型时,会用 el 表达式...

佐手烈焰魂的博客 1318

5g LDPC编译码-LDPC编码

本文摘要:LDPC编码是5G业务信道的核心编码技术,属于线性分组码。5G中LDPC编码分为两种基图类型(BG1和BG2),通过码块分割、CRC处理等步骤实现。编码过程主要涉及校验矩阵生成和校验位计算,其中校验矩阵采用稀疏矩阵结构。文中详细介绍了5G LDPC编码的具体实现流程,包括码块分割规则、校验位生成方法,以及两种基图(BG1和BG2)在矩阵结构和参数设置上的差异,重点阐述了通过模块化方法求解校验比特位的技术路径。

weixin_38270585的博客 1365

YOLO项目部署:从Python脚本到Docker容器的企业级交付全流程

YOLO模型企业级Docker部署方案 核心挑战 环境一致性:解决"本地能跑,服务器崩掉"问题 可扩展性:支持单实例到多实例扩展 稳定性:确保99.9%可用性 部署流程 项目改造:模块化代码,分离配置 Docker镜像:支持CPU/GPU环境 API服务:封装推理逻辑 监控告警:实现自动化运维 技术方案 需求 解决方案 环境一致性 Docker镜像+依赖冻结 可扩展性 K8s+负载均衡 稳定性 健康检查+自动重启 项目结构 模块化代码组织 外部化配置管理 精确依赖版本控制 摘要重点:通过

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1230

activiti自定义属性(一)

1、在stencilset.json中添加属性 1.1 、在propertyPackages节点下增加属性,顺序无所谓,示例如下: --属性的定义,下方定义是抄来的,红色为自己标注的 "propertyPackages" : [ { "name" : "process_idpackage", -- 这个在节点引用中会用到 "properties" : [ { "id" : "id", ---id,后面properti.........

jiangjieyang的专栏 2389

产品缺陷检测:表面缺陷检测_(1).产品缺陷检测基础理论

确定像素之间的相似性准则,如灰度值的差异。

zhubeibei168的博客 832

Activiti快速入门指南

Activiti快速入门指南 本文翻译自 https://www.activiti.org/quick-start。 0. 约定 本教程假定您有以下经验: 熟悉Maven和Java 熟悉Java的开发环境 本教程将使用以下变量: 变量 描述 $mvnProject Mavne项目根目录地址 $actUnzipedPack 在http://www.activiti.org...

htw 3703

【异常检测】【EfficientAD】论文简单梳理与代码实现

EfficientAD作为较近的一篇异常检测网络,主要还是从S-T网络入手,对齐进行了相关改进。修改特征提取器引入自动编码器hard loss以及惩罚项。

胡侃有料的博客 2854

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Activiti入门

(1)要实现上述的流程,我们自己可以通过字段标识来实现这个审批效果,在业务表中加个字段,比如填写请假单用1标识,部门经理用2标识,总经理用3标识,人事备案用4标识,好像看起来没啥问题,也实现了审批效果。启动一个流程实例表示开始一次业务流程的运行,比如员工请假流程部署完成,如果张三要请假就可以启动一个流程实例,如果李四要请假也启动一个流程实例,两个流程的执行互相不影响,就好比定义一个 java 类,实例化两个对象一样,部署的流程就好比 java 类,启动一个流程实例就好比 new 一个 java 对象。

m0_57037182的博客 6075

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Activiti7入门

将上述定义的流程部署到Activiti数据库中,可以将文件一个一个部署,也可以将文件打包成压缩包进行部署。@Test//可以指定排序规则.list();@Test//根据流程id删除流程,如果流程有实例在运行,那么会报错,如果在后面加上true,则表示如果有实例,那么实例和流程定义一起删除。

thdwx的博客 1397

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

【activiti】activiti入门

查询流程相关信息,包含流程定义、流程部署、流程定义版本等/***查询流程定义//获取processEngineProcessEngineprocessEngine=ProcessEngines.getDefaultProcessEngine();//获取RepositoryServiceRepositoryServicerepositoryService=processEngine.getRepositoryService();...

return 3658

activiti入门六(集成新版Activiti Modeler与Rest服务)

目前activiti提供的Activiti Modeler有两套,从Activiti5.17后,发布了新的Activiti Modeler组件。本文主要介绍如何在项目中集成最新的Activiti Modeler.新版的效果 相比于上一版,个人感觉更加的简洁,优美。并且在Activiti5.20后,完善了很多上版本的bug。

jonathan的专栏 2万+

Activiti6.0(一)Activiti-app的安装使用及流程入门

目录 一、前言 二、Activiti简介 三、Activiti-app安装使用 四、创建第一个流程 1、创建用户 2、创建流程定义 3、测试流程 五、使用Activiti-admin查看历史记录 六、获取xml文件 七、工作流小结 一、前言 在流程服务方面也工作了挺长时间,项目上的工作流框架也在中途重构了一下子,底层工作流也从原先的手写到之后的重构成开源工作流框架Activ...

清茶的博客 1万+

activiti7从入门到开发

Workflow(工作流)是指一种自动化的、有序的、可重复的业务流程,它可以根据预定义的规则和条件自动化地管理、执行和跟踪任务的执行情况。工作流通常由多个环节组成,每个环节都有特定的任务和规则,任务的完成情况和执行结果会影响后续环节的执行。工作流可以帮助企业实现业务流程的自动化、标准化和优化,从而提高工作效率和质量,降低成本和风险。工作流的实现需要使用工作流引擎,工作流引擎是一种软件系统,它可以自动化地处理和管理工作流中的各个环节,包括流程定义、流程执行、流程控制和流程监控等多个方面。

ylldzz的博客 1834

(三)Activiti7 之新手入门

相当于一个门面接口,通过ProcessEngineConfiguration创建processEngine,通过ProcessEngine创建各个service接口,具体代码逻辑由 ProcessEngineImpl.class 实现。activiti的引擎配置文件,包括:ProcessEngineConfiguration的定义、数据源定义、事务管理器等。此文件其实就是一个spring配置文件。Activiti 流程框架有一套自己的数据库表,一共25张表,通过这些表从而实现流程管理。

勿在浮沙柱筑高台 2724

Activiti入门及案例

activiti是一个工作流引擎,可以将业务系统中复杂的业务流程抽取出来,使用专门的建模语言BPMN进行定义,业务流程按照预先定义的流程进行执行。实现了系统的流程由activiti进行管理,减少业务系统由于流程变更进行系统升级改造的工作流量,从而提高系统的健壮性,同时也减少了系统开发维护成本。官方网站:https://www.activiti.org。

小小唐僧的博客 2674

Activiti入门基础

一、Activiti入门 在本章内容中,我们来创建一个Activiti工作流,并启动这个流程。 创建Activiti工作流主要包含以下几步: 1、定义流程,按照BPMN的规范,使用流程定义工具,用流程符号把整个流程描述出来 2、部署流程,把画好的流程定义文件,加载到数据库中,生成表的数据 3、启动流程,使用java代码来操作数据库表中的内容 1 流程符号 BPMN 2.0是业务流程建模符号2.0的缩写。 它由Business Process Management Initiative这个非营利协会创建并不断

ZgaoYi的博客 1061

Activiti7工作流引擎-Activiti入门体验

第5章 Activiti 入门体验 5.1 流程定义 5.1.1 Activiti-Designer 使用 5.1.1.1 Palette(画板) 在 eclipse 或 idea 中安装 activiti-designer 插件即可使用,画板中包括以下结点: Connection—连接 Event—事件 Task—任务 Gateway—网关 Container—容器 Boundary event...

逍遥云恋 1035
上一篇: 设计模式之观察者模式与责任链模式实例
下一篇: 从坐标到象限的直接计算公式
learnanddeath
博客等级 码龄9年 16粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值