BOS项目 第11天(activiti工作流第三天,流程实例管理、项目中的用户和角色同步到activiti的用户和组表、设计物流配送流程、启动物流配送流程、组任务操作(查询、拾取)、个人任务操作(查询、办理))

BOS项目笔记 第11天

今天内容安排:

1、流程实例管理(查询、查看运行状态)

2、将bos系统中的用户和角色同步到activiti的用户和组表

3、设计物流配送流程

4、启动物流配送流程

5、组任务操作(查询、拾取)

6、个人任务操作(查询、办理)

1. 流程实例管理

1.1 查询流程实例列表

第一步:创建一个流程实例管理Action,提供list方法,查询流程实例列表数据

第二步:配置struts.xml

第三步:提供processinstance.jsp页面,展示列表数据


<s:iterator value="list">

<tr>

<td>${id }</td>

<td>${processDefinitionId }</td>

<td>${activityId }</td>

<td>

<div id="div${id }"></div>

<script type="text/javascript">

//根据流程实例id查询流程变量

$.post("${pageContext.request.contextPath}/processInstanceAction_findData.action",{"id":‘${id}‘},function(data){

$("#div${id}").html(data);

});

</script>

<script type="text/javascript">

function showPng(id){

window.showModalDialog("${pageContext.request.contextPath}/processInstanceAction_showPng.action?id="+id);

}

</script>

</td>

<td>

<a onclick="showPng(‘${id}‘);" href="#">查看流程图</a>

</td>

</tr>

</s:iterator>

第四步:在Action中提供findData的方法,根据流程实例id查询对应的流程变量数据

1.2 查询流程实例运行状态

第一步:为“查看流程图”按钮绑定事件


<script type="text/javascript">

function showPng(id){

//弹出模式对话框

window.showModalDialog("${pageContext.request.contextPath}/processInstanceAction_showPng.action?id="+id);

}

</script>

<a class="easyui-linkbutton" data-options="iconCls:‘icon-search‘"

onclick="showPng(‘${id}‘);" href="#">查看流程图</a>

第二步:在Action中提供showPng方法,根据流程实例id查询坐标、部署id、图片名称


/**

* 根据流程实例id查询坐标、部署id、图片名称

*/

public String showPng(){

//1、根据流程实例id查询流程实例对象

ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(id).singleResult();

//2、根据流程实例对象查询流程定义id

String processDefinitionId = processInstance.getProcessDefinitionId();

//3、根据流程定义id查询流程定义对象

ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionId(processDefinitionId).singleResult();

//4、根据流程定义对象查询部署id

deploymentId = processDefinition.getDeploymentId();

imageName = processDefinition.getDiagramResourceName();

//查询坐标

//1、获得当前流程实例执行到哪个节点

String activityId = processInstance.getActivityId();//usertask1

//2、加载bpmn(xml)文件,获得一个流程定义对象

ProcessDefinitionEntity pd = (ProcessDefinitionEntity) repositoryService.getProcessDefinition(processDefinitionId);//查询act_ge_bytearray

//3、根据activitiId获取含有坐标信息的对象

ActivityImpl findActivity = pd.findActivity(activityId);

int x = findActivity.getX();

int y = findActivity.getY();

int width = findActivity.getWidth();

int height = findActivity.getHeight();

ActionContext.getContext().getValueStack().set("x", x);

ActionContext.getContext().getValueStack().set("y", y);

ActionContext.getContext().getValueStack().set("width", width);

ActionContext.getContext().getValueStack().set("height", height);

return "showPng";

}

第三步:配置struts.xml,跳转到image.jsp页面

第四步:提供image.jsp页面


<!-- 1.获取到规则流程图 -->

<img style="position: absolute;top: 0px;left: 0px;"

src="processInstanceAction_viewImage?deploymentId=${deploymentId }&imageName=${imageName}">

<!-- 2.根据当前活动的坐标,动态绘制DIV -->

<div style="position: absolute;border:1px solid red;top:${y-1}px;left:${x-1}px;width:${width}px;height:${height}px;">

</div>

第五步:在Action中提供viewImage方法,根据部署id和图片名称获得对应的输入流

第六步:配置struts.xml

2. 将bos系统中用户和角色同步到activiti

2.1 将角色同步到act_id_group表

修改RoleServiceImpl中的save方法

2.2 将用户同步到act_id_user表

修改UserServiceImpl的save方法

3. 设计物流配送流程

l 流程定义的id:

l 使用排他网关:

l 使用组任务:

l 任务的id(对应Action中的方法名):

4. 启动物流配送流程

l 修改工作单类

l 修改工作单hbm映射文件

4.1 查询工作单列表数据

第一步:在工作单管理Action中提供list方法,查询start为0的工作单

Service代码:

第二步:配置struts.xml

第三步:提供startransfer.sjp页面,展示工作单列表数据

4.2 根据key启动流程实例

第一步:修改列表页面中启动按钮绑定事件

第二步:在工作单Action中提供start方法,启动物流配送流程对应的流程实例

第三步:在工作单Service中提供start方法

5. 组任务操作

