由于activiti-explorer-5.14的web演示程序使用的是vaadin服务器端ui组件,程序关键点找起来还是有些麻烦,vaadin的这种web框架,就是不需要专门美术界面人员,只需要程序员一人,就可以生成程序化的web界面,按钮、窗口什么的都比较标准化,不大可能有参与太多的创意设计以满足功能为主的一种框架,我现在讨厌这种模式。

我需要流程定义管理、modeler模型编辑修改等代码段,终于在activiti-explorer-5.14-sources.jar\org\activiti\editor\ui下找到这些核心工作类:

SelectEditorComponent.java

NewModelPopupWindow.java //新建模型

ImportUploadReceiver.java //导入模型

ImageStreamSource.java //流程图数据流

EditorProcessDefinitionPage.java //编辑定义页

EditorProcessDefinitionInfoComponent.java //编辑流程定义信息组件

EditorProcessDefinitionDetailPanel.java //流程定义细节工具栏

DeployModelPopupWindow.java //部署模型弹出窗口

DeleteModelPopupWindow.java //删除模型弹出窗口

CopyModelPopupWindow.java //拷贝模型弹出窗口

ConvertProcessDefinitionPopupWindow.java //流程定义转换成模型类

/**
 * 读取流程历史记录
 *
 * @return
 */
public PaginationDto findFinishedProcessInstacesNotPage(String processInstanceId,PaginationDto pagination) {
String sql = "select * from act_hi_actinst t where t.proc_inst_id_ = '"+processInstanceId+"' and t.act_type_ != 'exclusiveGateway' and t.act_type_ != 'endEvent' and t.END_TIME_ is not null order by END_TIME_ desc";
List<HistoricActivityInstance> activityInstances = historyService.createNativeHistoricActivityInstanceQuery().sql(sql).list();
int totalCount = activityInstances.size();
PaginationDto p = new PaginationDto();
p.setDraw(pagination.getDraw());
p.setLength(pagination.getLength());
p.setStart(pagination.getStart());
p.setRecordsTotal(totalCount);
p.setRecordsFiltered(totalCount);
if(totalCount<1){
p.setData(new ArrayList<Object>());
}else{
List<AdverseEventHistoryProcessDTO> datas = new ArrayList<AdverseEventHistoryProcessDTO>();
for(HistoricActivityInstance activityInstance : activityInstances){
AdverseEventHistoryProcessDTO data = new AdverseEventHistoryProcessDTO();
//任务ID
String taskId = activityInstance.getTaskId();
data.setTaskId(StringUtils.defaultIfEmpty(taskId, ""));
if(StringUtils.isNotEmpty(taskId)){
ActHiComment coment =(ActHiComment) workFlowDAO.findEntityByHql("from ActHiComment where procInstId = '"+processInstanceId+"' and taskId = '"+taskId+"'");
//操作状态
data.setOperateType(coment.getType());
//意见
data.setMessage(coment.getMessage());
}
//流程启动人设置
if(activityInstance.getActivityType().equals("startEvent")){
List<HistoricIdentityLink> historicIdentityLinks = historyService.getHistoricIdentityLinksForProcessInstance(processInstanceId);
for(HistoricIdentityLink historicIdentityLink : historicIdentityLinks){
if(historicIdentityLink.getType().equals("starter")){
data.setOperator(historicIdentityLink.getUserId());
data.setOperatorName(workFlowDAO.getUserName(historicIdentityLink.getUserId()));
data.setOperateType(WorkFlowOperationConstant.WORKFLOW_REPORT);
break;
}
}
}
//执行人
else if(StringUtils.isNotEmpty(activityInstance.getAssignee())){
data.setOperator(activityInstance.getAssignee());
data.setOperatorName(workFlowDAO.getUserName(activityInstance.getAssignee()));
}else{
data.setOperator("");
data.setOperatorName("");
}
//执行环节
data.setTaskName(activityInstance.getActivityName());
//开始时间
if(null != activityInstance.getStartTime()){
data.setStartTime(TimeConversionUtils.dateToString(activityInstance.getStartTime(), "yyyy-MM-dd HH:mm:ss"));
}
//结束时间
if(null != activityInstance.getEndTime()){
data.setEndTime(TimeConversionUtils.dateToString(activityInstance.getEndTime(), "yyyy-MM-dd HH:mm:ss"));
}
//耗时
if(null != activityInstance.getDurationInMillis()){
data.setHandleTime(String.valueOf(activityInstance.getDurationInMillis()/1000));
}
datas.add(data);
}
p.setData(datas);
}
return p;
}

 
AdministrationPage的84行

