Jbpm3历史库数据与当前工作库数据分离思路
Jbpm3历史库数据与当前工作库数据分开思路???? Jbpm3是个非常不错的工作流引擎,由于其灵活、直白,易于扩展
Jbpm3历史库数据与当前工作库数据分开思路
?
??? Jbpm3是个非常不错的工作流引擎,由于其灵活、直白,易于扩展等特点,可构建出独立的Bpms。由于jbpm_log,jbpm_taskinstance,jbpm_variableinstance等表的数据膨胀得非常快,其性能常遭诟病。因此,为其创建怎样的历史库,以解决性能问题呢?以下是一个简单思路,不当之处,请指正: 1)历史数据是指流程已结束的所有表的相关数据;主流程未结束的流程虽已结束仍留在当前库工作表中; 2)创建另一schema(如history),表结构完全相同,作为历史库,用于从当前工作库接收满足1)的数据; 3)历史库数据表使用独立的hibernate_history.cfg.xml配置文件,从现有的*.hbm.xml文件创建新的对应配置文件,新建的配置文件,表名带schema(history),并删除所有外键关系,主键生成机制均为assigned; 4)?历史库数据表包含现有所有流程定义表; 5)将数据从当前工作库数据表插入到历史库数据表中,包括流程定义表; 6)删除工作库数据表符合1)的所有数据;删除历史库数据表中所有不符合1)的数据;即前者和后者互为补集;对于流程定义表先清空历史库,再执行步骤5); 7)?定期(每天?每周?,根据自己系统情况而定)执行步骤5)和6);用触发器来达到5)和6)的移库也是一种思路,但肯定会影响工作性能;
8)外部业务系统对工作流查询的逻辑处理,先查询当前工作库,查不到再查询历史库;这里需要2个configuration:一个使用hibernate.cfg.xml,另一个使用hibernate_history.cfg.xml,分别对应工作库和历史库。