JBPM 工作流引擎 JBPM指南 例子:数据库 (3.2)

Blender到Unreal Engine高效资产迁移:Datasmith插件工作流详解 在3D内容创作与实时渲染领域,数字资产的无损迁移是连接创意设计与最终呈现的关键环节。其核心原理在于通过高保真的数据转换管道,替代传统离散的导出-导入流程,从而保留完整的场景层级、材质属性和关联信息。这项技术的核心价值在于极大提升了跨平台工作流的效率与数据保真度,减少了因格式转换导致的信息丢失和调试成本。它广泛应用于建筑可视化、产品设计、影视预演和游戏开发等场景,使艺术家能在专业DCC工具中专注创作,并一键同步至实时引擎进行交互式渲染与逻辑构建。本文聚焦于实现这一流程的**Datasmith**插件,并深入解 阅读详情

声明:

本人E文VeryVeryPoor,又是刚刚开始学习JBPM工作流引擎,对原文及概念等理解不当的地方,请网友不吝赐教,吾将及时修改和更正。

本文仅是本人自己学习JBPM,对JBPM指南的学习理解过程。

还望可以对入门者有所帮助。共享之。

需要中英文对照Word文档者请联系:gutengcom@hotmail.com或留下邮件地址。

3.2. 例子:数据库

jBPM的基本特征之一是当业务处理处在一个等待的状态时,支持业务的数据库持久化执行能力。下面的例子将为你展示如何将业务实例存储进jBPM数据库中。这个例子也提出了可能产生哪些上下文环境。几段不同的用户代码是单独被创建的方法。例子:在webapplication中每段用户代码启动一个业务和数据库持久化的执行。然后,一个消息驱动bean(message driven bean)从数据库装载业务实例并重新启动执行。

More about the jBPM persistence can be found in Chapter 6, Persistence.

更多关于jBPM持久化可以在jBPM的文档Chapter 6, Persistence中了解.

public class HelloWorldDbTest extends TestCase {
     

   
     
   
 
       
/*
       
我们需要申请一个JbpmSessionFactory,因此我们把它放到一个静态变量中
        
(static variable),这个JbpmSessionFactory将被使用在创建的test方法中(test methods)。
        
*/
     
  static JbpmSessionFactory jbpmSessionFactory = 
     
      JbpmSessionFactory.buildJbpmSessionFactory();
     
  
     
  static {
     
  
       
/*
       
自the hypersonic in-memory database以来是一个新的数据库,在我们
        
启动测试前,我们需要创建运行时的计划,下面一行创建了一个数据库
        
表和外键约束关系。
        
*/
     
    jbpmSessionFactory.getJbpmSchema().createSchema();
     
  }
     
  public void testSimplePersistence() {
     
   
       
/*
       
在下面的3个方法调用之间,所有数据是通过数据库传递。这里,在单元
        
测试中,因为我们想测试一个完成的业务情节,这3个方法彼此被正确的
        
执行。但事实上,这些方法代表了对服务器的不同请求。
        

     
       
     
当我们启动一个干净的,空的内存数据库时,我们首先部署业务。事实上,
        
这些被业务开发人员做过一次了。
        
*/
     
    deployProcessDefinition();
      
/*
       
推想我们想要启动一个业务实例,
        
process instance (=process execution),
        
当用户在一个web application 中提交一个form时……
      
*/
     
    processInstanceIsCreatedWhenUserSubmitsWebappForm();
      
/*
       
然后,一个异步消息到达时,将会继续执行。
        
*/
     
    theProcessInstanceContinuesWhenAnAsyncMessageIsReceived();
     
  }
     
  public void deployProcessDefinition() {
     
    
       
/*
       
这个测试展示了一个业务定义和业务定义的执行。业务定义有3个节点:
        
an unnamed start-state, a state 's' and an end-state named 'end'.
       
*/
     
    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
     
      "<process-definition name='hello world'> +
     
      "  <start-state name='start'> +
     
      "    <transition to='s' /> +
     
      "  </start-state> +
     
      "  <state name='s'> +
     
      "    <transition to='end' /> +
     
      "  </state> +
     
      "  <end-state name='end' /> +
     
      "</process-definition>
     
    );
     
    
     
//我们打开一个新的持久化session
     
