卸载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

相关文章

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

Linux卸载自带jdk并安装新jdk版本的图文教程

《Linux卸载自带jdk并安装新jdk版本的图文教程》在Linux系统中,有时需要卸载预装的OpenJDK并安装特定版本的JDK,例如JDK1.8,所以本文给大家详细介绍了Linux卸载自带jdk并... 目录Ⅰ、卸载自带jdkⅡ、安装新版jdkⅠ、卸载自带jdk1、输入命令查看旧jdkrpm -qa

kotlin中的模块化结构组件及工作原理

《kotlin中的模块化结构组件及工作原理》本文介绍了Kotlin中模块化结构组件,包括ViewModel、LiveData、Room和Navigation的工作原理和基础使用,本文通过实例代码给大家... 目录ViewModel 工作原理LiveData 工作原理Room 工作原理Navigation 工

MySQL常见的存储引擎和区别说明

《MySQL常见的存储引擎和区别说明》MySQL支持多种存储引擎,如InnoDB、MyISAM、MEMORY、Archive、CSV和Blackhole,每种引擎有其特点和适用场景,选择存储引擎时需根... 目录mysql常见的存储引擎和区别说明1. InnoDB2. MyISAM3. MEMORY4. A

MySQL InnoDB引擎ibdata文件损坏/删除后使用frm和ibd文件恢复数据

《MySQLInnoDB引擎ibdata文件损坏/删除后使用frm和ibd文件恢复数据》mysql的ibdata文件被误删、被恶意修改,没有从库和备份数据的情况下的数据恢复,不能保证数据库所有表数据... 参考:mysql Innodb表空间卸载、迁移、装载的使用方法注意!此方法只适用于innodb_fi

SSID究竟是什么? WiFi网络名称及工作方式解析

《SSID究竟是什么?WiFi网络名称及工作方式解析》SID可以看作是无线网络的名称,类似于有线网络中的网络名称或者路由器的名称,在无线网络中,设备通过SSID来识别和连接到特定的无线网络... 当提到 Wi-Fi 网络时,就避不开「SSID」这个术语。简单来说,SSID 就是 Wi-Fi 网络的名称。比如

Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)

《Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)》:本文主要介绍Python基于火山引擎豆包大模型搭建QQ机器人详细的相关资料,包括开通模型、配置APIKEY鉴权和SD... 目录豆包大模型概述开通模型付费安装 SDK 环境配置 API KEY 鉴权Ark 模型接口Prompt

Spring 源码解读:自定义实现Bean定义的注册与解析

引言 在Spring框架中,Bean的注册与解析是整个依赖注入流程的核心步骤。通过Bean定义,Spring容器知道如何创建、配置和管理每个Bean实例。本篇文章将通过实现一个简化版的Bean定义注册与解析机制,帮助你理解Spring框架背后的设计逻辑。我们还将对比Spring中的BeanDefinition和BeanDefinitionRegistry,以全面掌握Bean注册和解析的核心原理。

工作常用指令与快捷键

Git提交代码 git fetch  git add .  git commit -m “desc”  git pull  git push Git查看当前分支 git symbolic-ref --short -q HEAD Git创建新的分支并切换 git checkout -b XXXXXXXXXXXXXX git push origin XXXXXXXXXXXXXX

速了解MySQL 数据库不同存储引擎

快速了解MySQL 数据库不同存储引擎 MySQL 提供了多种存储引擎,每种存储引擎都有其特定的特性和适用场景。了解这些存储引擎的特性,有助于在设计数据库时做出合理的选择。以下是 MySQL 中几种常用存储引擎的详细介绍。 1. InnoDB 特点: 事务支持:InnoDB 是一个支持 ACID(原子性、一致性、隔离性、持久性)事务的存储引擎。行级锁:使用行级锁来提高并发性,减少锁竞争