zoukankan      html  css  js  c++  java
  • 2015-8-10工作日志

    1. 工作规划:完成系统请假管理的功能。

    (1)根据系统需求完成请假管理model;

    (2)进行请假流程的deployment;

    (3)进行请假流程的流程定义管理;

    (4)进行流程配置管理;

    (5)发起请假管理模块;

    (6)进行请假管理及之后各UserTask任务页面的表单页面编写。

    (7)在各级页面设置代理功能

     

    第一步:根据系统需求完成请假管理model

    我想根据系统前端界面的操作过程,获取数据库的操作日志,从而得知有哪些表被变动了。所以,我要把mysql的日志功能打开:

    可是我发现,网上找不到mysql 5.7 的正确打开方式,最后还是csdn的lvjin老师的博客给出了正确的配置方式。

    1

    mysql 新老版本之间的差异性还是有的。

    但是,日志的原生格式可视化性较差,利用navicat的日志查看工具来看,效果更好一点儿。

    2

    为了得到程序的正常执行流程,我想通过slf4j进行log功能,并且lemon OA 已经集成这样的功能,直接调用就好了。

    但是slf4j不会用,利用关键字“slf4j+ api”找到了slf4j的api页面:http://www.slf4j.org/api/org/slf4j/Logger.html

    利用关键字“slf4j 使用教程”找到了一篇博客使用教程:http://yangzb.iteye.com/blog/245844

    lemon OA 的 新建model操作java语句是:

    RepositoryService repositoryService = processEngine
                    .getRepositoryService();
            Model model = repositoryService.getModel(id);
    
         
            if (model == null) {
                model = repositoryService.newModel();
                repositoryService.saveModel(model);
                id = model.getId();
            }

    ,会执行如下三条sql语句:

    (1)select * from ACT_GE_PROPERTY where NAME_ = 'next.dbid'
    (2)update ACT_GE_PROPERTY SET REV_ = 24, VALUE_ = '57501' where NAME_ = 'next.dbid' and REV_ = 23  

    (3)insert into ACT_RE_MODEL(ID_, REV_, NAME_, KEY_, CATEGORY_, CREATE_TIME_, LAST_UPDATE_TIME_, VERSION_, META_INFO_, DEPLOYMENT_ID_, EDITOR_SOURCE_VALUE_ID_, EDITOR_SOURCE_EXTRA_VALUE_ID_, TENANT_ID_)values('55001', 1,null,  null,  null,'2015-08-10 11:52:34.865', '2015-08-10 11:52:34.865',1, null, null, null, null,'')  

    4 4

    4

    由于activiti引擎图的绘制比较麻烦,我原打算通过数据库内数据的直接复制,将lemon老的请假流程model数据,进行行级复制,可是我发现老的数据不在了。而且在act_ge_bytearray表中的数据不是xml,而是json,如下图:

    4

    所以,利用手动,自己拖拽画一下图吧,以后避免不了的。

    在modeler建模器中,连接线不是通过手动放上去而是当你制定下一级元素时,它能够为你自动添加。我一开始老实加不上去。

     

    4

    第二步 进行请假流程的deployment

    在点击部署按钮后,会发生如下事件:

    当在modeler建模器中,点击保存按钮后,会发生如下sql:

    -- 从model表中,获得source表编号id
    select * from ACT_RE_MODEL where ID_ = '55007'
    
    -- 在bytearray表中,根据编号id,获得具体的modeler
    建模器类型数据
    select * from ACT_GE_BYTEARRAY where ID_ = '55008'
    
    --  ACT_RE_PROCDEF 
    select *
        from ACT_RE_PROCDEF 
        where KEY_ = 'process' and
              (TENANT_ID_ = ''  or TENANT_ID_ is null) and
              VERSION_ = (select max(VERSION_) from ACT_RE_PROCDEF where KEY_ = 'process' and (TENANT_ID_ = '' or TENANT_ID_ is null))
    
    -- ACT_RU_JOB
    select * from ACT_RU_JOB
          where HANDLER_TYPE_ = 'timer-start-event'
          and HANDLER_CFG_ =  'process'
    
    -- ACT_RU_EVENT_SUBSCR
    select * 
        from ACT_RU_EVENT_SUBSCR
        where (EVENT_TYPE_ = 'message')
            and ( 
               (CONFIGURATION_ = 'process:20:55020')
               or
               (PROC_DEF_ID_ = 'process:20:55020')
            )        
            and (TENANT_ID_ = '' or TENANT_ID_ is null)
    
    -- ACT_RU_EVENT_SUBSCR
    select * 
        from ACT_RU_EVENT_SUBSCR
        where (EVENT_TYPE_ = 'signal')
            and ( 
               (CONFIGURATION_ = 'process:20:55020')
               or
               (PROC_DEF_ID_ = 'process:20:55020')
            )
                and (TENANT_ID_ = '' or TENANT_ID_ is null)
    
    
    -- 执行插入操作
    
    insert into ACT_RE_DEPLOYMENT(ID_, NAME_, CATEGORY_, TENANT_ID_, DEPLOY_TIME_)
        values('55021', 'vacation_requset003', null, '', '2015-08-10 14:35:11.611')
    
    
    -- 执行数据更新
    
    insert into ACT_GE_BYTEARRAY(ID_, REV_, NAME_, BYTES_, DEPLOYMENT_ID_, GENERATED_)
        values ('55022', 1, 'vacation_requset003.bpmn20.xml', _binary'<?xml version="1.0" encoding="UTF-8"?>
    <definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/processdef">
      <process id="process" isExecutable="true">
        <startEvent id="sid-73FC1A6A-796D-4A5F-9FFE-F2DBBEDE2CD2"></startEvent>
        <userTask id="sid-C0D9D4BF-4B7C-4C30-9354-D5AE8988292B" name="填写请假单"></userTask>
    
    -- xml数据
    
          </bpmndi:BPMNEdge>
        </bpmndi:BPMNPlane>
      </bpmndi:BPMNDiagram>
    </definitions>', '55021', 0)
    
    -- 插入图片
    
    insert into ACT_GE_BYTEARRAY(ID_, REV_, NAME_, BYTES_, DEPLOYMENT_ID_, GENERATED_)
        values ('55023', 1, 'vacation_requset003.process.png', _binary'?PNG
    
    
    IHDRn1?DKIDATx???S?w*^??z??:ֱ^?:????WG?t۱???Zא]Ԉ??]?`?K,e??aI????R?RʥX???kQ??*ZD???[J?؞??????l???$??orr?Ir?N~??=?S
    
    -- 图片二进制数据
    
    ?!??ǻ1??0IEND?B`?', '55021', 1)
    
    -- 更新 act_re_procdef表
    insert into ACT_RE_PROCDEF(ID_, REV_, CATEGORY_, NAME_, KEY_, VERSION_, DEPLOYMENT_ID_, RESOURCE_NAME_, DGRM_RESOURCE_NAME_, DESCRIPTION_, HAS_START_FORM_KEY_, SUSPENSION_STATE_, TENANT_ID_)
        values ('process:21:55024',
                1,
                'http://www.activiti.org/processdef',
                null,
                'process', 
                21,
                '55021',
                'vacation_requset003.bpmn20.xml',
                'vacation_requset003.process.png',
                null,
                0,
                1,
                '')
    
    -- 最后设置关联 将model和deployment关联起来
    
    update ACT_RE_MODEL set
          REV_ = 6,
          NAME_ = 'vacation_requset003',
          KEY_ = null,
          CATEGORY_ = null,
          LAST_UPDATE_TIME_ = '2015-08-10 14:35:12.294',
          VERSION_ = 1,
          META_INFO_ = null,
          DEPLOYMENT_ID_ = '55021',
          EDITOR_SOURCE_VALUE_ID_ = '55008',
          EDITOR_SOURCE_EXTRA_VALUE_ID_ = null,
          TENANT_ID_ = ''
        where ID_ = '55007' and REV_ = 5

     

    上面的sql,都是用来操作sql语句的,其实为了能够更好地配置流程,咖啡兔老师还建立了以bpm_为前缀的表群,这些表主要是配置表的node节点数据,如下:

    insert into BPM_CONF_BASE (PROCESS_DEFINITION_ID, PROCESS_DEFINITION_KEY, PROCESS_DEFINITION_VERSION) values ('vacation-test:3:55036', 'vacation-test', 3)
    
    insert into BPM_CONF_NODE (CONF_BASE_ID, CODE, CONF_FORM, CONF_LISTENER, CONF_NOTICE, CONF_OPERATION, CONF_RULE, CONF_USER, NAME, PRIORITY, TYPE) values (36, 'vacation-test', 0, 0, 2, 2, 2, 2, '全局', 1, 'process')
    
    --  还有很多
    
    insert into BPM_CONF_NODE (CONF_BASE_ID, CODE, CONF_FORM, CONF_LISTENER, CONF_NOTICE, CONF_OPERATION, CONF_RULE, CONF_USER, NAME, PRIORITY, TYPE) values (36, 'sid-27074EEB-618B-4A8E-8A7E-E3D44B650878', 0, 0, 0, 0, 0, 0, '调整申请', 8, 'userTask')

     

    我们从以上sql语句可以知道,其实deploy操作,是一个非常复杂的步骤,在这一步中:

    系统从act-ge-bytearray表中,根据原始的modeler绘图数据,首先进行语法校验,合格的话,就进行“编译操作”,将图形转换成xml数据和bng图片数据,然后存入act-ge-bytearray表,并且在act-re-procdef表中,建立一条流程记录,最后在act-re-deployment表中建立数据。

    然后,在bpm_表群中,建立数据,这里会对整个流程进行按元素分解,存入base表和node表中,步骤超多的。

     

    第四步 进行请假流程的流程定义管理和进行流程配置管理

    流程管理的总后台页面是:
    4

    而这个页面是为了操作数据库中的xml文件

    4

    而我们的参考xml文件是这样的:
    4

    我现在还不清楚,具体的设置过程,所以需要一步一步设置来看一下xml改变的过程》》》》》》

    现在,我卡在了Activiti modeler这个部分,正在网上到处搜寻这个建模器的使用教程。

  • 相关阅读:
    Flex通信-Java服务端通信实例
    myeclips破解
    最简单的基于FFmpeg的移动端例子:Android 视频转码器
    Kapacitor行为测试
    mydumper备份原理和使用方法
    csdn课堂学习
    maven 遇到failOnMissingWebXml有关问题解决方法
    Oracle中NVL、NVL2、DECODE函数的用法
    Mybatis 一对多 多对1
    Linux编译ffmpeg
  • 原文地址:https://www.cnblogs.com/haore147/p/4719922.html
Copyright © 2011-2022 走看看