activiti源代码的细节的更多相关文章

  1. Activiti源代码分析

    ExecutionEntity内部含有parent,是一个运行树或运行路径.应该是一个流程实例的运行过程,一个实例相应一个ExecutionEntity,通过getActivity得到的是当前正在运行 ...

  2. Activiti 流程启动及节点流转源代码分析

    作者:jiankunking 出处:http://blog.csdn.net/jiankunking 本文主要是以activiti-study中的xiaomage.xml流程图为例进行跟踪分析 详细的 ...

  3. 一个jeecg整合activiti的学习样例,源代码下载

    社区成员:刘京华採用技术:jeecg+ activiti源代码下载地址:http://pan.baidu.com/s/1dDxOHrV 截图演示:  2.jpg (71.81 KB, 下载次数: 0) ...

  4. Activiti从当前任务任意回退至已审批任务

    http://www.verydemo.com/demo_c161_i143918.html import java.util.HashMap; import java.util.Iterator; ...

  5. 疯狂Workflow讲义——基于Activiti的工作流应用开 PDF 下载

    <疯狂Workflow讲义--基于Activiti的工作流应用开> 一:文档获取下载方式: 1:花20CSDN积分:可以下载:http://download.csdn.net/downlo ...

  6. [Effective JavaScript 笔记]第3章:使用函数--个人总结

    前言 这一章把平时会用到,但不会深究的知识点,分开细化地讲解了.里面很多内容在高3等基础内容里,也有很多讲到.但由于本身书籍的篇幅较大,很容易忽视对应的小知识点.这章里的许多小提示都很有帮助,特别是在 ...

  7. 【OpenCV十六新手教程】OpenCV角检测Harris角点检测

    本系列文章由@浅墨_毛星云 出品.转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/29356187 作者:毛星云(浅墨) ...

  8. 【OpenCV新手教程第14】OpenCVHough变换:霍夫变换线,霍夫变换圆汇编

    本系列文章由@浅墨_毛星云 出品.转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/26977557 作者:毛星云(浅墨) ...

  9. 【OpenCV新手教程之十八】OpenCV仿射变换 &amp; SURF特征点描写叙述合辑

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/33320997 作者:毛星云(浅墨)  ...

随机推荐

  1. 解决 Sublime text3 中文显示乱码问题【亲测可用】

    一.安装包管理器 使用Ctrl+`快捷键或者通过View->Show Console菜单打开命令行,粘贴如下代码   import urllib.request,os; pf = 'Packag ...

  2. JAVAFX开发桌面应用

    javafx中文版文档: http://www.yiibai.com/javafx/ JavaFX之FXController详解 JavaFx系列教程 含打包部署 javafx之两种局部界面的呈现方式 ...

  3. PHP遍历一个文件夹下所有文件和子文件夹的函数

    <?php function my_dir($dir) { $files = array(); if(@$handle = opendir($dir)) { //注意这里要加一个@,不然会有wa ...

  4. 【java】浅谈for循环

    for语法: for(初始化条件; 判断条件(bool型,不可缺省); 条件改变)// 初始化条件,条件改变可以是多条,eg for(x=1,y=1;x<4;x++,y++) { 执行的操作 } ...

  5. VS中生成时“sgen.exe”已退出,代码为 1解决办法

    visual studio 2010 选定web项目,右键选择“属性”—“生成”,将“生成序列化程序集”设成“关闭”. 原理分析: sgen是XML序列化程序生成器工具. 可能是这个项目里面有xml序 ...

  6. Microsoft.NET.Framework开机报错解决方法

    win10自动更新后每次开机都报错Microsoft.NET.Framework. 如下图所示: 网上查了各种各样的方法折腾了好久. 其中看到了这样一个回答 “有两种可能 你电脑里的某个软件需要使用M ...

  7. 关于Java与Map的那点事

    Java将Map拼接成“参数=值&参数=值”: 把一个map的键值对拼接成“参数=值&参数=值”即“username=angusbao&password=123456”这种形式 ...

  8. 【剑指offer】两个栈实现队列

    用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. public class Solution {        Stack<Integer> stack ...

  9. Android开发之动态添加控件

    动态添加TextView控件: 一:创建一个Android project项目 activity_main.xml文件: 1.用两个LinearLayout布局分别包裹一对TextView,EditT ...

  10. mongodb并列查询,模糊查询

    在mongodb的查询语句中可以这么写{“a”:$gt(1),"a":$lt(5)} 但这么查询出来的值会做单个条件匹配,最终结果为a大于1的集合+a小于5的集合 如果需要实现去交 ...