activiti 流程定义部署及查询

Activiti流程定义部署 实际开发中,流程定义是非常重要的一部分,现在我给大家带来流程定义的部署 一、首先,我们需要创建一个Activiti项目 二、加入我们的activiti配置文件具体代码如下 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schem 阅读详情
package com.mycom.processDefinition;

import java.io.InputStream;
import java.util.List;
import java.util.zip.ZipInputStream;

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.repository.ProcessDefinition;
import org.junit.Test;

public class ProcessDefinitionTest {

    ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
	
    @Autowired
    private RepositoryService repositoryService;
/**
     * 根据modelId部署模型
     * @param modelId
     * @param response
     * @param request
     * @return
     */
    @RequestMapping("/deploy")
    @ResponseBody
    public Map deploy(final String modelId, HttpServletResponse response,final HttpServletRequest request) {
        OperateTemplete templete = new HttpTemplete(request) {
            protected void doSomething() throws BizException {
                JSONObject result = new JSONObject();
                try {
                    Model modelData = repositoryService.getModel(modelId);
                    ObjectNode modelNode = (ObjectNode) new ObjectMapper().readTree(repositoryService.getModelEditorSource(modelData.getId()));
                    byte[] bpmnBytes = null;
                    BpmnModel model = new BpmnJsonConverter().convertToBpmnModel(modelNode);
                    bpmnBytes = new BpmnXMLConverter().convertToXML(model);
                    String processName = modelData.getName() + ".bpmn20.xml";
                    DeploymentBuilder db = repositoryService.createDeployment().name(modelData.getName());
                    Deployment deployment = db.addString(processName, new String(bpmnBytes,"utf-8")).deploy();
                } catch (Exception e) {
                    e.printStackTrace();
                    throw new BizException("部署失败");
                }
            }
        };
        return templete.operate();
    }
    
    /*
     *部署流程定义 (从classpath)
     */
    @Test
    public void deploymentProcessDefinition_classpath(){
        Deployment deployment = processEngine.getRepositoryService()//与流程定义和部署对象相关的Service
                        .createDeployment()//创建一个部署对象
                        .name("流程定义")//添加部署名称
                        .addClasspathResource("diagrams/HelloWorld.bpmn")//从classpath的资源中加载,一次只能加载一个文件
                        .addClasspathResource("diagrams/HelloWorld.png")
                        .deploy();//完成部署
        System.out.println("部署ID:"+deployment.getId());
        System.out.println("部署名称:"+deployment.getName());
        
    }
    
    /*
     *部署流程定义 (从zip)
     */
    @Test
    public void deploymentProcessDefinition_zip(){
        InputStream in = this.getClass().getClassLoader().getResourceAsStream("diagrams/HelloWorld.zip");
        ZipInputStream zipInputStream = new ZipInputStream(in);
        Deployment deployment = processEngine.getRepositoryService()//与流程定义和部署对象相关的Service
                        .createDeployment()//创建一个部署对象
                        .name("流程定义")//添加部署名称
                        .addZipInputStream(zipInputStream)//完成zip文件的部署
                        .deploy();//完成部署
        System.out.println("部署ID:"+deployment.getId());
        System.out.println("部署名称:"+deployment.getName());
        
    }
    
    /*
     * 查询流程定义
     */
    @Test
    public void findProcessDefinition(){
        List<ProcessDefinition> list = processEngine.getRepositoryService()//与流程定义和部署对象相关的Service
                        .createProcessDefinitionQuery()//创建一个流程定义查询
                        /*指定查询条件,where条件*/
                        //.deploymentId(deploymentId)//使用部署对象ID查询
                        //.processDefinitionId(processDefinitionId)//使用流程定义ID查询
                        //.processDefinitionKey(processDefinitionKey)//使用流程定义的KEY查询
                        //.processDefinitionNameLike(processDefinitionNameLike)//使用流程定义的名称模糊查询
                        
                        /*排序*/
                        .orderByProcessDefinitionVersion().asc()//按照版本的升序排列
                        //.orderByProcessDefinitionName().desc()//按照流程定义的名称降序排列
                        
                        .list();//返回一个集合列表,封装流程定义
                        //.singleResult();//返回唯一结果集
                        //.count();//返回结果集数量
                        //.listPage(firstResult, maxResults)//分页查询
        
        if(list != null && list.size()>0){
            for(ProcessDefinition processDefinition:list){
                System.out.println("流程定义ID:"+processDefinition.getId());//流程定义的key+版本+随机生成数
                System.out.println("流程定义名称:"+processDefinition.getName());//对应HelloWorld.bpmn文件中的name属性值
                System.out.println("流程定义的key:"+processDefinition.getKey());//对应HelloWorld.bpmn文件中的id属性值
                System.out.println("流程定义的版本:"+processDefinition.getVersion());//当流程定义的key值相同的情况下,版本升级,默认从1开始
                System.out.println("资源名称bpmn文件:"+processDefinition.getResourceName());
                System.out.println("资源名称png文件:"+processDefinition.getDiagramResourceName());
                System.out.println("部署对象ID:"+processDefinition.getDeploymentId());
                System.out.println("################################");
            }
        }
        
    }
    
}

