zoukankan      html  css  js  c++  java
  • JBPM数据库分析

    JBPM数据库分析

     

    持久化基础知识

           持久化(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的对象存储在关系型的数据库中,当然也可以存储在磁盘文件中、XML数据文件中等等。

          我们可以这样理解:

      在一定周期内保持不变就是持久化,持久化是针对时间来说的.

      数据库中的数据就是持久化了的数据,只要你不去删除或修改.

      Session会话中Session对象变量也是不变的,Session容器中持久化

      对象持久化的方式有很多种,根据周期不同有,page,Session,Application,

    对象序列化机制对于需要将对象的状态保存到文件中,而后能够通过读入对象状态来重新构造对象,恢复程序状态,

    对象序列化的过程是对象持久化的方法之一,把对象保存到文件中.

    广义上说我们需要持久化是由于内存的易失性和过于昂贵造成的。

    JBPM流程引擎的持久化有什么特点

           JBPM流程引擎的持久化层使用的当前流行的ORM框架hibernate,得益于hibernate的一些强大特性,导致JBPM也具有了这样的一些特性,比如通过hibernateHSQL,我们可以专注我们的业务逻辑,而不用考虑不同的数据库之间T-SQL的差异,这样是jbpm具备一套代码,可以平滑的从不同数据库间进行更换。

           JBPM需要持久化 基于以下特点

    1.       工作流作为典型的交互性应用,其必须精细控制执行过程,并记录执行的状态,在用户唤醒流程时,能够在流程持久化的那个点继续运行。同时在流程挂起时,我们将相关数据持久化,也有性能和故障恢复的考虑。

    2.       流程引擎的运行本身也会产生相关的对象(流程实例、Execution),需要持久化到数据库

    3.       流程引擎需要记录相关的业务数据

    4.       流程引擎需要记录相关的执行历史数据

    JBPM流程引擎的数据库结构图

    各个数据表的功能简单介绍

    流程部署

           jbpm4_deployment:发布的记录表,通过dbid跟后两个表进行关联。

           jbpm4_deployprop:定义流程定义(ProcessDefinitionImpl)的相关属性(keyId)

           jbpm4_lob:保存根据流程定义xml形成的二进制数据(同时也保存变量variable

    值得注意的是一条jbpm4_deployment记录需要对应4jbpm4_deployprop记录,他们的key字段分别为langidpdidpdkeypdversion

           Langid 标识解析流程定义使用的jpdl的版本

           Pdid  流程定义的id ,唯一标识一个流程

           Pdkey 流程的key,标识同一类流程

           Pdversion 标识流程的版本

    主键生成机制表

    jbpm4_property:为运行时需要持久化的对象生成dbid,其记录当前所有对象实例的

    最大值,每次需要生成dbid时,需要先获取该值,然后递增返回。

    用户认证表

           JBPM实现的用户库比较简单,我们可以实现并扩展其相关接口,并进行认证库独立

           jbpm4_id_group:用户组相关信息

    jbpm4_id_membership:用户组和用户的关系表

    jbpm4_id_user:用户相关信息表

    流程实例运行相关表

            jbpm4_execution:驱动流程运行,记录流程实例运行必须的信息

            jbpm4_job:作业相关

            jbpm4_participation:办理人相关信息

            jbpm4_swimlane:泳道相关信息

            jbpm4_task:记录任务的相关信息

            jbpm4_variable:记录传给流程的变量的相关信息

     

    流程历史相关表

            jbpm4_hist_actinst:流程运行中执行过的节点的记录,包括TaskState节点

            jbpm4_hist_detail:历史信息的详细表,跟其他的历史表进行关联

            jbpm4_hist_procinst:历史流程实例相关信息

     jbpm4_hist_task:历史任务相关信息,与jbpm4_hist_actinst关联,单独的表减少了

    state节点相应字段的空闲和空间浪费

            jbpm4_hist_var:历史变量相关信息

     

          

          

          

     

     

     

          

                 

     

     

  • 相关阅读:
    VS2010 自动跳过代码现象
    Reverse Linked List II 【纠结逆序!!!】
    Intersection of Two Linked Lists
    Linked List Cycle II
    Remove Nth Node From End of List 【另一个技巧,指针的指针】
    Swap Nodes in Pairs
    Merge Two Sorted Lists
    Remove Duplicates from Sorted List
    Linked List Cycle
    Dungeon Game
  • 原文地址:https://www.cnblogs.com/wufengtinghai/p/2046733.html
Copyright © 2011-2022 走看看