0 0

jbpm中的流程定义文件是如何存储到数据库中的?3

请问一下,jbpm中的流程定义xml文件是如何存储到数据库中的?
2008年7月22日 13:25

1个答案 按时间排序 按投票排序

0 0

总体过程:读取XML文件->从文件中提取所有Node,Task,Transition等并设置到对应的Domain Object中->持久化到数据库
详细过程(代码):

ProcessDefinition解析流程定义文件相关方法
public static ProcessDefinition parseXmlString(String xml);
public static ProcessDefinition parseXmlInputStream(InputStream inputStream);
public static ProcessDefinition parseXmlReader(Reader reader);
..........................................
..........................................

以上所有方法其实最终都会转化为对JpdlXmlReader对象的readProcessDefinition方法的调用,
readProcessDefinition()方法具体实现

    // 创建一个新的流程定义对象
    processDefinition = ProcessDefinition.createNewProcessDefinition();

    // 初始化包含的各种列表
    problems = new ArrayList();
    unresolvedTransitionDestinations = new ArrayList();
    unresolvedActionReferences = new ArrayList();	
		
    try {
      //把流程定义文档读到内存DOM树中
      Document document = JpdlParser.parse(inputSource, this);
      Element root = document.getRootElement();
            
      // 读取流程名称
      parseProcessDefinitionAttributes(root);
      
      // 读取流程描述
      String description = root.elementTextTrim("description");
      if (description!=null) {
        processDefinition.setDescription(description);
      }

      // 一次加工:读取流程中各种信息
      readSwimlanes(root);//读取所有泳道
      readActions(root, null, null);//读取所有Action
      readNodes(root, processDefinition);//读取所有node
      readEvents(root, processDefinition);//读取所有event
      readExceptionHandlers(root, processDefinition);//读取所有异常处理器
      readTasks(root, null);//读取所有任务

      // 二次加工:处理各种Transition和Action的引用
      resolveTransitionDestinations();
      resolveActionReferences();
      verifySwimlaneAssignments();//确认泳道的分配策略

    } catch (Exception e) {
      log.error("couldn't parse process definition", e);
      addProblem(new Problem(Problem.LEVEL_ERROR, "couldn't parse process definition", e));
    }
    
    if (Problem.containsProblemsOfLevel(problems, Problem.LEVEL_ERROR)) {
      throw new JpdlException(problems);
    }
    
    if (problems!=null) {
      Iterator iter = problems.iterator();
      while (iter.hasNext()) {
        Problem problem = (Problem) iter.next();
        log.warn("process parse warning: "+problem.getDescription());
      }
    }
    
    return processDefinition;//返回processDefinition对象,已经完全把xml中定义的流程转化为java中的对象,xml中的各种tag都已经转换为JBPM中的相关图形对象POJO并包含在ProcessDefinition的所包含的各种列表中
  


如果还不能理解请自己去读JBPM的源代码吧

2008年7月22日 17:07