    JbpmSession jbpmSession = jbpmSessionFactory.openJbpmSession();
     
//然后开始一个在持久session上的事务。
     
    jbpmSession.beginTransaction();
     
    
     
//把业务定义保存到数据库里
     
    jbpmSession
     
        .getGraphSession()
     
        .saveProcessDefinition(processDefinition);
     
    //提交事务
     
    jbpmSession.commitTransaction();
     
//关闭session.
      
    jbpmSession.close();
     
  }
     
  public void processInstanceIsCreatedWhenUserSubmitsWebappForm() {
     
   
     
/*
     
在这个方法中的代码可以被放到struts-action 
      
     or a JSF managed bean.中
     
    */
     
//我们打开一个新的持久化session
     
    JbpmSession jbpmSession = jbpmSessionFactory.openJbpmSession();
     
//然后开始一个在持久session上的事务。
     
    jbpmSession.beginTransaction();
     
    
      
/*
       
现在对我们在上面部署的业务定义进行数据库查询。
        
*/
     
    ProcessDefinition processDefinition = 
     
        jbpmSession
     
          .getGraphSession()
     
          .findLatestProcessDefinition("hello world");
     
    
      
/*
       
随着我们从数据库提取的业务定义,我们能创建一个业务定义的执行,
        
就像hello world example,(它没有持久化)。
        
*/
     
    ProcessInstance processInstance = 
     
        new ProcessInstance(processDefinition);
     
    
     
    Token token = processInstance.getRootToken(); 
     
    assertEquals("start", token.getNode().getName());
     
//启动业务执行
     
    token.signal();
     
//现在业务处在状态’s’中 。
     
    assertEquals("s", token.getNode().getName());
     
    
      
/*
       
现在这业务实例被保存到数据库里。因此当前业务执行的状态被存储到
        
数据库里。
        
*/
     
    jbpmSession
     
        .getGraphSession()
     
        .saveProcessInstance(processInstance);
     
  
       
/*
       
下面的方法将得到从数据库收回的业务实例,然后通过在另外的扩展信号
        
条件下,重新启动执行。
        
*/
      
//在webapp action的结尾,事务被提交。
     
    jbpmSession.commitTransaction();
     
//关闭事务。
     
    jbpmSession.close();
     
  }
     
  public void theProcessInstanceContinuesWhenAnAsyncMessageIsReceived() {
     
//在方法中的这段代码是在消息驱动中的内容。
      
//我们打开一个新的持久化session
     
    JbpmSession jbpmSession = jbpmSessionFactory.openJbpmSession();
     
    
       
/*
       
 然后在持久化session上开始事务,注意,它也可能使用
        
在你的应用服务器上的a jdbc connection 。
        
*/
       

   
     
   
    jbpmSession.beginTransaction();
     
    GraphSession graphSession = jbpmSession.getGraphSession();
     

     
       
     
/*
       
首先,我们需要得到从数据库收回的业务实例。要知道我们在这处理的
        
业务实例有几个选项。在这个简单的测试案例中正在寻找这个完整
        
的业务实例列表。那将给我们唯一的结果。因此我们可以查询业务定义。
        
*/
     
    ProcessDefinition processDefinition = 
     
        graphSession.findLatestProcessDefinition("hello world");
     

   
     
   
现在,我们搜索所有业务定义的业务实例。
     
    List processInstances = 
     
        graphSession.findProcessInstances(processDefinition.getId());
     
    
      
我们知道在单元测试内容中只有一个业务执行。在实际生命周期中,业
        
务实例能够从到达的消息内容中或来自用户的选择中提取。
     
    ProcessInstance processInstance = 
     
        (ProcessInstance) processInstances.get(0);
     
    
      
/*
       
现在我们能继续执行。注意,业务实例代表了signals执行的主要(path)
        
执行路线(path)或叫(轨迹)(=the root token)
        
*/
     
    processInstance.signal();
     

     
       
     
/*
       
在这个signal,我们知道业务执行将到达end-state.
        
*/
     
    assertTrue(processInstance.hasEnded());
     
    
      
//现在我们能更新在数据库中的执行状态。
     
    graphSession.saveProcessInstance(processInstance);
     

   
     
   
//在MDB的结尾,事务被提交.
     
    jbpmSession.commitTransaction();
     
//关闭事务jbpmSession.
     
    jbpmSession.close();
     
  }
     
}
     

 

