卸载JBoss工作流引擎Jbpm的工作流定义

2023-11-29 03:08

本文主要是介绍卸载JBoss工作流引擎Jbpm的工作流定义,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

卸载 JBoss 工作流引擎 Jbpm 的工作流定义
上次写了一个部署Jboss的工作流引擎Jbpm的工作流定义的助手类,并写了一篇文章 《编程方式部署jBPM工作流》。有部署,就必然要有卸载。今天,我又写了一个卸载Jbpm工作流定义及其相关实例的助手类。下面是源代码:
接口:
package com.withub.common.util;
public interface IUninstallProcessDefinition {
    /**
      * 删除给定 业务程序定义 名称的 所有版本的业务程序定义,以及业务程序实例
      * @param name
      */
    public abstract void uninstallJbpmProcessDefinitionsTransaction(String name);
    /**
      * 删除给定版本的业务程序定义及其所有实例。
      * @param name
      * @param version
      */
    public abstract void uninstallJbpmProcessDefinitionTransaction(String name,
           int version);
    /**
      * 删除最新版本的业务程序定义及其实例。
      * @param name
      */
    public abstract void uninstallLatestJbpmProcessDefinitionTransaction(
           String name);
}
实现类:
/**
*
*/
package com.withub.common.util;
import java.util.Iterator;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jbpm.JbpmConfiguration;
import org.jbpm.JbpmContext;
import org.jbpm.db.GraphSession;
import org.jbpm.graph.def.ProcessDefinition;
/**
* @author 沈东良 shendl_s@hotmail.com
* 10:50:42 AM
* 这个类,用来卸载已部署的业务程序定义
* *Transaction 这样命名的方法名,表示可以直接在前台调用。已经处理了事务和数据库连接。
*
* *Service 是助手方法。 可以被任意调用。
*
* *Dao 是使用数据库、事务的Service助手方法。 不能直接被前台调用。
* 否则,会出现数据库连接、事务未创建和管理的问题。 数据库访问和事务处理可能会失败。
*/
public class UninstallJbpmProcessDefinition implements IUninstallProcessDefinition {
private Log log=LogFactory.getLog(this.getClass());
private static IUninstallProcessDefinition instance;
public static IUninstallProcessDefinition getInstance(){
if(UninstallJbpmProcessDefinition.instance==null){
UninstallJbpmProcessDefinition.instance=new UninstallJbpmProcessDefinition();
}
return UninstallJbpmProcessDefinition.instance;
}
/* (non-Javadoc)
* @see com.withub.common.util.IUninstallProcessDefinition#uninstallJbpmProcessDefinitionsTransaction(java.lang.String)
*/
public void uninstallJbpmProcessDefinitionsTransaction(String name){
JbpmContext jbpmContext = JbpmConfiguration.getInstance().createJbpmContext();
try {
this.uninstallJbpmProcessDefinitionsDao(name);
}finally{
jbpmContext.close();
}
}
/**
*
* @param name
*/
private void uninstallJbpmProcessDefinitionsDao(String name){
JbpmContext jbpmContext = JbpmConfiguration.getInstance().getCurrentJbpmContext();
GraphSession graphSession=jbpmContext.getGraphSession();
List processDefinitions=graphSession.findAllProcessDefinitionVersions(name);
if(processDefinitions!=null){
Iterator iterator=processDefinitions.iterator();
while(iterator.hasNext()){
graphSession.deleteProcessDefinition((ProcessDefinition)iterator.next());
}
}
log.info("卸载工作流:"+name);
}
/* (non-Javadoc)
* @see com.withub.common.util.IUninstallProcessDefinition#uninstallJbpmProcessDefinitionTransaction(java.lang.String, int)
*/
public void uninstallJbpmProcessDefinitionTransaction(String name,int version){
JbpmContext jbpmContext = JbpmConfiguration.getInstance().createJbpmContext();
try {
this.uninstallJbpmProcessDefinitionDao(name, version);
}finally{
jbpmContext.close();
}
}
private void uninstallJbpmProcessDefinitionDao(String name,int version){
JbpmContext jbpmContext = JbpmConfiguration.getInstance().getCurrentJbpmContext();
GraphSession graphSession=jbpmContext.getGraphSession();
graphSession.deleteProcessDefinition(graphSession.findProcessDefinition(name, version));
log.info("卸载工作流:"+name+"第"+new Integer(version)+"版");
}
/* (non-Javadoc)
* @see com.withub.common.util.IUninstallProcessDefinition#uninstallLatestJbpmProcessDefinitionTransaction(java.lang.String)
*/
public void uninstallLatestJbpmProcessDefinitionTransaction(String name){
JbpmContext jbpmContext = JbpmConfiguration.getInstance().createJbpmContext();
try {
this.uninstallLatestJbpmProcessDefinitionDao(name);
}finally{
jbpmContext.close();
}
}
/**
*
* @param name
*/
private void uninstallLatestJbpmProcessDefinitionDao(String name){
JbpmContext jbpmContext = JbpmConfiguration.getInstance().getCurrentJbpmContext();
GraphSession graphSession=jbpmContext.getGraphSession();
ProcessDefinition processDefinition=graphSession.findLatestProcessDefinition(name);
graphSession.deleteProcessDefinition(processDefinition);
log.info("卸载工作流最新版:"+name);
}
/**
* @param args
* 测试
*/
public static void main(String[] args) {
/**
*1,一个参数,全部
*2,二个参数 名字,latest 最新版本
*                版本号
*/
IUninstallProcessDefinition uninstallJbpmProcessDefinition=UninstallJbpmProcessDefinition.getInstance();
if(args.length==1){
uninstallJbpmProcessDefinition.uninstallJbpmProcessDefinitionsTransaction(args[0]);
}else if(args.length==2){
if(args[1].equalsIgnoreCase("latest")){
uninstallJbpmProcessDefinition.uninstallLatestJbpmProcessDefinitionTransaction(args[0]);
}else{
uninstallJbpmProcessDefinition.uninstallJbpmProcessDefinitionTransaction(args[0], Integer.parseInt(args[1]));
}
}else{
throw new RuntimeException("参数数目不正确! 参数:1,一个参数,提供要卸载的工作流的名称; 2,两个参数,第一个是要卸载的最新版本的工作流名称,第二个参数是latest; 3,两个参数," +
"第一个是要卸载的工作流名称,第二个参数是要修改的工作流的版本号。");
}
}
}

