jeesite中工作流activity使用详解

jeesite中使用activity使用详解。

  • 常规业务实现
  • 业务结合activity代码过程整理

常规业务整合

1.实体类中继承ACT业务流程实体类

业务结合activity代码过程整理

1.启动流程

保存业务表单时、启动工作流

//保存业务表单时、启动工作流
@Transactional(readOnly = false)
    public void save(OaNotify oaNotify, Map<String, Object> variables) {
        //判断是否是新增数据
        if (oaNotify.getIsNewRecord()) {
            super.save(oaNotify);
            // 更新发送接受人记录
            oaNotifyRecordDao.deleteByOaNotifyId(oaNotify.getId());
            if (oaNotify.getOaNotifyRecordList().size() > 0) {
                oaNotifyRecordDao.insertAll(oaNotify.getOaNotifyRecordList());
            }
            /*********启动流程**************/
            // 用来设置启动流程的人员ID,引擎会自动把用户ID保存到activiti:initiator中
            identityService.setAuthenticatedUserId(oaNotify.getCurrentUser().getLoginName());   
            // 启动流程
            String businessKey = oaNotify.getId().toString();
            //设置参数(在流程图中设置的${变量},在这里赋值)
            variables.put("type", "oaNotify");
            variables.put("busId", businessKey);
            variables.put("deptLeader", "sd_jsb");
            ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("notice", "oa_notify:"+businessKey, variables);
            //更新公告表中的流程节点
            oaNotify.setProcessInstanceId(processInstance.getId());
            dao.updateProcessInstanceId(oaNotify);

        } 
    }

2.待办列表

在流程启动中会配置下一个节点的审核人员。流程启动后,该人员登录系统在待办任务中会看到待办事项,待办事项的实现代码如下所示:

//查询通知公告代办列表
public Page<OaNotify> find(Page<OaNotify> page, OaNotify oaNotify) {
        //设置数据权限
            oaNotify.getSqlMap().put("dsf", dataScopeFilter(oaNotify.getCurrentUser(), "o", "u"));
            oaNotify.setPage(page);
            page.setList(dao.findList(oaNotify));
            List<OaNotify> list=new ArrayList<OaNotify>();
            //循环遍历公告内容
            for(OaNotify item : page.getList()) {
                //获取流程实例ID
                String processInstanceId = item.getProcessInstanceId();
                //根据流程实例id获取当前任务节点
                Task task = taskService.createTaskQuery().processInstanceId(processInstanceId).active().singleResult();
                item.getAct().setTask(task);
                //获取该流程的历史实例信息
                HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
                if(historicProcessInstance!=null) {                        
                    item.getAct().setHisProIns(historicProcessInstance);
                    item.getAct().setProcDef(repositoryService.createProcessDefinitionQuery().processDefinitionId(historicProcessInstance.getProcessDefinitionId()).singleResult());
                } else {
                    ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).active().singleResult();
                    if (processInstance != null){
                        item.getAct().setProcIns(processInstance);
                        item.getAct().setProcDef(repositoryService.createProcessDefinitionQuery().processDefinitionId(processInstance.getProcessDefinitionId()).singleResult());
                    }
                }
                list.add(item);
            }
            page.setList(list);
            return page;
        }
    <shiro:hasPermission name="oa:oaNotify:edit">
        <a href="${ctx}/act/task/form?taskId=${oaNotify.act.task.id}&taskName=${fns:urlEncode(oaNotify.act.task.name)}&taskDefKey=${oaNotify.act.task.taskDefinitionKey}&procInsId=${oaNotify.act.task.processInstanceId}&procDefId=${oaNotify.act.task.processDefinitionId}&status=${status}">任务办理</a>
        <a target="_blank" href="${ctx}/act/task/trace/photo/${oaNotify.act.task.processDefinitionId}/${oaNotify.act.task.executionId}">跟踪</a>
        <a target="_blank" href="${pageContext.request.contextPath}/act/diagram-viewer?processDefinitionId=${oaNotify.act.task.processDefinitionId}&processInstanceId=${oaNotify.act.task.processInstanceId}">跟踪</a>
                                &nbsp; 
                        </shiro:hasPermission>

3.通过任务办理进行业务表单页面

审核用户通过代办列表中的任务办理按钮,进入审批页面。审批页面需要获取流程相关信息和展示流程节点信息,代码如下:

<form:form id="inputForm" modelAttribute="oaNotify" action="${ctx}/oa/oaNotify/subApprove" method="post" class="form-horizontal">
        <form:hidden path="id"/>
        <form:hidden path="act.flag" id="flag"/>
        <!-- 当前节点id -->
        <form:hidden path="act.taskId"/>
        <!-- 当前节点名称 -->
        <form:hidden path="act.taskName"/>
        <!-- 当前节点流程key -->
        <form:hidden path="act.taskDefKey"/>
        <!-- 当前流程节点id -->
        <form:hidden path="act.procInsId"/>
        <!-- 当前流程实例id -->
        <form:hidden path="act.procDefId"/>
        ...其他表单信息展示
        <div class="control-group">
                <label class="control-label">审批意见:</label>
                <div class="controls">
                    <form:textarea path="act.comment"/>
                    <span class="help-inline"><font color="red">*</font> </span>
                </div>
            </div>
            <shiro:hasPermission name="oa:Leave:edit">
                <input id="btnSubmit" class="btn btn-primary" type="submit" value="通过" onclick="javascript:$('#flag').val('yes');"/>&nbsp;
                <input id="btnSubmit2" class="btn btn-inverse" type="submit" value="驳回" onclick="javascript:$('#flag').val('no');"/>&nbsp;
            </shiro:hasPermission>
            <input id="btnCancel" class="btn" type="button" value="返 回" onclick="history.go(-1)"/>
        </div>
        <c:if test="${not empty oaNotify.id}">
            //展示流程节点信息
            <act:histoicFlow procInsId="${oaNotify.act.procInsId}" />
        </c:if>
    </form:form>

