UFLO的使用小记

来源:互联网 发布:快手知希大人真名 编辑:程序博客网 时间:2024/06/05 06:20

UFLO介绍

UFLO是一款基于Appache 2.0开源协议开源的流程引擎,UFLO1与BDF2 和Dorado7进行集成,Uflo1的开发必须依赖bdf
且UFLO1在与BDF集成的过程中,如果BDF-Uflo的版本超过了UFLO2.0.6则必须自己在pom中引入BDF2-core
UFLO1使用TaskClient类来完成任务,具体可以查阅API

UFLO提供了Eclipse插件。让你可以很方便的在Eclipse中完成流程设计,
教程中并没有提到开始流程会使用那几个方法,

UFLO的分支任务与聚合任务成对出现。分支必须各个分支都完成了才算完成,路由决策只需要完成一个任务即可。可以通过EL表达式确定流入哪一个分支

UFLO的一些重要API

开始流程

StartProcessInfo startProcessInfo = new StartProcessInfo(EnvironmentUtils.getEnvironment().getLoginUser());startProcessInfo.setBusinessId(id);Map<String,Object> map = new HashMap<String, Object>();map.put("approveUser","superman");startProcessInfo.setVariables(map);//使用map传递参数processService.startProcessByName("demo",startProcessInfo);

ProcessService是控制流程的Api,通过这个API我们可以开始和结束任务

开始并完成某一个任务

taskService.start(taskID);//开始任务taskService.complete(taskID,new TaskOpinion(opinion));//完成任务

结束整个任务(流程)

taskService.cancelTask(taskID,new TaskOpinion(opinion));

跳转到某一个流程节点,值得注意的是,这里可以跳转到分支节点,然后分支节点下的节点就可以开始,跳转到”结束流程”节点即整个流程结束

taskService.forward(taskID,"结束流程",new TaskOpinion(opinion));

这里写图片描述
自定义待办任务可以模仿这个包里面的写法来写

TaskService是专门针对各种任务需求定义的服务类

列举一下详细的API