待续….

ssm框架搭建 这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载 立即下载

相关推荐

多路输出电源的交叉调整率:从理论到无源优化实践

本文深入探讨了多路输出电源中的交叉调整率问题,分析了其物理根源及无源优化方法。通过漏感与耦合的理论分析,结合加权反馈、电感耦合等五种无源优化技术,帮助工程师有效解决交叉调整率挑战。文章还以TDK-Lambda CUT75系列为例,展示了优化技术的实际应用与效果。

weixin_26886855的博客 280

JBPM数据库表解析与实例(二)

[color=red]1.Jbpm_task[/color] 字段 含义 ID_ 流程任务的标识 主键 NAME_ 任务名字 DESCRIPTION_ 任务描述 PROCESSDEFINITION_ 任务所属的流程定义 对应JBOM_PROCESSDEFINITION外键 ISBLOCKING_ 任务时候阻塞 ISSINGALLING_ ...

J﹀行天下~ 276

CondaHTTPError: HTTP 404 NOT FOUND for url

用conda创建新环境时出现问题了。

qq_40713201的博客 1269

工作流Jpbm4.4工作流知识点总结(工作流开发宝典)

Jbpm工作流开发过程中的一些知识点总结,方便以后开发使用! 目录: 一、工作流框架的搭建 二、工作流框架的流程开发   1、管理流程定义     ①部署流程定义     ②查询流程定义     ③删除流程定义     ④获取部署对象中的文件资源内容     ⑤ 获取流程图中某活动的坐标   2、执行流程实例     ①启动流程实例     ②向后执行一步     ③查询...

weixin_30307921的博客 367

DSP 6678处理器Cache配置实战:从基础设置到多核一致性优化

本文深入探讨了TI TMS320C6678多核DSP处理器的Cache配置与优化实战。文章从基础概念入手,详细解析了L1、L2 Cache的模式选择与内存属性配置,并重点剖析了多核环境下缺乏硬件一致性支持带来的挑战。核心部分提供了基于Writeback和Invalidate操作的手动一致性维护策略,以及针对数据流处理、频繁访问共享数据等不同场景的性能调优与避坑指南,帮助开发者构建高效稳定的多核DSP系统。

o5p6q的博客 184

MacBook 本地化部署 Dify 指南

dify 怎么安装部署 有哪些坑 !

weixin_44542598的博客 1523

Java工作流引擎:jBPM、Activiti以及SWF

http://zhouliang.pro/2013/07/06/bpm-jbpm-activiti/ 这只是一篇非常粗浅的记录我对工作流引擎认识的文章。 知道工作流引擎是很久之前了,但是一直都没有机会尝试,一是没有业务上的需要,二是感觉工作流入门不容易。最近,项目中用到了一点工作流的东西,虽然我没有具体参与,但是了解一下还是好的。于是抽周末两天时间读了一些文章和jBPM以及Activiti

liangyixin19800304的专栏 1万+

lerobot VLA--SmolVLA代码的讲解

2.图像resize至正方形224x224,图像长宽比不变,其他区域用黑色补充,标记为mask=1,若占位图像(摄像头缺失),则 创建全-1像素的占位图像 标记为mask=0,image为[1, 3, 512, 512],img_mask为True,masks列表长度为2,img_masks为2,因为我这里两个相机。文本嵌入:通过embed_language_tokens() 被转换为嵌入表示,lang_emb 是语言的嵌入,包含了语言的语法和语义信息。1.像素值[0,1]->[-1,1]

caokaifa的博客 4067

工作流引擎 jBPM

jBPM的简单介绍 jBPM是JBOSS下的一个开源java工作流项目,该项目提供eclipse插件,基于Hibernate实现数据持久化存储。参考 http://www.jboss.com/products/jbpm jBpm 是一种灵活的,可扩展的工作系统.商业流程可以自由表示成一种简单而强大的数据模型中,为工作流引擎提供实时的流程的定义 . jBpm 引擎能解释执行开发定义好的

Fred Lee的程序人生 757

避坑!瑞萨RZ/N2L用J-Link下载调试的那些‘坑’(从驱动版本到硬件架构选择)

