zoukankan      html  css  js  c++  java
  • 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、加载bpmnxml)文件,获得一个流程定义对象

    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}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

    修改UserServiceImplsave方法

     

     

    3. 设计物流配送流程

    流程定义的id

     

    使用排他网关:

     

    使用组任务:

     

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

     

     

    4. 启动物流配送流程

    修改工作单类

     

    修改工作单hbm映射文件

     

    4.1 查询工作单列表数据

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

     

    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',120">任务编号</th>

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

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

    <th data-options="field:'pick',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',120">任务编号</th>

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

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

    <th data-options="field:'pick',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 办理其他任务

     

     

  • 相关阅读:
    php 对输入信息的过滤代码
    svn命令备忘
    php下载文件的代码示例
    html中meta的用法
    程序员技术练级攻略
    JavaScript输出对象的内部结构
    转载Web架构师成长之路
    php代码执行效率测试工具xhprof安装&使用
    [译]Pro ASP.NET MVC 3 Framework 3rd Edition (Chapter 20 JQuery) 5.Using jQuery Events 使用jQuery事件
    [译]Pro ASP.NET MVC 3 Framework 3rd Edition (Chapter 20 JQuery) 6.Using jQuery Visual Effects 使用jQuery特效
  • 原文地址:https://www.cnblogs.com/wujizun/p/6938150.html
Copyright © 2011-2022 走看看