这篇关于卸载JBoss工作流引擎Jbpm的工作流定义的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/431219

相关文章

MySQL之InnoDB存储引擎中的索引用法及说明

《MySQL之InnoDB存储引擎中的索引用法及说明》:本文主要介绍MySQL之InnoDB存储引擎中的索引用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录1、背景2、准备3、正篇【1】存储用户记录的数据页【2】存储目录项记录的数据页【3】聚簇索引【4】二

SpringBoot集成LiteFlow工作流引擎的完整指南

《SpringBoot集成LiteFlow工作流引擎的完整指南》LiteFlow作为一款国产轻量级规则引擎/流程引擎,以其零学习成本、高可扩展性和极致性能成为微服务架构下的理想选择,本文将详细讲解Sp... 目录一、LiteFlow核心优势二、SpringBoot集成实战三、高级特性应用1. 异步并行执行2

如何在Mac上彻底删除Edge账户? 手动卸载Edge浏览器并清理残留文件技巧

《如何在Mac上彻底删除Edge账户?手动卸载Edge浏览器并清理残留文件技巧》Mac上的Edge账户里存了不少网站密码和个人信息,结果同事一不小心打开了,简直尴尬到爆炸,想要卸载edge浏览器并清... 如果你遇到 Microsoft Edge 浏览器运行迟缓、频繁崩溃或网页加载异常等问题,可以尝试多种方

Spring @Scheduled注解及工作原理

《Spring@Scheduled注解及工作原理》Spring的@Scheduled注解用于标记定时任务,无需额外库,需配置@EnableScheduling,设置fixedRate、fixedDe... 目录1.@Scheduled注解定义2.配置 @Scheduled2.1 开启定时任务支持2.2 创建

Mac系统下卸载JAVA和JDK的步骤

《Mac系统下卸载JAVA和JDK的步骤》JDK是Java语言的软件开发工具包,它提供了开发和运行Java应用程序所需的工具、库和资源,:本文主要介绍Mac系统下卸载JAVA和JDK的相关资料,需... 目录1. 卸载系统自带的 Java 版本检查当前 Java 版本通过命令卸载系统 Java2. 卸载自定

CSS Anchor Positioning重新定义锚点定位的时代来临(最新推荐)

《CSSAnchorPositioning重新定义锚点定位的时代来临(最新推荐)》CSSAnchorPositioning是一项仍在草案中的新特性,由Chrome125开始提供原生支持需... 目录 css Anchor Positioning:重新定义「锚定定位」的时代来了! 什么是 Anchor Pos

SpringBoot整合Flowable实现工作流的详细流程

《SpringBoot整合Flowable实现工作流的详细流程》Flowable是一个使用Java编写的轻量级业务流程引擎,Flowable流程引擎可用于部署BPMN2.0流程定义,创建这些流程定义的... 目录1、流程引擎介绍2、创建项目3、画流程图4、开发接口4.1 Java 类梳理4.2 查看流程图4

Python UV安装、升级、卸载详细步骤记录

《PythonUV安装、升级、卸载详细步骤记录》:本文主要介绍PythonUV安装、升级、卸载的详细步骤,uv是Astral推出的下一代Python包与项目管理器,主打单一可执行文件、极致性能... 目录安装检查升级设置自动补全卸载UV 命令总结 官方文档详见:https://docs.astral.sh/

LiteFlow轻量级工作流引擎使用示例详解

《LiteFlow轻量级工作流引擎使用示例详解》:本文主要介绍LiteFlow是一个灵活、简洁且轻量的工作流引擎,适合用于中小型项目和微服务架构中的流程编排,本文给大家介绍LiteFlow轻量级工... 目录1. LiteFlow 主要特点2. 工作流定义方式3. LiteFlow 流程示例4. LiteF

SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程

《SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程》LiteFlow是一款专注于逻辑驱动流程编排的轻量级框架,它以组件化方式快速构建和执行业务流程,有效解耦复杂业务逻辑,下面给大... 目录一、基础概念1.1 组件(Component)1.2 规则(Rule)1.3 上下文(Conte