本文详细解析了瑞萨RZ/N2L开发中使用J-Link调试时常见的兼容性问题与解决方案,包括驱动版本选择、SWD连接优化及e2 studio调试技巧。特别针对硬件架构与驱动版本的匹配问题提供了实用对照表,帮助开发者高效避开调试陷阱,提升开发效率。

weixin_30576827的博客 441

11、基于STM32的智能药盒

当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未有的速度被单片机智能控制系统所取代。嵌入式具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。

行走的皮卡丘 6103

JBPM学习笔记

RepositoryService:流程发布相关 ExecutionService:流程实例相关 TaskService:任务相关 IdentityService:用户、组相关 /** * 0.各种节点说明: */ (1)状态不停留(直接过去) <java />、 <fork />与&...

weixin_30888027的博客 139

11、ThingsBoard集群部署k8s

今天终于有时间去搞这个啦,拖了很久了,一直没时间,因为我本地没有那么多机器资源,开虚拟机不够,如果租用阿里云服务器,需要有充值的时间,因为这个费用是按小时付费,需要有连贯的时间来搞才行,今天恰好有时间,就开始搞了,弄成功搞出来了,特地写博客记录下来。

AldrichEugene 990

JBPM 工作流引擎 JBPM指南 例子:任务指派实例(3.4)

声明:本人E文VeryVeryPoor,又是刚刚开始学习JBPM工作流引擎,对原文及概念等理解不当的地方,请网友不吝赐教,吾将及时修改和更正。本文仅是本人自己学习JBPM,对JBPM指南的学习理解过程。还望可以对入门者有所帮助。共享之。需要中英文对照Word文档者请联系:gutengcom@hotmail.com或留下邮件地址。 3.4任务指派实例在下面的例子里,我们将

☆☆☆__sunking的专栏__☆☆☆ 3381

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

JBPM 工作流引擎 JBPM指南 例子:客户动作(action)例子(3.5)

3.5. 客户动作(action)例子声明:本人E文VeryVeryPoor,又是刚刚开始学习JBPM工作流引擎,对原文及概念等理解不当的地方,请网友不吝赐教,吾将及时修改和更正。本文仅是本人自己学习JBPM,对JBPM指南的学习理解过程。还望可以对入门者有所帮助。共享之。需要中英文对照Word文档者请联系:gutengcom@hotmail.com或留下邮件地址。  

☆☆☆__sunking的专栏__☆☆☆ 2707

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

JBPM工作流引擎详解

jBPM是由RedHat开发的开源BPMN2.0工作流引擎,支持流程自动化、审批流等企业级应用。其核心架构包含流程引擎、KIE平台、任务服务等模块,提供流程设计、部署、执行、监控全生命周期管理。jBPM优势在于与Drools规则引擎深度集成,支持复杂规则驱动流程,并可通过KIEWorkbench实现可视化建模。开发支持SpringBoot集成,提供RESTAPI,适用于微服务架构。典型应用场景包括保险、金融等需要复杂规则控制的业务流程。开发流程涵盖设计、部署、启动、任务处理等环节,并支持与业务系统集成。

onlymscn的博客 894

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...

JAVA的jBPM工作流框架

工作流(Workflow)是指将一个工作过程分解成一系列有序的任务、活动或操作,并定义它们之间的关系和依赖,以实现对工作流程的管理、控制和优化。在 Java 中,工作流通常是指使用 Java 技术来实现和管理工作流程的系统或框架。工作流 Java 可以用于管理和自动化各种类型的业务流程,如审批流程、订单处理流程、报销流程等。它可以帮助组织和企业实现业务流程的自动化、标准化和优化,提高工作效率和质量。

m0_65037354的博客 3489

工作流引擎-11-开源 BPM 项目 jbpm

它完全由 Java™ 编写,可运行在任何 JVM 上,同时也可在 Maven Central 仓库中获取。可以作为独立服务使用,也可以嵌入到自定义服务中。是一个用于构建业务应用程序的工具包,旨在帮助自动化业务流程和决策。是开源软件,遵循 Apache 软件许可证发布。

1494

工作流JBPM笔记:了解JBPM

