首页编程jbpm工作流,如何以编程方式部署jBPM工作流

jbpm工作流,如何以编程方式部署jBPM工作流

编程之家2023-11-0398次浏览

各位老铁们好,相信很多人对jbpm工作流都不是特别的了解,因此呢,今天就来为大家分享下关于jbpm工作流以及如何以编程方式部署jBPM工作流的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

jbpm工作流,如何以编程方式部署jBPM工作流

如何以编程方式部署jBPM工作流

您好,很高兴为您解答。

一、Ant文件发布方式

二、Eclipse图形设计器直接部署

三、编程方式部署Jbpm业务程序

编程方式部署Jbpm工作流定义

一、基本知识

jbpm工作流,如何以编程方式部署jBPM工作流

1,JUnit测试和执行main方法,实际上是classpath目标目录下的.class文件的运行。查找资源文件,也是从classpath开始的。

2,我们的Web项目应用程序,classpath是web-inf/classes。我们的业务程序定义文件所在目录processes设为src目录。所以,路径应该是“业务程序定义名字/processdefinition.xml”。

这里,我的业务程序定义的名字是checkShowNews,所以classpath的路径应该是checkShowNews/processdefinition.xml。

二、部署业务程序定义的工具类

下面是这个类的源文件,可以通过Main方法和Junit测试部署业务程序定义。

以下是引用片段:

jbpm工作流,如何以编程方式部署jBPM工作流

/**

*

*/

packagecom.withub.common.util;

importorg.jbpm.JbpmConfiguration;

importorg.jbpm.JbpmContext;

importorg.jbpm.graph.def.ProcessDefinition;

importjunit.framework.TestCase;

/**

*@author沈东良shendl_s@hotmail.com

*7:21:19PM

*DeployJbpmProcessDefinition类,提供了部署JBpm工作流定义到数据库的功能!

*/

publicclassDeployJbpmProcessDefinitionextendsTestCase{

staticJbpmConfigurationjbpmConfiguration=null;

static{

jbpmConfiguration=JbpmConfiguration.getInstance();

}

publicvoidsetUp(){

//创建数据库表

//jbpmConfiguration.createSchema();

}

publicvoidtearDown(){

//删除数据库表

//jbpmConfiguration.dropSchema();

}

/**

*测试方法

*

*/

publicvoidtestSimplePersistence(){

//Betweenthe3methodcallsbelow,alldataispassedviathe

//database.Here,inthisunittest,these3methodsareexecuted

//rightaftereachotherbecausewewanttotestacompleteprocess

//scenario情节.Butinreality,thesemethodsrepresentdifferent

//requeststoaserver.

//Sincewestartwithaclean,emptyin-memorydatabase,wehaveto

//deploytheprocessfirst.Inreality,thisisdoneoncebythe

//processdeveloper.

/**

*这个方法把业务处理定义通过Hibernate保存到数据库中。

*/

deployProcessDefinition("checkShowNews/processdefinition.xml");

}

/*

<process-definition

xmlns=""name="checkShowNews">

<swimlanename="CheckNewsManagers">

<assignmentclass="com.withub.wcms.manage.publishNews.jbpmHandler.assignmentHandler.CheckNewsAssignmentHandler"config-type="bean"></assignment>

</swimlane>

<swimlanename="EditNewsUser">

<assignmentclass="com.withub.wcms.manage.publishNews.jbpmHandler.assignmentHandler.EditNewsAssignmentHandler"config-type="bean"></assignment>

</swimlane>

<start-statename="relatingNewsChannel">

<transitionname=""to="checkNews"></transition>

</start-state>

<task-nodename="checkNews">

<taskname="checkNews"swimlane="CheckNewsManagers"></task>

<transitionname="rejected"to="editNews"></transition>

<transitionname="passed"to="showNews"></transition>

</task-node>

<end-statename="end"></end-state>

<task-nodename="editNews">

<taskname="editNews"swimlane="EditNewsUser"></task>

<transitionname="commited"to="checkNews"></transition>

</task-node>

<nodename="showNews">

<actionname="showNewsAction"class="com.withub.wcms.manage.publishNews.jbpmHandler.actionHandler.ShowNews"config-type="bean"/>

<transitionname=""to="end"></transition>

</node>

</process-definition>

*/

/**

*"checkShowNews/processdefinition.xml"

*/

publicvoiddeployProcessDefinition(StringfilePath){

//Thistestshowsaprocessdefinitionandoneexecution

//oftheprocessdefinition.Theprocessdefinitionhas

//3nodes:anunnamedstart-state,astate's'andan

//end-statenamed'end'.

ProcessDefinitionprocessDefinition=ProcessDefinition.parseXmlResource(filePath);

//Lookupthepojopersistencecontext-builderthatisconfiguredabove

JbpmContextjbpmContext=jbpmConfiguration.createJbpmContext();

try{

//Deploytheprocessdefinitioninthedatabase

jbpmContext.deployProcessDefinition(processDefinition);

}finally{

//Teardownthepojopersistencecontext.

//ThisincludesflushtheSQLforinsertingtheprocessdefinition

//tothedatabase.

/*

*关闭jbpm上下文。删除pojo持久化上下文。

*这包括刷新SQL来真正的把业务处理定义插入到数据库中。

**/

jbpmContext.close();

}

}

/**

*

*@paramargs

*/

publicstaticvoidmain(String[]args){

DeployJbpmProcessDefinitioninstance=newDeployJbpmProcessDefinition();

instance.deployProcessDefinition(args[0]);

}

}

三、Eclipse下使用main测试的方法

1,点击Run选项:

2,选中Main方法测试的

1)项目-----需要classpath,所有的.class文件、jar包和资源文件所在地。

2)main方法所在的类。

3,由于我们的main方法使用了一个参数,所以需要提供一个参数。就是jBPM业务程序定义文件相对于项目的classpath的相对路径。

4,点Run,运行

如若满意,请点击右侧【采纳答案】,如若还有问题,请点击【追问】

希望我的回答对您有所帮助,望采纳!

~O(∩_∩)O~

工作流和BPM的区别

工作流(Workflow),指“业务过程的部分或整体在计算机应用环境下的自动化”。是抄对工作流程及其各操作步骤之间业务规则的抽象、百概括描述;

BPM,即业务流程管理,是一种以规范化的构造端到端度的卓越业务流程为中心,以持续的提高组织业务绩效为目的的系统化方法。是一个软件工具(来自天翎)

activiti和jbpm工作流引擎哪个比较好

Activiti5与jbpm4,底层都是使用流程虚拟机(PVM),而jbpm5以后则使用Drools Flow作为底层架构,目前Activiti6上市,同样也已经移除了PVM。技术只适不适合,并没有好坏之分,Activiti与jbpm均支持BPMN规范,jbpm与JBoss的项目整合使用的话,具有先天的优势,在这点看来,使用jbpmn更好。而jbpm采用的是LGPL开源协议,Activiti采用了宽松的Apache License2.0协议,从开源的角度来说,使用Activiti更好。参考自《疯狂工作流讲义第2版(Activiti6)》第1章。

文章到此结束,如果本次分享的jbpm工作流和如何以编程方式部署jBPM工作流的问题解决了您的问题,那么我们由衷的感到高兴!

如何发布网站?网站如何怎么发布textarea换行 如何处理textarea换行