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

相关文章

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(原子性、一致性、隔离性、持久性)事务的存储引擎。行级锁:使用行级锁来提高并发性,减少锁竞争

嵌入式方向的毕业生,找工作很迷茫

一个应届硕士生的问题: 虽然我明白想成为技术大牛需要日积月累的磨练,但我总感觉自己学习方法或者哪些方面有问题,时间一天天过去,自己也每天不停学习,但总感觉自己没有想象中那样进步,总感觉找不到一个很清晰的学习规划……眼看 9 月份就要参加秋招了,我想毕业了去大城市磨练几年,涨涨见识,拓开眼界多学点东西。但是感觉自己的实力还是很不够,内心慌得不行,总怕浪费了这人生唯一的校招机会,当然我也明白,毕业

husky 工具配置代码检查工作流:提交代码至仓库前做代码检查

提示:这篇博客以我前两篇博客作为先修知识,请大家先去看看我前两篇博客 博客指路:前端 ESlint 代码规范及修复代码规范错误-CSDN博客前端 Vue3 项目开发—— ESLint & prettier 配置代码风格-CSDN博客 husky 工具配置代码检查工作流的作用 在工作中,我们经常需要将写好的代码提交至代码仓库 但是由于程序员疏忽而将不规范的代码提交至仓库,显然是不合理的 所

未来工作趋势:零工小程序在共享经济中的作用

经济在不断发展的同时,科技也在飞速发展。零工经济作为一种新兴的工作模式,正在全球范围内迅速崛起。特别是在中国,随着数字经济的蓬勃发展和共享经济模式的深入推广,零工小程序在促进就业、提升资源利用效率方面显示出了巨大的潜力和价值。 一、零工经济的定义及现状 零工经济是指通过临时性、自由职业或项目制的工作形式,利用互联网平台快速匹配供需双方的新型经济模式。这种模式打破了传统全职工作的界限,为劳动

Smarty模板引擎工作机制(一)

深入浅出Smarty模板引擎工作机制,我们将对比使用smarty模板引擎和没使用smarty模板引擎的两种开发方式的区别,并动手开发一个自己的模板引擎,以便加深对smarty模板引擎工作机制的理解。 在没有使用Smarty模板引擎的情况下,我们都是将PHP程序和网页模板合在一起编辑的,好比下面的源代码: <?php$title="深处浅出之Smarty模板引擎工作机制";$content=

浙大数据结构:树的定义与操作

四种遍历 #include<iostream>#include<queue>using namespace std;typedef struct treenode *BinTree;typedef BinTree position;typedef int ElementType;struct treenode{ElementType data;BinTree left;BinTre

3.比 HTTP 更安全的 HTTPS(工作原理理解、非对称加密理解、证书理解)

所谓的协议 协议只是一种规则,你不按规则来就无法和目标方进行你的工作 协议说白了只是人定的规则,任何人都可以定协议 我们不需要太了解细节,这些制定和完善协议的人去做的,我们只需要知道协议的一个大概 HTTPS 协议 1、概述 HTTPS(Hypertext Transfer Protocol Secure)是一种安全的超文本传输协议,主要用于在客户端和服务器之间安全地传输数据

类和对象的定义和调用演示(C++)

我习惯把类的定义放在头文件中 Student.h #define _CRT_SECURE_NO_WARNINGS#include <string>using namespace std;class student{public:char m_name[25];int m_age;int m_score;char* get_name(){return m_name;}int set_name