2015-8-10工作日志
1. 工作規(guī)劃:完成系統(tǒng)請(qǐng)假管理的功能。
(1)根據(jù)系統(tǒng)需求完成請(qǐng)假管理model;
(2)進(jìn)行請(qǐng)假流程的deployment;
(3)進(jìn)行請(qǐng)假流程的流程定義管理;
(4)進(jìn)行流程配置管理;
(5)發(fā)起請(qǐng)假管理模塊;
(6)進(jìn)行請(qǐng)假管理及之后各UserTask任務(wù)頁面的表單頁面編寫。
(7)在各級(jí)頁面設(shè)置代理功能
?
第一步:根據(jù)系統(tǒng)需求完成請(qǐng)假管理model
我想根據(jù)系統(tǒng)前端界面的操作過程,獲取數(shù)據(jù)庫的操作日志,從而得知有哪些表被變動(dòng)了。所以,我要把mysql的日志功能打開:
可是我發(fā)現(xiàn),網(wǎng)上找不到mysql 5.7 的正確打開方式,最后還是csdn的lvjin老師的博客給出了正確的配置方式。
mysql 新老版本之間的差異性還是有的。
但是,日志的原生格式可視化性較差,利用navicat的日志查看工具來看,效果更好一點(diǎn)兒。
為了得到程序的正常執(zhí)行流程,我想通過slf4j進(jìn)行l(wèi)og功能,并且lemon OA 已經(jīng)集成這樣的功能,直接調(diào)用就好了。
但是slf4j不會(huì)用,利用關(guān)鍵字“slf4j+ api”找到了slf4j的api頁面:http://www.slf4j.org/api/org/slf4j/Logger.html
利用關(guān)鍵字“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();},會(huì)執(zhí)行如下三條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,'')??
由于activiti引擎圖的繪制比較麻煩,我原打算通過數(shù)據(jù)庫內(nèi)數(shù)據(jù)的直接復(fù)制,將lemon老的請(qǐng)假流程model數(shù)據(jù),進(jìn)行行級(jí)復(fù)制,可是我發(fā)現(xiàn)老的數(shù)據(jù)不在了。而且在act_ge_bytearray表中的數(shù)據(jù)不是xml,而是json,如下圖:
所以,利用手動(dòng),自己拖拽畫一下圖吧,以后避免不了的。
在modeler建模器中,連接線不是通過手動(dòng)放上去而是當(dāng)你制定下一級(jí)元素時(shí),它能夠?yàn)槟阕詣?dòng)添加。我一開始老實(shí)加不上去。
?
?
第二步 進(jìn)行請(qǐng)假流程的deployment
在點(diǎn)擊部署按鈕后,會(huì)發(fā)生如下事件:
?
當(dāng)在modeler建模器中,點(diǎn)擊保存按鈕后,會(huì)發(fā)生如下sql:
-- 從model表中,獲得source表編號(hào)id select * from ACT_RE_MODEL where ID_ = '55007'-- 在bytearray表中,根據(jù)編號(hào)id,獲得具體的modeler 建模器類型數(shù)據(jù) 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)-- 執(zhí)行插入操作insert into ACT_RE_DEPLOYMENT(ID_, NAME_, CATEGORY_, TENANT_ID_, DEPLOY_TIME_)values('55021', 'vacation_requset003', null, '', '2015-08-10 14:35:11.611')-- 執(zhí)行數(shù)據(jù)更新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=\"填寫請(qǐng)假單\"></userTask>-- xml數(shù)據(jù)</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-- 圖片二進(jìn)制數(shù)據(jù)\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,'')-- 最后設(shè)置關(guān)聯(lián) 將model和deployment關(guān)聯(lián)起來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語句的,其實(shí)為了能夠更好地配置流程,咖啡兔老師還建立了以bpm_為前綴的表群,這些表主要是配置表的node節(jié)點(diǎn)數(shù)據(jù),如下:
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, '調(diào)整申請(qǐng)', 8, 'userTask')?
我們從以上sql語句可以知道,其實(shí)deploy操作,是一個(gè)非常復(fù)雜的步驟,在這一步中:
系統(tǒng)從act-ge-bytearray表中,根據(jù)原始的modeler繪圖數(shù)據(jù),首先進(jìn)行語法校驗(yàn),合格的話,就進(jìn)行“編譯操作”,將圖形轉(zhuǎn)換成xml數(shù)據(jù)和bng圖片數(shù)據(jù),然后存入act-ge-bytearray表,并且在act-re-procdef表中,建立一條流程記錄,最后在act-re-deployment表中建立數(shù)據(jù)。
然后,在bpm_表群中,建立數(shù)據(jù),這里會(huì)對(duì)整個(gè)流程進(jìn)行按元素分解,存入base表和node表中,步驟超多的。
?
第四步 進(jìn)行請(qǐng)假流程的流程定義管理和進(jìn)行流程配置管理
流程管理的總后臺(tái)頁面是:
而這個(gè)頁面是為了操作數(shù)據(jù)庫中的xml文件
而我們的參考xml文件是這樣的:
?
我現(xiàn)在還不清楚,具體的設(shè)置過程,所以需要一步一步設(shè)置來看一下xml改變的過程》》》》》》
現(xiàn)在,我卡在了Activiti modeler這個(gè)部分,正在網(wǎng)上到處搜尋這個(gè)建模器的使用教程。
轉(zhuǎn)載于:https://www.cnblogs.com/haore147/p/4719922.html
總結(jié)
以上是生活随笔為你收集整理的2015-8-10工作日志的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 四叶草默认启动设置方法
- 下一篇: CPC客户端编写新申请时报错异常来自 H