5.1 查询组任务

第一步:创建一个TaskAction,提供查询组任务的方法findGroupTask

第二步:配置struts.xml

第三步:提供grouptask.jsp页面,展示任务列表数据


<table class="easyui-datagrid" fit="true" nowrap="false">

<thead>

<tr>

<th data-options="field:‘id‘,width:120">任务编号</th>

<th data-options="field:‘name‘,width:120">任务名称</th>

<th data-options="field:‘data‘,width:520">业务数据</th>

<th data-options="field:‘pick‘,width:120">拾取任务</th>

</tr>

</thead>

<script type="text/javascript">

function showData(taskId){

//查询流程变量数据

$.post("${pageContext.request.contextPath}/taskAction_showData.action",{"taskId":taskId},function(data){

$("#div"+taskId).html(data);

});

}

function toggleData(taskId){

$("#div"+taskId).toggle();

}

</script>

<tbody>

<s:iterator value="list" var="task">

<tr>

<td><s:property value="id"/> </td>

<td><s:property value="name"/></td>

<td>

<a onclick="toggleData(‘${id}‘)" class="easyui-linkbutton">查看业务数据</a>

<div style="display: none" id="div${id }">

<script type="text/javascript">

showData(‘${id}‘);

</script>

</div>

</td>

<td>

<s:a action="taskAction_takeTask" namespace="/" cssClass="easyui-linkbutton">拾取

<s:param name="taskId" value="id"></s:param>

</s:a>

</td>

</tr>

</s:iterator>

</tbody>

</table>

5.2 拾取组任务

第一步:修改jsp页面中拾取按钮事件

第二步:在TaskAction中提供拾取任务的方法

第三步:配置struts.xml

6. 个人任务操作

6.1 查询个人任务

第一步:在TaskAction中提供findPersonalTask,查询当前登录人的个人任务

第二步:配置struts.xml

第三步:提供personaltask.jsp页面,展示个人任务列表数据


<table class="easyui-datagrid" fit="true" nowrap="false">

<thead>

<tr>

<th data-options="field:‘id‘,width:120">任务编号</th>

<th data-options="field:‘name‘,width:120">任务名称</th>

<th data-options="field:‘data‘,width:520">业务数据</th>

<th data-options="field:‘pick‘,width:120">办理任务</th>

</tr>

</thead>

<script type="text/javascript">

function showData(taskId){

$.post("${pageContext.request.contextPath}/taskAction_showData.action",{"taskId":taskId},function(data){

$("#div"+taskId).html(data);

});

}

function toggleData(taskId){

$("#div"+taskId).toggle();

}

</script>

<tbody>

<s:iterator value="list" var="task">

<tr>

<td><s:property value="id"/> </td>

<td><s:property value="name"/></td>

<td>

<a onclick="toggleData(‘${id}‘)" class="easyui-linkbutton">查看业务数据</a>

<div style="display: none" id="div${id }">

<script type="text/javascript">

showData(‘${id}‘);

</script>

</div>

</td>

<td>

<s:a action="taskAction_%{taskDefinitionKey}" namespace="/" cssClass="easyui-linkbutton">

办理任务

<s:param name="taskId" value="id"></s:param>

</s:a>

</td>

</tr>

</s:iterator>

</tbody>

</table>

6.2 办理个人任务

6.2.1 办理审核工作单任务

第一步:修改personaltask.jsp页面中办理任务按钮的事件

第二步:在TaskAction中提供checkWorkOrderManage方法,处理审核工作单任务


/**

* 办理审核工作单任务

*/

public String checkWorkOrderManage() {

// 根据任务id查询任务对象

Task task = taskService.createTaskQuery().taskId(taskId).singleResult();

// 根据任务对象查询流程实例id

String processInstanceId = task.getProcessInstanceId();

// 根据流程实例id查询流程实例对象

ProcessInstance processInstance = runtimeService

.createProcessInstanceQuery()

.processInstanceId(processInstanceId).singleResult();

String workordermanageId = processInstance.getBusinessKey();

Workordermanage workordermanage = workordermanageService.findById(workordermanageId);

if(check == null){

//跳转到审核页面

// 跳转到一个审核工作单页面,展示当前对应的工作单信息

ActionContext.getContext().getValueStack().set("map", workordermanage);

return "check";

}else{

workordermanageService.checkWorkordermanage(taskId,check,workordermanageId);

return "topersonaltasklist";

}

}

第三步:如果是跳转页面,配置struts.xml

第四步:提供check.jsp页面,展示审核工作单表单页面

第五步:在工作单Service中提供方法,处理审核工作单任务

6.2.2 办理其他任务

时间: 2024-10-24 08:49:06

BOS项目 第11天(activiti工作流第三天,流程实例管理、项目中的用户和角色同步到activiti的用户和组表、设计物流配送流程、启动物流配送流程、组任务操作(查询、拾取)、个人任务操作(查询、办理))的相关文章

Activiti流程实例管理