相关推荐

    JBPM工作流实战_流程定义文件的上传处理视频 03

    "JBPM工作流实战_流程定义文件的上传处理视频 03"这一主题主要关注如何在实际操作中处理JBPM流程定义文件的上传,这在构建业务流程自动化系统时是非常关键的步骤。 首先,流程定义文件是JBPM工作流的核心组成部分,...

    jbpm 请假流程定义发布项目

    总结,jbpm请假流程定义发布项目是一个实用的学习和实践案例,涵盖了jbpm的基本使用、数据库集成、流程定义以及流程的监控与管理。通过对该项目的研究,开发者不仅可以了解jbpm的工作原理,还能掌握如何在实际环境中...

    jbpm 数据库jbpm 数据库

    jbpm使用关系型数据库来存储其运行时数据,如流程定义、流程实例、任务、变量等。通常,jbpm会创建一系列的数据库表来支持其功能。这些表包括但不限于: - `ACT_RU_EXECUTION`:记录流程实例的状态和执行信息。 -...

    jbpm项目 报销流程( 含数据库可附加)

    jbpm工作流引擎负责解析流程定义文件(.bpmn或.jbpm),并根据流程逻辑执行任务。 2. **流程定义**:报销流程的定义通常通过Business Process Model and Notation (BPMN) 2.0标准进行,这是一种图形化表示业务流程...

    jbpm工作流程的说明文档

    总结来说,jbpm是一个强大的工作流管理工具,它提供了图形化的流程定义、灵活的数据库支持和API接口。尽管在应对某些特定的中国业务场景时可能需要额外的定制,但通过对其特性和机制的深入理解,开发者可以有效利用...

    jbpm业务流程

    1. **流程定义**:jbpm使用BPMN(Business Process Model and Notation)标准来定义流程。BPMN是一种图形化的建模语言,通过泳道、任务、事件和网关等元素,直观地描绘出业务流程的各个步骤和逻辑。 2. **工作流...

    jbpm数据库数据,导入即可使用

    jbpm数据库数据是jbpm系统运行过程中产生的各种数据,包括流程定义、任务实例、变量、事件等,这些数据对于系统的正常运行至关重要。 在jbpm中,流程定义(Process Definition)是描述业务流程的蓝图,它定义了流程...

    JBPM流程代码演示

    5. **workflow**:这是一个目录,很可能包含了流程定义文件(.bpmn2或.xml格式),这些文件描述了业务流程的逻辑和步骤。流程定义文件使用BPMN(Business Process Model and Notation)标准,它是业务流程建模的常用...

    JBPM流程引擎资料

    文档《JBPM流程引擎资料》详细介绍了如何利用JBPM开发流程应用,涵盖了从框架构造到节点处理的方方面面。 首先,文档提到了jBPM的基本概念。jBPM是一个轻量级流程引擎,它允许开发者以模块化的方式管理业务流程。...

    JBPM数据库表说明.doc

    在JBPM系统中,数据库扮演着至关重要的角色,存储了流程的配置信息以及运行时的状态数据。以下是对JBPM数据库表的详细说明: ### 1. 流程配置类数据库表 #### 1.1 JBPM_PROCESSDEFINITION 这个表存储了流程模板的...

    jbpm3.2.3数据库表的详细说明

    在JBPM 3.2.3 版本中,数据库设计是整个系统的核心部分,用于存储流程定义、运行时流程实例以及与流程相关的各种数据。下面将详细介绍这些关键数据库表的功能和作用。 ### 1. 流程配置类数据库表 #### 1.1 JBPM_...

    jbpm数据库表结构详解

    11. **JBPM4_LOB**:存储表,用于存储大对象数据,如流程图的图像文件或XML流程定义文件。 12. **JBPM4_PARTICIPATION**:参与者表,定义了流程参与者及其角色,如Candidate、Client、Owner等。 13. **JBPM4_...

    jbpm创建数据库jbpm创建数据库

    在JBPM中,所有的流程实例、任务、变量等信息都需要存储在数据库中。因此,在使用JBPM之前,需要先创建一个专门用于存储这些数据的数据库。这一步骤对于确保JBPM的正常运行至关重要。通常情况下,可以使用多种类型的...

    jBPM 视频教程 管理流程定义

    流程定义是静态的,而流程实例则是动态的,它们代表了流程定义在实际运行中的具体执行。当启动一个流程实例时,jBPM会根据流程定义创建实例,并进行状态跟踪。流程实例的生命周期包括启动、执行、暂停、恢复和终止等...

    JBPM报销流程实例-完整例子

    文件列表中的"jbpm"很可能包含了流程定义文件(如BPMN2 XML)、数据库脚本、配置文件以及可能的示例代码或文档。通过解压文件并按照指导进行配置,你将能够亲自体验和学习如何利用JBPM构建和运行一个完整的报销流程...

    JBPM4.4完整可用审批流程

    3. **SQL脚本**:用于创建和初始化数据库表的SQL文件,这是JBPM4运行的基础,因为流程实例、任务和其他元数据需要存储在数据库中。 4. **测试用例**:可能包含测试流程执行和审批逻辑的JUnit或其他测试框架的测试类...

    一个Jbpm员工请假流程的实例(源代码)

    在Jbpm项目中,它可能包括编译流程定义文件(.bpmn或.xml)、部署流程实例以及运行测试的命令。 `test`目录通常包含单元测试和集成测试代码,这些测试确保流程的各个部分按照预期工作。在Jbpm中,可能会使用JUnit或...

    JBPM工作流程API和Jar.zip

    2. `RepositoryService`:用于管理和操作流程定义,如部署流程定义文件、查询已部署的流程定义等。 3. `RuntimeService`:处理流程实例的生命周期,如启动新实例、信号触发、挂起或激活实例。 4. `TaskService`:...

    jbpm数据库表结构

    JBPM的数据库表结构设计得相当全面和细致,涵盖了从流程定义到执行过程中的各个方面。通过对这些表结构的理解,不仅可以帮助开发者更好地了解JBPM的工作原理,还能在实际项目开发中更高效地进行流程设计和优化。此外...

Global site tag (gtag.js) - Google Analytics