相关的表:

select * from act_re_model;#模型表

SELECT * FROM activiti.act_re_deployment a; #部署对象表

 SELECT * FROM activiti.act_re_procdef a; #流程定义表

 SELECT * FROM activiti.act_ge_bytearray a;# 资源文件表

 

SELECT * FROM activiti.act_ge_property a; #主键生成策略表

Activiti7 查询流程【六】 我们可以通过RepositoryService来查询已经部署的流程信息以及流程定义信息。10、Activiti7 查询流程部署和流程定义数据。 阅读详情

相关推荐

华为手环实时心率数据导出到UWP项目中

hello大家好呀O(∩_∩)O最近在做毕设 其中有个小功能要用到实时心率数据。查找网上的资料发现只有小米手环的实时心率数据导出但是没有华为手环的,我试了华为手环但是并不能行得通哈哈哈。现在分享一下华为手环实时心率数据导出的代码。

apple_63713858的博客 1581

activiti的成功部署之路

activiti 部署之路activiti 部署(idea)前言一、activiti是什么?为什么要用它?二、使用步骤1.idea加入actiBPM插件2.导入activiti需要的pom依赖3.使用actiBPM画流程图4.设置activiti表资源5.配置java代码 activiti 部署(idea) 文章目录activiti 部署(idea)前言一、activiti是什么?为什么要用它?二、使用步骤1.idea加入actiBPM插件2.导入activiti需要的pom依赖3.使用actiBPM画流程

HLiMr的博客 1418

论文地图合规求生指南:5分钟搞定标准地图服务转ArcGIS可用矢量文件

本文提供了一份论文地图合规求生指南,帮助非GIS专业背景的科研人员在5分钟内将标准地图服务的EPS文件转换为ArcGIS兼容的矢量文件。通过详细的工作流程和关键参数设置,确保地图完全符合国家规范,同时节省时间成本。重点关注标准地图服务的合规性和Shapefile转换技巧,适用于紧急情况下的论文地图处理。

weixin_34233974的博客 402

工作流系列之Activiti部署

         经过多年的发展,Activiti已经成为一个较为成熟的工作流引擎,作为一个开源的工作流引擎,它在工作流领域吸引了众多开发者的目光,在当前的工作流框架角逐中,慢慢成为众多企业的首选。本文将以Activiti6.0版本为基础,简单讲解Activiti开发环境(流程设计器,流程管理工具以及数据库)的搭建等内容。 前提准备             在进行Activit部署之前,需要安...

PorryLee 1680

CANOE DIVA 工程怎样在具体服务前增加前置条件

然后会在CANoe的Test Module视窗中发现一个跟系统条件相关的Test Module模块,在该模块中有生成跟系统条件相关的CAPL 脚本。这里需要根据你的实际项目进行更改,diva工程加载到canoe的工程的时候,会同步加入你创建的cdd文件,这里示例的ABS_ESP 就是你的cdd的ECU命名,后面就是具体的前置条件服务。4、配置完成后,测试用例就会如下图Trace窗口所示,在每一次10 02请求之前都会调用CAPL Function的PreconditionCheck函数中定义的脚本。

weixin_45940007的博客 1966

告别IMEI!手把手教你用UUID实现Android设备唯一标识(兼容Android 10-13)

本文详细探讨了在Android 10及以上版本中,如何构建合规且高可用的设备唯一标识方案以替代被限制访问的IMEI。文章深入分析了Android设备标识符的演变,并提供了基于UUID/GUID的完整实现策略,包括生成算法、多级持久化存储方案(如MediaStore)、权限处理以及版本兼容性实践,帮助开发者应对Android 10-13的隐私政策变化。

