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,'')  

44

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) andVERSION_ = (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_JOBwhere HANDLER_TYPE_ = 'timer-start-event'and HANDLER_CFG_ =  'process'-- ACT_RU_EVENT_SUBSCR
select * from ACT_RU_EVENT_SUBSCRwhere (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_SUBSCRwhere (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\0\0\0
IHDR\0\0n\0\01\0\0\0?\0\0DKIDATx???S?w*^??z??:ֱ^?:????WG?t۱???Zא]Ԉ??]?`?K,e??aI????R?RʥX???kQ??*ZD???[J?؞??????l???$??orr?Ir?N~??=?S-- 图片二进制数据\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0?!??ǻ1??0\0\0\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 setREV_ = 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这个部分,正在网上到处搜寻这个建模器的使用教程。

转载于:https://www.cnblogs.com/haore147/p/4719922.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/471685.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 2001. 可互换矩形的组数

文章目录1. 题目2. 解题1. 题目 用一个下标从 0 开始的二维整数数组 rectangles 来表示 n 个矩形&#xff0c;其中 rectangles[i] [widthi, heighti] 表示第 i 个矩形的宽度和高度。 如果两个矩形 i 和 j&#xff08;i < j&#xff09;的宽高比相同&#xff0c;则认为这两…

google 浏览器默认打开控制台_前端开发调试:浏览器console方法总结

今天突发奇想&#xff0c;准备总结下console的各个函数。以前都是只用一个console.log(),查了一下发现有好多&#xff0c;就记下来&#xff0c;方便以后查阅。速记consoleConsole对象提供浏览器控制台的接入&#xff0c;不同浏览器是不一样的&#xff0c;这里介绍普遍存在的Con…

江小白包装设计原型_雪碧和江小白的品牌跨界合作之旅可谓是一场品牌包装的视觉盛宴...

大家好&#xff0c;我是古小一&#xff0c;一个行走在酒水品牌包装设计不归路上的小编&#xff01;当下品牌间的跨界合作越来越多&#xff0c;消费者不但有审美疲劳的趋势&#xff0c;脑洞过大的跨界还容易引发群嘲。不过好在有热情网友的帮助&#xff0c;雪碧与江小白已经自然…

LeetCode 2002. 两个回文子序列长度的最大乘积(状态压缩+枚举状态子集+预处理)

文章目录1. 题目2. 解题2.1 超时2.2 预处理优化1. 题目 给你一个字符串 s &#xff0c;请你找到 s 中两个 不相交回文子序列 &#xff0c;使得它们长度的 乘积最大 。 两个子序列在原字符串中如果没有任何相同下标的字符&#xff0c;则它们是 不相交 的。 请你返回两个回文子…

[hdu5372 Segment Game]树状数组

题意&#xff1a;有两种操作&#xff1a;(1)插入线段&#xff0c;第i次插入的线段左边界为Li&#xff0c;长度为i (2)删除线段&#xff0c;删除第x次插入的线段。每次插入线段之前询问有多少条线段被它覆盖。 思路&#xff1a;由于插入的线段长度是递增的&#xff0c;所以第i次…

怎样从php转向java_Github标星10.8K!Java 实战博客项目分享

点击上方 Java后端&#xff0c;选择 设为星标优质文章&#xff0c;及时送达来源&#xff1a;开源最前线(ID&#xff1a;OpenSourceTop)作为程序员每天就是不停的敲代码&#xff0c;改Bug&#xff0c;写起代码来那真是行云如流水&#xff0c;但要你码出点文字&#xff0c;写点技…

Docker 部署一个用 Python 编写的 Web 应用

文章目录1. 安装 docker2. 编写代码3. 编写 Dockerfile4. 上传镜像5. 修改镜像learn from 《深入剖析Kubernetes》1. 安装 docker 在 WSL2 中安装 docker https://www.runoob.com/docker/ubuntu-docker-install.html 会报错&#xff1a; # Executing docker install script, …

python 代码文件路径注意事项

检查代码的工作路径&#xff0c;是不是代码文件所在路径 导入别处的包 基于该代码的工作路径写如下的代码&#xff0c;加入相对路径&#xff0c;可以找到要导入的文件 import sys import os sys.path.append("../xxx/") sys.path.append("../../xxx") fro…

微信小程序独立服务器的好处,微信小程序的优势和缺点

原标题&#xff1a;微信小程序的优势和缺点微信小程序从刚开始面世就引起了很多人的关注&#xff0c;虽然截止到目前&#xff0c;官方仍没有大肆宣传和推广&#xff0c;但是微信小程序的所带来的影响还是很大的&#xff0c;甚至让苹果&#xff0c;百度&#xff0c;阿里都头疼不…

LeetCode 2007. 从双倍数组中还原原数组(map)

文章目录1. 题目2. 解题1. 题目 一个整数数组 original 可以转变成一个 双倍 数组 changed &#xff0c;转变方式为将 original 中每个元素 值乘以 2 加入数组中&#xff0c;然后将所有元素 随机打乱 。 给你一个数组 changed &#xff0c;如果 change 是 双倍 数组&#xff…

怎么画韦布尔分布_手机按键寿命测试的样本数量怎么定?一文看懂 简述威布尔分布及其应用...

有一种手机按键的质量要求是&#xff0c;95%的产品的按压寿命需要达到1万次。根据这一要求&#xff0c;QC部门需要进行1.2万次的按压测试。那么QC部门需要选取多少按键来进行测试&#xff08;不允许有失效&#xff09;&#xff0c;才能保证95%的按键按压寿命达到1万次呢&#x…

Chrome浏览器报错:Origin null is not allowed by Access-Control-Allow-Origin.

问题&#xff1a;Chrome浏览器报错&#xff1a;Origin null is not allowed by Access-Control-Allow-Origin. 原因&#xff1a;.js文件中使用load()方法&#xff0c;而Chrome浏览器出于安全起见&#xff0c;不允许load本地文件。 方法&#xff1a;给Chrome添加启动参数--allow…

LeetCode 2008. 出租车的最大盈利(DP)

文章目录1. 题目2. 解题1. 题目 你驾驶出租车行驶在一条有 n 个地点的路上。 这 n 个地点从近到远编号为 1 到 n &#xff0c;你想要从 1 开到 n &#xff0c;通过接乘客订单盈利。 你只能沿着编号递增的方向前进&#xff0c;不能改变方向。 乘客信息用一个下标从 0 开始的二…

华为服务器清除系统日志,清空服务器日志

清空服务器日志 内容精选换一换为加强对系统数据的容灾管理&#xff0c;云堡垒机支持配置日志备份&#xff0c;提高审计数据安全性和系统可扩展性。本小节主要介绍如何在系统配置FTP/SFTP服务器参数&#xff0c;将日志远程备份至FTP/SFTP服务器。开启远程备份后&#xff0c;系统…

动态行转列小记

数据库环境&#xff1a;SQL SERVER 2005 最近在整理数据时&#xff0c;要将查询到的数据张贴到Excel中。在Excel中&#xff0c;要展示的行数是固定的&#xff0c;列数不固定&#xff0c; 一个一个数据的复制张贴太烦人。想了一个偷懒的方法&#xff0c;直接将查询的数据进行行转…

使用swiper_关于使用swiper制作web轮播图

我这个方法是很适用于小白的&#xff0c;利用swiper插件的应用。https://www.swiper.com.cn/这个是swiper中文官网的网址&#xff0c;上面有关于swiper的说明和使用方法。想要用到swiper插件要在官网下载swiper文件&#xff0c;如下图所示&#xff0c;在导航条上面找到下载swip…

LeetCode 2012. 数组美丽值求和

文章目录1. 题目2. 解题1. 题目 给你一个下标从 0 开始的整数数组 nums 。对于每个下标 i&#xff08;1 < i < nums.length - 2&#xff09;&#xff0c;nums[i] 的 美丽值 等于&#xff1a; 2&#xff0c;对于所有 0 < j < i 且 i < k < nums.length - 1 …

华为服务器上传文件后怎么通过链接查看,远程服务器文件上传后的操作

远程服务器文件上传后的操作 内容精选换一换本节指导您基于Linux操作系统环境完成镜像文件快速导入&#xff0c;推荐使用云平台的EulerOS云服务器作为转换镜像格式和生成位表文件的环境。Linux操作系统环境下&#xff0c;建议使用qemu-img-hw工具进行镜像格式转换。已完成镜像文…

Android学习笔记(十三)

Android中的广播机制 Android提供了一套完整的API&#xff0c;允许应用程序自由地发送和接受广播。 发送广播的方法借助于Intent&#xff0c;接受广播的方法需要广播接收器&#xff08;BroadcastsReceiver&#xff09;。 Android中的广播主要分为两种类型&#xff0c;标准广播和…

LeetCode 2013. 检测正方形(字典)

文章目录1. 题目2. 解题2.1 超时2.1 改进1. 题目 给你一个在 X-Y 平面上的点构成的数据流。设计一个满足下述要求的算法&#xff1a; 添加 一个在数据流中的新点到某个数据结构中。可以添加 重复 的点&#xff0c;并会视作不同的点进行处理。给你一个查询点&#xff0c;请你从…