JBPM,全称是Java Business Process Management(业务流程管理),它是覆盖了业务流程管理、工作流、服务协作等领域的一个开源的、灵活的、易扩展的可执行流程语言框架。jBPM是公开源代码项目,使用它要遵循 ASL(Apache License Version 2.0)和EULA(JBoss End User License Agreement)协议。

一个老码农 2214

Java工作流引擎 JBoss jBPM 3.1.2 演示示例

jBPM是由JBoss开发的工作流和业务流程管理引擎,可以用于创建不同人、不同应用程序、不同服务之间交互的业务流程。jBPM还提供了一个可视化的业务流程设计器。jBPM包含下列组件:运行时引擎(一个POJO库),图形化设计器(一个Eclipse插件),基于Hibernate的持久化,基于JSF的web控制台,BPEL扩展等。 Hello World示例流程定义是一个可管理的包含了节点和节点

子弹头的专栏 4220

工作流引擎:jbpm和activiti

目前流行的工作流引擎有Activiti和jBPM5,而在jBPM5发布以前大多数项目、平台都是基于jBPM3、jBPM4开发的。jbpmJBPM,全称是Java Business Process Management(业务流程管理),它是覆盖了业务流程管理、工作流、服务协作等领域的一个开源的、灵活的、易扩展的可执行流程语言框架。jBPM是公开源代码项目,使用它要遵循 ASL(Apache Licen

zhang_study_it的博客 7703

Java 流行的工作流引擎

Java 流行的工作流引擎 JBPM 工作流 JBPM 是一个Java业务流程管理系统,是JBoss中一款开源的工作流引擎,是一个轻量级的,使用BPMN 2规范可扩展的 工作流引擎,也是一个工作流管理系统,它可以运行在任何java环境,嵌入在您的应用程序或服务,拥有工作流控制台管理界面,现在, 最新的版本为JBPM6,与之前的版本相比,JBPM6控制台的功能更加强大,涵盖了BPMS特性。 主要功能: 提供一些web端流程设计器,ecplise 流程设计,通过拖拉的形式设计流程图 基于JPA / J

开源驰骋工作流引擎 6158

JBPM-工作流引擎

一、   工作流 工作流(Workflow):就是“业务过程的部分或整体在计算机应用环境下的自动化” l  简单的说,就是将工作的流程通过程序管理起来,以表单审核和任务办理为主体,实现办公自动化             工作流帮助程序管理业务流程,业务操作不发生改变,工作流只是通知程序,该哪个角色进行某个 任务  典型应用:工作流技术是OA项目典型标志  主流工作流引

aideyi的专栏 1001

JBPM工作流

1.     概要jBPM,全称是Java Business Process Management,是一种基于J2EE的轻量级工作流管理系统。JBPM也是一款非常好的开源工作流引擎。现在这里从技术角度来分析jbpm的优点和缺点,简单罗列几个大家都容易看见的:2.优点a.       自带工作流引擎,思路清晰,编写代码减少;b.       采用JBPL语言建立工作流程图,可方便

hitlermen的专栏 6410

浅析JBPM工作流引擎

1.      JBPM工作流引擎是用来做什么的 首先要说明的一点是工作流引擎指的并不只是JBPM,JBPM只是工作流引擎的一种。JBPM利用JPDL流程定义语言将现实生活中处理事务的业务流程进行抽象,形成一套业务流程规则,只要处理该项业务就必须按照这个流程规则进行。举一个很简单的例子,就拿看医生来讲,看医生的整个流程必须是先挂号,再看病,再抓药,只要你进行看医生这个业务就必须按照这套流程进

zhuang_Andy 1452

JBPM工作流引擎

JBPM全称为Java BusinessProcess Management,业务流程管理,它覆盖了业务流程管理、工作流、服务协议等领域的一个开源的、灵活的、易扩展的可执行流程语言框架。     工作流引擎给我们提供了流程逻辑的定义方法,给我们提供了根据流程逻辑来调度业务对象的功能,能使我们避免在代码中硬编码流程逻辑。下面我们在eclipse中安装JBPM的插件,在eclipse中集成插件的方法

致力于顶级java全栈工程师 1681
上一篇: JBPM 工作流引擎 JBPM指南 例子:Hello World 流程定义(3.1)
下一篇: JBPM 工作流引擎 JBPM指南 例子:上下文环境-业务变量(3.3)
sunkingcom
博客等级 码龄21年 4粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值