weixin_28339967的博客 574

Activiti入门之流程定义部署

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

m0_63837020的博客 1680

Halcon手眼标定保姆级教程:从‘眼在手上’到‘眼到手’两种模式全解析(附代码)

本文详细解析Halcon在机器人视觉引导中的手眼标定技术,涵盖Eye-in-Hand和Eye-to-Hand两种模式,提供从硬件准备到实战代码的完整解决方案。通过精确的相机标定和坐标转换,帮助实现工业自动化中机械臂与视觉系统的高精度协同作业。

weixin_42544461的博客 209

Activiti 学习(二)—— Activiti 流程定义和部署

概述 在这一节,我们将创建一个 Activit 工作流,并启动这个流程,主要包含以下几个步骤: 定义流程,按照 BPMN 的规范,使用流程定义工具,用流程符号把整个流程描述出来 部署流程,把画好的流程定义文件,加载到数据库中,生成表的数据 流程设计器的使用 在 resources 目录下创建一个 bpmn 目录,用来存放流程定义文件。选中 bpmn 目录,点击菜单 New -> New Activity 6.x BPMN 2.x file,创建一个 *.bpmn20.xml。选中该文件.

低吟不作语的博客 7210

3D高斯溅射融合Gabor滤波器:频率感知如何提升神经渲染效率与质量

在计算机视觉与图形学领域,3D场景重建旨在从多视角图像中恢复真实世界的三维结构与外观。其核心原理是通过优化场景表示,使渲染出的二维图像与输入照片尽可能一致。传统方法在效率与细节保真度间常面临权衡,高频细节(如精细纹理、锐利边缘)的重建尤为消耗算力。频率感知技术为此提供了突破方向,它借鉴信号处理思想,将场景分解为不同空间频率的成分进行针对性建模。Gabor滤波器作为经典的频率-方向分析工具,能有效刻画纹理的局部频域特征。将Gabor的频率选择性与3D高斯溅射(3DGS)这一高效显式表示结合,构成了神经Gabo

weixin_33087827的博客 272

全志A133的AndroidSDK

本小节来学习如何下载全志安卓SDK,SDK的目录,编译和烧录提示:以下是本篇文章正文内容,下面案例可供参考以上就是整个SDK的目录和编译烧录,目的在于让初学者快速了解整个源码的目录和编译出镜像喜欢就订阅吧。

qq_24093081的博客 4054

Activiti6自学之路(五)—— 部署流程资源的四种方式及数据库表更新情况

部署流程资源有很多种方法,包括classpath、InputStream、字符串、zip格式压缩包 1.classpath方式 读取processes路径下制定名称的流程图,注意一次只能加载一个资源文件 2.InputStream方式 使用InputStream方式部署流程资源需要传入一个输入流及资源的名称,输入流的来源不限,可以从classpath读取,也可以从一个绝对路径文件读取,也可以是从...

互联网叫兽 1万+

LVGL misc timer 定时器(lv_timer.c)

定时器机制是LVGL中非常重要的一项功能,它承载了LVGL的延时任务执行,周期任务执行,时序任务执行等,可以说理解定时器的设计就一定程度上理解发LVGL的任务调度机制。

Bigan(安)的博客 4730

4、Activiti- 查询流程定义/部署相关信息

查询流程定义或流程定义相关信息的处理方式

我姓谭却弹不死你的博客 283

IEM模型,地表粗糙度模拟

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

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

activiti部署流程定义文件后无法查询到流程信息原因

      初学activiti,在参考编写流程定义文件后,部署到activiti后,根据流程名称查询流程信息,始终报错: org.activiti.engine.ActivitiObjectNotFoundException: no processes deployed with key 'helloword' at org.activiti.engine.impl.persistenc...

筱筱 2865

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

activiti7-2-流程定义、实例、任务查询、任务处理、压缩部署、定义查询、定义删除、定义资源查询、历史信息查询