4.提交审批意见

在审批页面录入审批意见后点击通过或驳回就完成审批。后台代码如下:

    /***
     * 提交审核
     * @param oaNotify
     * @param model
     * @return
     */
    @RequestMapping(value = "subApprove")
    public String subApprove(OaNotify oaNotify, Model model) {
    //  oaNotify.preUpdate();
        oaNotifyService.save(oaNotify);
        oaNotify.getAct().setComment(("yes".equals(oaNotify.getAct().getFlag())?"[重申] ":"[销毁] ")+oaNotify.getAct().getComment());
        // 完成流程任务
        Map<String, Object> vars = Maps.newHashMap();
        //vars中的参数用于流程设计器中配置的${变量名}赋值
        vars.put("result", "yes".equals(oaNotify.getAct().getFlag())? "1" : "0");
        vars.put("xxzxLeader", "sd_zhb");
        actTaskService.complete(oaNotify.getAct().getTaskId(), oaNotify.getAct().getProcInsId(), oaNotify.getAct().getComment(), oaNotify.getTitle(), vars);
        return "modules/oa/notifyForm";
    }
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 活动(activity)是工作流(workflow)的基本组成部分,用来表示一个特定的任务或操作。在CSND,我们详细讨论了工作流以及与之相关的活动的概念和用法。 工作流是指一系列有序的活动,这些活动按照一定的流程和规则组织在一起,以实现特定的目标或完成一项任务。通过工作流,可以将复杂的业务流程分解为一系列简单的活动,使得整个过程更加可控和可管理。 在CSND上,我们对活动进行了详细的阐述。活动可以定义为流程的一个步骤或一个任务,它可以是人工(即由人手动完成)、自动(即由系统自动执行)或者是一个子流程(即将一个大的流程拆分为若干小的活动序列)。活动可以具有特定的输入和输出,并且可以与其他活动之间存在依赖关系和条件约束。 在CSND,我们介绍了如何设计和构建一个有效的工作流,包括定义活动的输入和输出、规划活动的执行顺序和条件、以及监控和管理工作流的执行过程。我们还介绍了如何使用工作流引擎来自动化工作流的执行,并且讨论了一些常见的工作流模式和最佳实践。 总结来说,在CSND上我们详解了活动和工作流的概念、用法和最佳实践。了解这些概念和技术可以帮助开发人员和系统设计师更好地理解和设计复杂的业务流程,提高工作效率和质量。 ### 回答2: 工作流是一种将工作任务自动化、组织和跟踪的方法。在计算机科学领域,工作流主要用于描述和管理一组相关联的任务,以及控制这些任务之间的流程和依赖关系。 CSDN(国软件开发网)是一个面向开发者和技术爱好者的社区。在CSDN上,人们可以分享编程经验、交流解决方案,以及获取各种技术资源。 在CSDN上,关于工作流的讨论和文章非常丰富。人们可以找到关于工作流概念、原理、实现方法以及在不同领域的应用等方面的详细说明。CSDN的工作流话题讨论区是一个热门的社区板块,许多开发者在这里分享自己的经验和见解。 在CSDN上,人们可以学习到各种工作流技术的实际应用。例如,人们可以了解到如何使用流程引擎来设计和管理复杂的业务流程,以及如何使用工作队列来实现任务调度和分配。此外,CSDN还提供了许多工作流软件和工具的评价和比较,帮助人们选择适合自己需求的工作流解决方案。 总的来说,CSDN是一个为开发者和技术爱好者提供丰富工作流信息和资源的平台。无论是初学者还是熟练的开发者,都可以在CSDN上找到对工作流感兴趣的内容,并从提高自己的技能和知识水平。 ### 回答3: csdn(CSDN)是一个面向IT技术开发者的社区平台,提供各种技术文档、博客、问答、资讯等服务。其activity工作流是csdn上的两个重要话题。 ActivityActivity)是Android开发的一个核心组件,用于构建用户界面和处理用户交互。它代表一个具有用户界面的单个屏幕,能够接收用户的输入并展示相关信息。在Android应用程序,每个Activity都是由一个独立的界面组成,可以通过调用其他Activity来实现界面间的跳转和切换。Activity还可以处理生命周期事件,如创建、启动、暂停、恢复、停止和销毁等,确保应用程序在用户操作或系统资源限制时的正确响应。 工作流(Workflow)是一种逻辑上相关的活动或任务的有序排列,以完成特定的目标。它可以由一系列的操作、决策和条件构成,以及可以并行或串行执行的操作步骤。工作流通常用于解决复杂的业务流程,通过将任务分解成一系列的步骤,每个步骤都有其特定的责任和要求。在软件开发工作流可以用于优化业务流程、提高工作效率,并提供实时的监控和控制。工作流技术还支持自动化和智能化的流程执行,可减少人工干预,提高工作质量和准确性。 在csdn上,关于activity工作流的文章和教程非常丰富。开发者可以在平台上学习如何创建和管理Android应用程序Activity,并了解常见的生命周期事件和处理方式。此外,还可以找到关于工作流的相关文章,了解如何利用工作流技术来设计和优化复杂的业务流程,提高工作效率和质量。 总体而言,csdn是一个向开发者提供技术资源和交流平台的社区,涵盖了包括activity工作流在内的各种技术话题。在这里,开发者可以获取到相关的学习材料和资源,以提升自己的技术水平并解决实际问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值