/**    * 设置任务处理进度值,正常情况下该值应该在0~100之间,同时当任务正常完成时,任务进度将自动设置为100    * @param progress 任务进度值    * @param taskId 任务ID    */   void setProgress(int progress,long taskId);   /**    * 设置任务优先级或紧急程序,该值是一个字符串,具体内容由用户决定    * @param priority 任务优先级或紧急程序    * @param taskId 任务ID    */   void setPriority(String priority,long taskId);   /**    * 根据给出的任务ID,获取当前任务节点下可指定任务处理人的任务节点名    * @param taskId 任务ID    * @return 可指定任务处理人的任务节点名列表    */   List<String> getAvaliableAppointAssigneeTaskNodes(long taskId);   /**    * 获取指定任务节点下配置的任务处理人列表    * @param taskId 任务ID    * @param taskNodeName 任务节点名称    * @return 返回当前节点配置的任务处理人列表    */   List<String> getTaskNodeAssignees(long taskId,String taskNodeName);   /**    * 在某个任务中指定下一个指定任务节点上的任务处理人    * @param taskId 具体任务对象ID    * @param assignee 要指定的任务处理人    * @param taskNodeName 指定任务处理人的任务节点名称    */   void saveTaskAppointor(long taskId,String assignee,String taskNodeName);   /**    * 在某个任务中指定下一个指定任务节点上的任务处理人,可以为多个处理人    * @param taskId 具体任务对象ID    * @param assignees 要指定的任务处理人集合    * @param taskNodeName 指定任务处理人的任务节点名称    */   void saveTaskAppointor(long taskId,String[] assignees,String taskNodeName);   /**    * 向现有的会签任务中再添加一个新的会签任务    * @param taskId 参考的任务ID    * @param username 新的任务的处理人    * @return 返回加签产生的新的任务对象    */   Task addCountersign(long taskId,String username);   /**    * 删除一个会签任务    * @param taskId 要删除的会签任务的ID    */   void deleteCountersign(long taskId);   /**    * 获取当前任务可以跳转的任务节点名称    * @param taskId 任务ID    * @return 可跳转的目标任务节点集合    */   List<JumpNode> getAvaliableForwardTaskNodes(long taskId);   /**    * 完成指定ID的任务,同时设置下一步流向名称    * @param taskId 要完成的任务ID    * @param flowName 下一步流向名称    */   void complete(long taskId, String flowName);   /**    * 完成指定ID的任务,同时设置下一步流向名称    * @param taskId 要完成的任务ID    * @param flowName 下一步流向名称    * @param opinion 任务处理意见    */   void complete(long taskId, String flowName,TaskOpinion opinion);   /**    * 批量完成指定ID的任务,并写入指定的流程变量    * @param taskIds 要完成的任务的ID集合    * @param variables 回写到要完成任务的变量集合    */   void batchComplete(List<Long> taskIds,Map<String,Object> variables);   /**    * 批量完成指定ID的任务,并写入指定的流程变量    * @param taskIds 要完成的任务的ID集合    * @param variables 回写到要完成任务的变量集合    * @param opinion 任务处理意见    */   void batchComplete(List<Long> taskIds,Map<String,Object> variables,TaskOpinion opinion);   /**    * 完成指定ID的任务,同时设置下一步流向名称及回写到流程实例中的变量集合    * @param taskId 任务ID    * @param flowName 下一步流向名称    * @param variables 回写的变量集合    */   void complete(long taskId, String flowName,Map<String,Object> variables);   /**    * 完成指定ID的任务,同时设置下一步流向名称及回写到流程实例中的变量集合    * @param taskId 任务ID    * @param flowName 下一步流向名称    * @param variables 回写的变量集合    * @param opinion 任务处理意见    */   void complete(long taskId, String flowName,Map<String,Object> variables,TaskOpinion opinion);   /**    * 完成指定ID的任务    * @param taskId 要完成的任务ID    */   void complete(long taskId);   /**    * 完成指定ID的任务    * @param taskId 要完成的任务ID    * @param opinion 任务处理意见    */   void complete(long taskId,TaskOpinion opinion);   /**    * 完成指定ID的任务,同时设置回写到流程实例中的变量集合    * @param taskId 任务ID    * @param variables 变量集合    */   void complete(long taskId,Map<String,Object> variables);   /**    * 完成指定ID的任务,同时设置回写到流程实例中的变量集合    * @param taskId 任务ID    * @param variables 变量集合    * @param opinion 任务处理意见    */   void complete(long taskId,Map<String,Object> variables,TaskOpinion opinion);   /**    * 完成指定ID的任务,跳转到指定的目标节点    * @param taskId 任务ID    * @param targetNodeName 指定的目标节点名称    */   void forward(long taskId,String targetNodeName);   /**    * 完成指定ID的任务,跳转到指定的目标节点    * @param taskId 任务ID    * @param targetNodeName 指定的目标节点名称    * @param opinion 任务处理意见    */   void forward(long taskId,String targetNodeName,TaskOpinion opinion);   /**    * 完成指定ID的任务,跳转到指定的目标节点,同时设置回写到流程实例中的变量集合    * @param taskId 任务ID    * @param targetNodeName 指定的目标节点名称    * @param variables 变量集合    */   void forward(long taskId,String targetNodeName,Map<String,Object> variables);   /**    * 完成指定ID的任务,跳转到指定的目标节点,同时设置回写到流程实例中的变量集合    * @param taskId 任务ID    * @param targetNodeName 指定的目标节点名称    * @param variables 变量集合    * @param opinion 任务处理意见    */   void forward(long taskId,String targetNodeName,Map<String,Object> variables,TaskOpinion opinion);   /**    * 完成指定ID的任务,跳转到指定的目标节点,同时设置回写到流程实例中的变量集合    * @param task 任务对象    * @param targetNodeName 指定的目标节点名称    * @param variables 变量集合    * @param opinion 任务处理意见    */   void forward(Task task,String targetNodeName,Map<String,Object> variables,TaskOpinion opinion);   /**    * 完成指定ID的任务,跳转到指定的目标节点,同时设置回写到流程实例中的变量集合,并指定任务状态    * @param task 任务对象    * @param targetNodeName 指定的目标节点名称    * @param variables 变量集合    * @param opinion 任务处理意见    * @param state 任务状态    */   void forward(Task task,String targetNodeName,Map<String,Object> variables,TaskOpinion opinion,TaskState state);   /**    * 完成指定ID的任务,回退到指定的目标节点,同时设置回写到流程实例中的变量集合    * @param taskId 任务ID    * @param targetNodeName 指定的目标节点名称    * @param variables 变量集合    * @param opinion 任务处理意见    */   void rollback(long taskId,String targetNodeName,Map<String,Object> variables,TaskOpinion opinion);   /**    * 完成指定ID的任务,回退到指定的目标节点,同时设置回写到流程实例中的变量集合    * @param task 任务对象    * @param targetNodeName 指定的目标节点名称    * @param variables 变量集合    * @param opinion 任务处理意见    */   void rollback(Task task,String targetNodeName,Map<String,Object> variables,TaskOpinion opinion);   /**    * 完成指定ID的任务,回退到指定的目标节点,同时设置回写到流程实例中的变量集合    * @param taskId 任务ID    * @param targetNodeName 指定的目标节点名称    * @param variables 变量集合    */   void rollback(long taskId,String targetNodeName,Map<String,Object> variables);   /**    * 完成指定ID的任务,回退到指定的目标节点    * @param taskId 任务ID    * @param targetNodeName 指定的目标节点名称    */   void rollback(long taskId,String targetNodeName);   /**    * 获取指定任务ID对应的可回退的目标任务节点名列表    * @param taskId 要回退的任务ID    * @return 返回可回退的目标任务节点名列表    */   List<JumpNode> getAvaliableRollbackTaskNodes(long taskId);   /**    * 获取指定任务ID对应的可回退的目标任务节点名列表    * @param task 要回退的任务    * @return 返回可回退的目标任务节点名列表    */   List<JumpNode> getAvaliableRollbackTaskNodes(Task task);   /**    * 将指定ID的任务撤回到上一个任务节点    * @param taskId 任务的ID    */   void withdraw(long taskId);   /**    * 将指定ID的任务撤回到上一个任务节点    * @param taskId 任务的ID    * @param opinion 任务处理意见    */   void withdraw(long taskId,TaskOpinion opinion);   /**    * 将指定ID的任务撤回到上一个任务节点,并填充变量    * @param taskId 任务的ID    * @param variables 变量集合    */   void withdraw(long taskId,Map<String,Object> variables);   /**    * 将指定ID的任务撤回到上一个任务节点,并填充变量    * @param taskId 任务的ID    * @param variables 变量集合    * @param opinion 任务处理意见    */   void withdraw(long taskId,Map<String,Object> variables,TaskOpinion opinion);   /**    * 判断当前任务是否可被撤回到上一任务节点    * @param taskId 任务的ID    * @return 返回布尔值    */   boolean canWithdraw(long taskId);   /**    * 判断当前任务是否可回退到上一任务节点    * @param task 任务对象    * @return 返回布尔值    */   boolean canWithdraw(Task task);   /**    * 根据ID获取一个任务对象    * @param taskId 任务ID    * @return 返回任务对象    */   Task getTask(long taskId);   /**    * 认领一个任务    * @param taskId 要认领任务的ID    * @param username 认领任务的人的用户名    */   void claim(long taskId, String username);   /**    * 对认领后的任务进行释放,从而允许其它人认领    * @param taskId 要释放任务的ID    */   void release(long taskId);   /**    * 开始处理一个任务    * @param taskId 任务的ID    */   void start(long taskId);   /**    * 批量开始一批任务    * @param taskIds 要开始的任务的ID集合    */   void batchStart(List<Long> taskIds);   /**    * 批量开始并完成一批指定的任务,并可写入指定的流程变量    * @param taskIds 要完成的任务的ID集合    * @param variables 要回写的流程变量    */   void batchStartAndComplete(List<Long> taskIds,Map<String,Object> variables);   /**    * 批量开始并完成一批指定的任务,并可写入指定的流程变量    * @param taskIds 要完成的任务的ID集合    * @param variables 要回写的流程变量    * @param opinion 任务处理意见    */   void batchStartAndComplete(List<Long> taskIds,Map<String,Object> variables,TaskOpinion opinion);   /**    * 将一个任务挂起    * @param taskId 要挂起的任务的ID    */   void suspend(long taskId);   /**    * 让处于挂起状态的任务恢复正常    * @param taskId 要操作的任务的ID    */   void resume(long taskId);   /**    * 删除一个任务实例,要求这个任务对应的实例实例未结束,否则将不能删除    * @param taskId 任务实例ID    */   void deleteTask(long taskId);   /**    * 删除某个任务节点上产生的所有任务实例,要求这里的processInstanceId对应的流程实例未结束    * @param processInstanceId 流程实例ID    * @param nodeName 任务节点名称    */   void deleteTaskByNode(long processInstanceId,String nodeName);   /**    * 取消指定的任务,任务状态将会标记上Canceled标记,同时任务也会被插入到历史表中,以备查询    * @param taskId 任务ID    */   void cancelTask(long taskId);   /**    * 取消指定的任务,任务状态将会标记上Canceled标记,同时任务也会被插入到历史表中,以备查询    * @param taskId 任务ID    * @param opinion 任务处理意见    */   void cancelTask(long taskId,TaskOpinion opinion);   /**    * 根据任务ID取得当前任务潜在处理人列表    * @param taskId 任务ID    * @return 处理人列表    */   List<TaskParticipator> getTaskParticipators(long taskId);   /**    * 获取指定流程实例下任务节点的通过指派的任务处理人信息    * @param taskNodeName 任务节点名称    * @param processInstanceId 流程实例ID    * @return TaskAppointor集合    */   List<TaskAppointor> getTaskAppointors(String taskNodeName,long processInstanceId);   /**    * 更改任务处理人    * @param taskId 任务ID    * @param username 新的处理人用户名    */   void changeTaskAssignee(long taskId,String username);   /**    * 查找指定任务节点上指定key对象的UserData的值    * @param task 任务对象    * @param key UserData的key值    * @return UserData对应的value值    */   String getUserData(Task task,String key);   /**    * 查找指定任务节点上指定key对象的UserData的值    * @param processId 流程模版ID    * @param taskNodeName 任务节点名称    * @param key UserData的key值    * @return UserData对应的value值    */   String getUserData(long processId,String taskNodeName,String key);   TaskQuery createTaskQuery();   List<TaskReminder> getTaskReminders(long taskId);   void deleteTaskReminder(long taskReminderId);   List<TaskReminder> getAllTaskReminders();