我是一个目录1.流程定义1.1 绘制流程图1.2 简单介绍API和原理机制1.2.1 API1.2.2 原理机制1.3 流程定义部署测试类1.4 分析影响的表2. 流程实例2.1 启动流程实例2.2 分析影响的表3. 任务查询4. 任务处理5.压缩包方式进行流程部署6.流程定义的查询7.流程定义的删除8. 流程定义资源查询8.1 需求:8.2 技术方案:9.流程历史信息的查询 上篇介绍如何搭建activiti7的环境,这篇介绍流程定义和实例及其部署相关操作 如果需要回忆的,请移步 环境准备 1.流程定义

不断行走的菜鸟的博客 1534

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

(四)Activiti之流程定义部署之ZIP方式和流程定义查询

Activiti之第一个程序以及Activiti插件的使用和Activiti表的解释目录概 述流程定义ZIp部署:`在这里插入代码片`执行测试用例并查看结果:相关工具如下:1.2  流程定义查询分析:小结:参考资料和推荐阅读 LD is tigger forever,CG are not brothers forever, throw the pot and shine forever. Modesty is not false, solid is not naive, treacherous but

专注Java(全栈)应用开发,求知若渴,虚心若愚,talk is cheap, show me the code. 267

Activiti查询流程定义信息、删除已经部署的流程定义

import org.activiti.engine.ProcessEngine; import org.activiti.engine.ProcessEngines; import org.activiti.engine.RepositoryService; import org.activiti.engine.repository.ProcessDefinition; import org.activiti.engine.repository.ProcessDefinitionQuery; impor

可控的事情要谨慎,不可控的事情要乐观。 786

activiti学习--04流程定义:流程定义组成+部署流程定义+查询流程定义+删除流程定义+删除流程定义+查询最新版本的流程定+查询最新版本的流程定义

Deployment 部署对象1、一次部署的多个文件的信息。对于不需要的流程可以删除和修改。 修改的的意思是重新部署,原有的流程继续走,走完就走新的流程,新的流程一部署,新人就走新流程,相同流程(key)通过版本来控制。 2、对应的表: act_re_deployment:部署对象表 act_re_procdef:流程定义表 act_ge_bytearray:资源文件表 act_

zhou920786312的博客 1456

Activiti工作流学习笔记入门(三)——流程定义的部署、查询、删除、不能修改

更详细的介绍:http://blog.java1234.com/blog/articles/84.html   1.流程定义的部署(两种方式) package com.java1234.activiti.procdef; import java.io.InputStream; import java.util.zip.ZipInputStream; import org.activit...

weixin_39941298的博客 494

activiti 部署流程定义(InputStream) 流程变量设置 及获取流程变量、查询流程变量历史表

ProcessEngine processEngine=ProcessEngines.getDefaultProcessEngine(); /** * 部署流程定义(InputStream) */ @Test public void depolymentProcessDefinition_inputStream(){ InputStream  bpmn=this.getClas

mchgogo的博客 1609

activiti学习--04流程定义:流程定义组成+部署流程定义+查询流程定义+删除流程定义+删除流程定义+查询最新版本的流程定+查询最新版本的流程定义...

Deployment 部署对象 1、一次部署的多个文件的信息。对于不需要的流程可以删除和修改。 修改的的意思是重新部署,原有的流程继续走,走完就走新的流程,新的流程一部署,新人就走新流程,相同流程(key)通过版本来控制。 2、对应的表: act_re_deployment:部署对象表 act_re_procdef:流程定义表 act_ge_...

weixin_33819479的博客 331

Activiti流程定义部署、删除以及查看流程图片

方法2:public void deployZIP() throws Exception { // 获取仓库服务 RepositoryService repositoryService = processEngine.getRepositoryService(); // 创建发布配置对象 DeploymentBuilder builder = repositoryService.creat...

水目落霖博客 2899

四、Activiti 部署的三种方式与部署查询流程查询源码

Activiti 部署的三种方式 与 部署查询流程查询 /** * pdManager=process definition manager 流程定义管理 * @author zd * 流程定义: * 1、*.bpmn和*.png叫做流程定义文档 * png是为了显示图片的 * bpmn是为了结构化的描述流程定义 * 2、有ke

HJWZYY 2167

activiti 流程定义(二)

import java.io.File; import java.io.IOException; import java.io.InputStream; import java.util.List; import java.util.zip.ZipInputStream; import org.activiti.engine.ProcessEngine; import org.activiti.

hichinamobile的博客 907
上一篇: activiti explorer工作流创建及使用
下一篇: activiti根据流程实例id查询资源文件(xml、image)
chen_lay
博客等级 码龄12年 44粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值