工作流系统常见问题解答(FAQ).doc_第1页
工作流系统常见问题解答(FAQ).doc_第2页
工作流系统常见问题解答(FAQ).doc_第3页
工作流系统常见问题解答(FAQ).doc_第4页
工作流系统常见问题解答(FAQ).doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录1、发起相关工作流进程22、查询工作流进程输出参数33、运行时改变会签人员64、获取驱动的完成人75、获取用户各种任务数76、获取任务所在工作流进程的进程ID87、如何使工作流系统处于调试状态(debug)88、取回任务后改变相关状态89、更改会签结点人员9 工作流系统常见问题解答(FAQ)1、发起相关工作流进程在业务流程中,常有这样的情况:由一个流程中的某个任务结点触发另外一个相关的流程。目前,工作流系统可以使用下面的方式实现。画好流程图,将一个流程中触发另一个流程的结点与另一个流程的首结点绑定为相同的驱动。这样,当前者的任务完成后就同时触发一个相关的流程。如果需要在action以外触发流程,那可以使用以下方法。HashMap hmap = new HashMap(); hmap.put(rejectFormId,2); /独自发起一个流程WorkflowFactoryPlugin.getFlowEngine().startUpOneWorkflowProcess(1, /userID /dcecqis, /contextPath /exerciseForWorkflow/rejectWriteOneAction.do, /writeAction.do hmap /hashMap);startUpOneWorkflowProcess()方法参数说明/发起一个进程public void startUpOneWorkflowProcess(String userID, String contextPath, String writeActionDO, HashMap driverOutputData) ;参数说明userID用户ID contextPath上下文路径writeActionDO发起流程的writeAction.dodriverOutputData输出参数集合 /批量发起进程public void startUpBatchWorkflowProcess(String userID, String contextPath, String writeActionDO, List driverOutputDatas);参数说明userID用户ID contextPath上下文路径writeActionDO发起流程的writeAction.dodriverOutputDatas输出参数集合(HashMap的集合)2、查询工作流进程输出参数在业务系统中,如果需要查询进程输出参数,可以参考以下代码。输出参数的类型为String。查询结果返回值为List类型。(1) 分页查询 public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) /设置查询条件 String contextPath = request.getContextPath(); String writeAction = /exerciseForWorkflow/rejectWriteOneAction.do; String flowNodeParamID = rejectFormID; String driverParamValue = 2; String wantFlowOutParamValue = rejectFormID; FlowProcQuery flowProcQuery = new FlowProcQuery(contextPath, writeAction, flowNodeParamID, driverParamValue, wantFlowOutParamValue); /查询结果分页显示 PreparedDepartUtil departUtil = new PreparedDepartUtil(3); /处理页面提交的信息 departUtil.converRequest(request, 15, 1); PreparedFilter filter = departUtil.getPreFilter(); Hibernate3Depart depart = (Hibernate3Depart) departUtil.getDepartPage(); /获取进程的相关参数List list = WorkflowFactoryPlugin.getTaskManager().findFlowProcParamValueWithFilter(depart,filter, flowProcQuery);List rejectList = new ArrayList();/以下根据参数查询业务详细信息 if(list != null & list.size() 0) for (Iterator it = list.iterator(); it.hasNext();) String rejectFormID = (String)it.next(); Reject reject = rejectBO.getRejectByFormId(rejectFormID); rejectList.add(reject); request.setAttribute(rejectList, rejectList); return mapping.findForward(forward); (2)不分页查询public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) /设置查询条件String contextPath = request.getContextPath(); String writeAction = /exerciseForWorkflow/rejectWriteOneAction.do; String flowNodeParamID = rejectFormID; String driverParamValue = 2; String wantFlowOutParamValue = rejectFormID; FlowProcQuery flowProcQuery = new FlowProcQuery(contextPath, writeAction, flowNodeParamID, driverParamValue, wantFlowOutParamValue);/获取进程的相关参数List list = WorkflowFactoryPlugin.getTaskManager().findFlowProcParamValue(flowProcQuery);/以下根据参数查询业务详细信息 List rejectList = new ArrayList(); if(list != null & list.size() 0) for (Iterator it = list.iterator(); it.hasNext();) String rejectFormID = (String)it.next(); Reject reject = rejectBO.getRejectByFormId(rejectFormID); rejectList.add(reject); request.setAttribute(rejectList, rejectList); return mapping.findForward(forward);(3)FlowProcQuery的属性说明。如果不需要增加输出参数查询,flowOutParamID和flowOutParamValue可以不使用,这时,查询的输出参数为所有进程的参数。而增加了输出参数ID和输出参数值,可以对进程的输出参数进行过滤。FlowProcQuery属性和构造方法 /属性说明 private String contextPath; /上下文路径 private String writeAction; /writeAction private String flowOutParamID; /输出参数ID private String flowOutParamValue; /输出参数值 private String wantFlowOutParamID; /需要从进程中获取的输出参数名 /构造方法说明/没有参数 public FlowProcQuery() /两个参数 public FlowProcQuery(String contextPath, String writeAction) this.contextPath = contextPath; this.writeAction = writeAction; /三个参数 public FlowProcQuery(String contextPath, String writeAction, String wantFlowOutParamID) this(contextPath, writeAction); this.wantFlowOutParamID = wantFlowOutParamID; /四个参数 public FlowProcQuery(String contextPath, String writeAction, String flowOutParamID, String flowOutParamValue) this(contextPath, writeAction); this.flowOutParamID = flowOutParamID; this.flowOutParamValue = flowOutParamValue; /五个参数 public FlowProcQuery(String contextPath, String writeAction, String flowOutParamID, String flowOutParamValue, String wantFlowOutParamID) this(contextPath, writeAction, flowOutParamID, flowOutParamValue); this.wantFlowOutParamID = wantFlowOutParamID; 3、运行时改变会签人员一个进程中,如果需要修改结点的会签人员,可以使用如下方法。在writeAction.do 的doBusiness方法中,增加向request中设置人员的代码:request.setAttribute(workflow_sign_userID, request.getParameterValues(userID);约定:变量名为“workflow_sign_userID”,其值为String型的数组,数组存放人员的系统ID。示例代码如下: public ActionForward doBusiness(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) DynaActionForm rejectForm = (DynaActionForm) form; Reject reject = (Reject) rejectForm.get(reject);String saveOrSubmit = request.getParameter(saveOrSubmit); request.setAttribute(workflow_sign_userID, request.getParameterValues(userID); try rejectBO.saveReject(reject);/提交任务 if(submit.equals(saveOrSubmit) super.driveWorkflow(request, response); ResponseWriter.assignPostTasks(response); /保存任务 else ResponseWriter.submitTask(response); catch (Exception e) e.printStackTrace(); return null; 4、获取驱动的完成人在业务系统中, 如果需要获取驱动的完成人,那可以使用如下方法。String contextPath = request.getContextPath(); / 上下文路径String writeAction = “/exerciseForWorkflow/rejectWriteTwoAction.do”; / 驱动的writeActionSet userSet = WorkflowFactoryPlugin.getTaskManager().findTaskUsersWithWriteAction(contextPath, writeAction) ;注意:以上方法返回值类型为Set,其中是User的集合。5、获取用户各种任务数在业务系统中, 如果需要获取登陆用户的各种任务数,那可以使用如下方法。方法说明public Integer findMyNewTasksNum(String userID);新任务数public Integer findMyExecutingTasksNum(String userID);正在执行的任务数public Integer findMyRefusedTasksNum(String userID);被驳回的任务数public Integer findMyFinishedTasksNum(String userID);完成的任务数public Integer findMyTasksToAssignNum(String userID);需要指派的任务数public Integer findMyTasksToEndNum(String userID);需要补签的任务数以上方法的参数均为用户的系统ID,返回值的类型为Integer。如果没有相应的任务数,则返回的结果为0。使用如下语句获得相应任务数。以获得新任务数为例,其他与此相同。String userID = “1”; /用户的系统IDInteger newTasksNum = WorkflowFactoryPlugin.getTaskManager().findMyNewTasksNum();6、获取任务所在工作流进程的进程ID如果需要在驱动中获取所在流程的流程ID,则需要在writeAction.do中调用如下的方法:/得到任务所在流程的流程IDString flowProcID = super.getFlowProcID(request, response); 此方法返回一个String型的值。7、如何使工作流系统处于调试状态(debug)在struts-config.xml中,为action servlet增加workflow_debug的init-param,其取值说明如下表:workflow_debug取值是否处于debug状态false/no否true/yes是示例如下表,这段代码表示工作流系统处于调试模式,即不会产生任务、触发流程。 action org.apache.struts.action.ActionServlet workflow_debug false 2 8、取回任务后改变相关状态继承抽象Action(WorkflowTaskBackAction),实现抽象方法doBack()。在此方法中,分三步实现:()获得流程的相关数据集合,得到Map,()获得Map中的数据,执行业务系统逻辑,()提供需要修改状态的数据集合,置于Map中,然后返回。详细参考如下代码。import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.util.HashMap;import java.util.Map;import org.apache.struts.action.ActionMapping;import org.apache.struts.action.ActionForm;import com.norteksoft.flowdriver.WorkflowTaskBackAction;public class RejectBackAction extends WorkflowTaskBackAction public Map doBack(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) /1、get map from workflow HashMap hmap=new HashMap(); hmap = this.getProcOutputParameters(request, response); / 2、do your task back business /do back business /3、change relative date with workflow Map map = new HashMap(); map.put(rejectFormId, new Long(10000); return map;由于取回任务后,需要给出提示信息。因此,工作流要求在业务系统的属性文件中定义如下表中的属性值。其中,task.withdraw_task_success为取回任务成功的提示信息,task.withdraw_task_fail为取回任务失败的提示信息。task.withdraw_task_success= oktask.withdraw_task_fail= fail9、更改会签结点人员工作流系统可以在任何一个结点改变后面会签结点的人员,具体方法:在驱动writeAction中实现方法public List getNodeUsers(ActionForm form, HttpServletRequest request);该方法可以指定多个会签驱动的人员,每个驱动的人员信息封装成一个com.norteksoft.panshi.model.NodeWithDriverAndUser实例,然后放到List返回。类NodeWithDriverAndUser的属性说明:public class NodeWithDriverAndUser private String context; /上下文路径 private String writeAction; /会签驱动的writeAction private String users; /指定人员ID的数组 public NodeWithDriverAndUser(String context, String writeAction, String users) this.context = context; this.writeAction = writeAction; this.users = users; public String getContext() return context;public void setContext(String context) this.context = context;public String getUsers() return us

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论