流程的API

/**    * 根据流程模版ID,返回流程模版对象    * @param processId 流程模版ID    * @return 返回流程模版对象    */   ProcessDefinition getProcessById(long processId);   /**    * 根据流程模版Key,返回流程模版对象    * @param key 流程模版Key    * @return 返回流程模版对象    */   ProcessDefinition getProcessByKey(String key);   /**     * 根据流程模版的名称,返回与该名字匹配最新发布的流程模版对象    * @param processName 流程模版名称    * @return 返回流程模版对象    */   ProcessDefinition getProcessByName(String processName);   /**     * 根据流程模版的名称及分类ID,返回与该名字匹配最新发布的流程模版对象    * @param processName 流程模版名称    * @param categoryId 分类ID    * @return 返回流程模版对象    */   ProcessDefinition getProcessByName(String processName,String categoryId);   /**    * 根据流程模版的名称与版本号,返回与该名字与版本号匹配最流程模版对象    * @param processName 流程模版名称    * @param version 版本号    * @return 返回流程模版对象    */   ProcessDefinition getProcessByName(String processName,int version);   /**    * 根据流程模版ID,开启一个流程实例    * @param processId 流程模版ID    * @param startProcessInfo 开启流程实例时所需要的各种信息的包装对象    * @return 返回开启成功的流程实例对象    */   ProcessInstance startProcessById(long processId,StartProcessInfo startProcessInfo);   /**    * 根据流程模版key,开启一个流程实例    * @param key 流程模版key    * @param startProcessInfo 开启流程实例时所需要的各种信息的包装对象    * @return 返回开启成功的流程实例对象    */   ProcessInstance startProcessByKey(String key,StartProcessInfo startProcessInfo);   /**    * 根据流程模版的名称,根据该名称流程模版最新版本开启一个流程实例    * @param processName 流程模版名称    * @param startProcessInfo 开启流程实例时所需要的各种信息的包装对象    * @return 返回开启成功的流程实例对象    */   ProcessInstance startProcessByName(String processName,StartProcessInfo startProcessInfo);   /**    * 根据流程模版的名称与版本号,开启一个流程实例    * @param processName 流程模版名称    * @param startProcessInfo 开启流程实例时所需要的各种信息的包装对象    * @param version 版本号    * @return 返回开启成功的流程实例对象    */   ProcessInstance startProcessByName(String processName,StartProcessInfo startProcessInfo,int version);   /**    * 删除一个指定的流程实例对象,与这个流程实例相关的人工任务也将会被删除    * @param processInstance 流程实例对象    */   void deleteProcessInstance(ProcessInstance processInstance);   /**    * 删除指定流程实例ID对应的流程实例对象    * @param processInstanceId 流程实例ID    */   void deleteProcessInstanceById(long processInstanceId);   /**    * 从一个压缩文件包中部署一个新的流程模版    * @param zipInputStream 一个压缩文件输入流    * @return 部署成功后的流程模版对象    */   ProcessDefinition deployProcess(ZipInputStream zipInputStream);   /**    * 从一个文件流中部署一个新的流程模版    * @param inputStream 文件流    * @return 部署成功后的流程模版对象    */   ProcessDefinition deployProcess(InputStream inputStream);   /**    * 更新一个流程模版,用指定InputStream中包含的流程模版对象来替换指定ID的流程模版对象    * @param inputStream 新的流程模版流对象    * @param processId 要替换的目标流程模版ID    * @return 更新成功后的流程模版对象    */   ProcessDefinition deployProcess(InputStream inputStream,long processId);   /**    * 根据给定的流程实例ID,返回对应的流程实例对象    * @param processInstanceId 流程实例ID    * @return 返回流程实例对象    */   ProcessInstance getProcessInstanceById(long processInstanceId);   /**    * 根据流程实例ID,返回与该流程实例相关的所有的流程变量    * @param processInsanceId 流程实例ID    * @return 返回与该流程实例相关的所有的流程变量集合    */   List<Variable> getProcessVariables(long processInsanceId);   /**    * 根据流程实例对象,返回与该流程实例相关的所有的流程变量    * @param processInsance 流程实例对象    * @return 返回与该流程实例相关的所有的流程变量集合    */   List<Variable> getProcessVariables(ProcessInstance processInsance);   /**    * 获取指定流程实例上的指定key的流程变量的值    * @param key 流程变量的key    * @param processInstance 流程实例对象    * @return 流程变量值    */   Object getProcessVariable(String key,ProcessInstance processInstance);   /**    * 获取指定流程实例ID上对应的流程实例中指定key的流程变量的值    * @param key 流程变量的key    * @param processInsanceId 流程实例ID    * @return 流程变量值    */   Object getProcessVariable(String key,long processInsanceId);   /**    * 删除指定流程实例ID中指定key的流程变量值    * @param key 流程变量的key    * @param processInstanceId 流程实例ID    */   void deleteProcessVariable(String key,long processInstanceId);   /**    * 向指定流程实例ID对应的流程实例中添加流程变量    * @param processInstanceId 流程实例ID    * @param key 流程变量的key    * @param value 对应的流程变量的值    */   void saveProcessVariable(long processInstanceId,String key,Object value);   /**    * 向指定流程实例ID对应的流程实例中批量添加流程变量    * @param processInstanceId 流程实例ID    * @param variables 要添加的流程变量的Map    */   void saveProcessVariables(long processInstanceId,Map<String,Object> variables);   /**    * @return 返回创建成功的流程实例查询对象    */   ProcessInstanceQuery createProcessInstanceQuery();   /**    * @return 返回创建成功的流程变量查询对象    */   ProcessVariableQuery createProcessVariableQuery();   /**    * @return 创建创建成功的流程模版查询对象    */   ProcessQuery createProcessQuery();   /**    * 删除一个指定ID的流程模版对象,与该模版相关的所有实例及任务都将被删除    * @param processId 流程模版ID    */   void deleteProcess(long processId);   /**    * 删除一个指定KEY的流程模版对象,与该模版相关的所有实例及任务都将被删除    * @param processKey 流程模版KEY    */   void deleteProcess(String processKey);   /**    * 删除一个指定流程模版对象,与该模版相关的所有实例及任务都将被删除    * @param processDefinition 流程模版对象    */   void deleteProcess(ProcessDefinition processDefinition);   /**    * 根据给定的流程模版ID,更新当前内存中保存的对应的流程模版对象    * @param processId 流程模版ID    */   void updateProcessForMemory(long processId);   /**    * 从本地内存中移除指定的流程模版ID对应的流程模版对象    * @param processId 流程模版ID    */   void deleteProcessFromMemory(long processId);   /**    * 从本地内存中移除指定的流程模版KEY对应的流程模版对象    * @param processKey 流程模版KEY    */   void deleteProcessFromMemory(String processKey);   /**    * 从本地内存中移除指定的流程模版对象    * @param processDefinition 流程模版对象    */   void deleteProcessFromMemory(ProcessDefinition processDefinition);}
原创粉丝点击