1.启动流程 /** * 1 启动流程 * 当流程到达一个节点时,会在act_ru_execution表中产生1条数据 * 如果当前节点是用户任务节点,这时会在act_ru_task表中产生1条数据(任务的办理人,任务的创建时间) */ @Test public void startProcess() throws Exception { /** * v1 myProcess:2:604 * v2 myProcess:3:704 */ // runtimeService.startProcess

jbpm流程发布以及流程实例管理

> 一.流程部署 1.流程引擎获取 ProcessEngine processEngine = new Configuration() .setResource("my-own-configuration-file.xml") .buildProcessEngine(); 实际开发中我们一般通过spring配置文件通过相关方法获取. 2.根据流程引擎获取相应地webservice服务. RepositoryService repositoryService = processEn

框架 day57 BOS项目练习(流程定义/实例管理,bos用户角色同步activiti用户表组表)

BOS项目笔记第11天 内容: 1.提供新的json文件,修改系统菜单(加入工作流的菜单) 2.流程定义管理(查询.部署流程.查看png流程图片) 3.流程实例管理(查询.查看运行状态) 4.将bos系统中的用户数据和角色数据同步到activiti的用户表和组表 1.    提供新的json文件,修改系统菜单(加入工作流的菜单) 2.    流程定义管理 第一步:创建一个ProcessDefinitionAction,提供list方法,并注入流程引擎对象  查询 @Controller @Sco

BOS项目 第9天(activiti工作流第一天,工作流概念、工作流所需要的23张表、eclipse安装流程设计插件、流程api基本操作)

BOS项目笔记 第9天 今天内容安排: 1.工作流概念 2.安装流程设计器插件(eclipse)----设计流程图 3.创建activiti数据库(23张表) 4.activiti的API操作流程 1. 工作流概念 工作流(Workflow),就是"业务过程的部分或整体在计算机应用环境下的自动化",它主要解决的是"使在多个参与者之间按照某种预定义的规则传递文档.信息或任务的过程自动进行,从而实现某个预期的业务目标,或者促使此目标的实现". 工作流管理系统(Workf

activiti工作流的web流程设计器整合视频教程 SSM和独立部署

本视频为activiti工作流的web流程设计器整合视频教程 整合Acitiviti在线流程设计器(Activiti-Modeler 5.21.0 官方流程设计器) 本视频共讲了两种整合方式 1. 流程设计器和其它工作流项目分开部署的方式 2. 流程设计器和SSM框架项目整合在一起的方式 视频大小 1.13 GB ~[获取地址] QQ313596790 本视频均为本人亲自录的,另免费附加赠送Activiti工作流视频(企业开发实例讲解) (这个赠送的Activiti工作流视频里面的流程设计器用的

activiti,工作流,web流程设计器,SSM,activiti工作流

本视频为activiti工作流的web流程设计器整合视频教程 整合Acitiviti在线流程设计器(Activiti-Modeler 5.21.0 官方流程设计器) 本视频共讲了两种整合方式 1. 流程设计器和其它工作流项目分开部署的方式 2. 流程设计器和SSM框架项目整合在一起的方式 视频大小 1.13 GB [获取地址] QQ313596790 本视频均为本人亲自录的,另免费附加赠送Activiti工作流视频(企业开发实例讲解) (这个赠送的Activiti工作流视频里面的流程设计器用的e

activiti工作流的web流程设计器整合视频教程

本视频为activiti工作流的web流程设计器整合视频教程 整合Acitiviti在线流程设计器(Activiti-Modeler 5.21.0 官方流程设计器) 本视频共讲了两种整合方式 1. 流程设计器和其它工作流项目分开部署的方式 2. 流程设计器和SSM框架项目整合在一起的方式 视频大小 1.13 GB [获取地址] 本视频均为本人亲自录的,另免费附加赠送Activiti工作流视频(企业开发实例讲解) (这个赠送的Activiti工作流视频里面的流程设计器用的ecllipse的插件)

activiti工作流的web流程设计器整合视频教程 SSM 和 独立部署

本视频为activiti工作流的web流程设计器整合视频教程 整合Acitiviti在线流程设计器(Activiti-Modeler 5.21.0 官方流程设计器) 本视频共讲了两种整合方式 1. 流程设计器和其它工作流项目分开部署的方式 2. 流程设计器和SSM框架项目整合在一起的方式 视频大小 1.13 GB [获取地址] 本视频均为本人亲自录的,另免费附加赠送Activiti工作流视频(企业开发实例讲解) (这个赠送的Activiti工作流视频里面的流程设计器用的ecllipse的插件)

activiti工作流的web流程设计器整合视频教程 SSM 和独立部署

本视频为activiti工作流的web流程设计器整合视频教程 整合Acitiviti在线流程设计器(Activiti-Modeler 5.21.0 官方流程设计器) 本视频共讲了两种整合方式 1. 流程设计器和其它工作流项目分开部署的方式 2. 流程设计器和SSM框架项目整合在一起的方式 视频大小 1.13 GB [获取地址] 本视频均为本人亲自录的,另免费附加赠送Activiti工作流视频(企业开发实例讲解) (这个赠送的Activiti工作流视频里面的流程设计器用的ecllipse的插件)