zoukankan      html  css  js  c++  java
  • 通用流程相关方法说明及调用事例

      前文提到的流程引擎,基本做到了最高程度的封装,可以通过一个方法的调用即可完成公文的流转。下面将介绍相关方法的具体说明。

      一、流程整体操作的相关封装

      1.WorkflowOperation类,对流程整体操作的一个封装。

      实例化方法:(返回类的实例)

    Workflow.Abstract.ConcreteFactory.CreateConcrete<IWorkflowOperation, WorkflowOperation>();
    

      ① int SendWorkflow(int WorkflowID, string FormID, string Condition = "", string HandlePerson = "")

      参数说明:WorkflowID 表单需要走的流程ID,FormID 需要走流程的表单ID,Condition 发送下一级节点步骤的条件(可选),HandlePerson 处理人(可选)。

      使用说明:一般的流程(不包含条件节点以及将来指定处理人的节点)只调用这一个方法即可完成表单的流转。当发起流程或某记录被审核后调用此方法,此方法会根据相关节点的定义以及处理结果,决定是否发送下一级节点的有关数据,如果下一节点为结束,亦会返回结束的标识码。此方法亦可以理解为推动流转的推动器,循环如此直到结束。注:Condition可选条件,只在相关节点需要条件的时候传入。HandlePerson 相关节点的处理人为将来指定时使用,多个人可逗号分割。

      ② bool SendStartWorkflow(int WorkflowID, string FormID, string HandlePerson = "")

      参数说明:WorkflowID 表单需要走的流程ID,FormID 需要走流程的表单ID,HandlePerson 处理人(可选)。

      使用说明:此方法为开启一个表单的流程审批,当待走流程的表单填写完毕后,由此方法开启 填写的表单 针对 某流程的 流转。此方法是方法① SendWorkflow的基础方法。

      ③ int SendNextWorkflow(int WorkflowID, string FormID, string Condition = "", string HandlePerson = "")
      参数说明:WorkflowID 表单需要走的流程ID,FormID 需要走流程的表单ID,Condition 发送下一级节点步骤的条件(可选),HandlePerson 处理人(可选)。

      使用说明:此方法会根据处理结果和节点定义,尝试发送下一级节点的数据,如果运行发送,则发送,否则,等待其它用户审核后发送。此方法是方法① SendWorkflow的基础方法。

      ④ bool SendEndWorkflow(int WorkflowID, string FormID)

      参数说明:WorkflowID 表单需要走的流程ID,FormID 需要走流程的表单ID。

      使用说明:此方法为发送结束节点数据。此方法是方法① SendWorkflow的基础方法。

      ⑤ bool IsHereafter(int WorkflowDetailed_ID) or bool IsHereafter(int WorkflowID, int StepID)

      参数说明:重载方法。WorkflowDetailed_ID 节点的标识ID,WorkflowID 表单需要走的流程ID,StepID 节点的步骤号。

      使用说明:此方法判断某节点步骤的处理方式是否为将来指定的方式,如果是,在调用SendWorkflow时需指定具体的处理人。

      ⑥ Workflow.Entities.WorkflowDetailed GetCurrentStep(int WorkflowID, string FormID)

      参数说明:WorkflowID 表单需要走的流程ID,FormID 表单ID。

      使用说明:此方法获取当前正在进行的节点步骤实体,如果返回空,说明表单还未进入流程。

      二、模块实体操作的相关封装

      1.ModuleOperation类,对流程中 模块 实体操作的一个封装。

      实例化方法:(返回类的实例)

    Workflow.Abstract.ConcreteFactory.CreateConcrete<IModuleOperation, ModuleOperation>();
    

      ① int ModuleAdd(ModuleList modulelist)

      参数说明:modulelist 待添加的模块实体。

      使用说明:添加一个需要流程的模块。相关实体类型可在公开的EF上下文中获得,后面将对公开的EF实体上下文做介绍。

      ② int ModuleDel(int ModuleID)

      参数说明:ModuleID 模块的标识ID。

      使用说明:删除指定ID的模块。

      ③ int ModuleUpdate(ModuleList modulelist)

      参数说明:modulelist 待修改的模块实体。

      使用说明:修改一个需要流程的模块。

      ④ ModuleList GetModel(int ModuleID)

      参数说明:ModuleID 模块的标识ID。

      使用说明:根据模块ID获得对应模块的实体。

      ⑤ List<ModuleList> GetModuleList()

      使用说明:获得所有模块的泛型列表。可使用Linq相关进行二次过滤。

      ⑥ List<WorkflowMain> GetWorkflowMainList(int ModuleID)

      参数说明:ModuleID 模块的标识ID。

      使用说明:获得指定模块ID的对应的多个主流程实体的泛型列表。

      ⑦ int GetModuleID(string ModuleName)

      参数说明:ModuleName 模块的名称。

      使用说明:通过模块的名称,获得模块的标识ID。

      三、主流程实体操作的相关封装

      1.WorkflowMainOperation类,对流程中 主流程 实体操作的一个封装。

      实例化方法:(返回类的实例)

    Workflow.Abstract.ConcreteFactory.CreateConcrete<IWorkflowMainOperation, WorkflowMainOperation>();
    

      ① int WorkflowMainAdd(WorkflowMain workflowmain)

      参数说明:workflowmain 待添加的主流程实体。

      使用说明:添加一个主流程实体。

      ② int WorkflowMainDel(int WorkflowID)

      参数说明:WorkflowID 主流程的标识ID。

      使用说明:删除指定ID的主流程。

      ③ int WorkflowMainUpdate(WorkflowMain workflowmain)

      参数说明:workflowmain 待修改的主流程实体。

      使用说明:修改主流程。

      ④ WorkflowMain GetModel(int WorkflowID)

      参数说明:WorkflowID 主流程的标识ID。

      使用说明:根据主流程ID获得对应主流程的实体。

      ⑤ List<WorkflowMain> GetWorkflowMainList()

      使用说明:获得所有主流程的泛型列表。可使用Linq相关进行二次过滤。

      ⑥ List<WorkflowDetailed> GetWorkflowDetailedList(int WorkflowID)

      参数说明:WorkflowID 主流程的标识ID。

      使用说明:获得指定主流程ID的对应的多个节点步骤实体的泛型列表。

      ⑦ int GetWorkflowID(string WorkflowName)

      参数说明:WorkflowName 主流程的名称。

      使用说明:通过主流程的名称,获得主流程的标识ID。

      四、节点步骤实体操作的相关封装

      1.WorkflowDetailedOperation类,对流程中 节点步骤 实体操作的一个封装。

      实例化方法:(返回类的实例)

    Workflow.Abstract.ConcreteFactory.CreateConcrete<IWorkflowDetailedOperation, WorkflowDetailedOperation>();
    

      ① int WorkflowDetailedAdd(WorkflowDetailed workflowdetailed)

      参数说明:workflowdetailed 待添加的节点步骤实体。

      使用说明:添加一个节点步骤实体。

      ② int WorkflowDetailedDel(int ID)

      参数说明:ID 节点步骤实体的标识ID。

      使用说明:删除指定ID的节点步骤。

      ③ int WorkflowDetailedUpdate(WorkflowDetailed workflowdetailed)

      参数说明:workflowdetailed 待修改的节点步骤实体。

      使用说明:修改节点步骤实体。

      ④ WorkflowDetailed GetModel(int ID)

      参数说明:ID 节点步骤的标识ID。

      使用说明:根据节点步骤ID获得对应节点步骤的实体。

      ⑤ List<WorkflowDetailed> GetWorkflowDetailedList()

      使用说明:获得所有节点步骤的泛型列表。可使用Linq相关进行二次过滤。

      ⑥ List<TaskList> GetTaskList(int ID)

      参数说明:ID节点步骤的标识ID。

      使用说明:获得指定节点步骤ID的对应的多个任务实体的泛型列表。

      ⑦ int GetNextStepID(int WorkflowID)

      参数说明:WorkflowID 主流程的标识ID。

      使用说明:此方法获得下一节点的步骤号。

      ⑧ int StartStepAdd(int WorkflowID)

      参数说明:WorkflowID 主流程的标识ID。

      使用说明:为指定的主流程序号增加开始步骤,返回添加节点步骤的ID,如果返回0代表已经存在此步骤的开始步骤,如果返回-1代表不存在指定的待添加开始步骤的主流程。

      ⑨ int EndStepAdd(int WorkflowID)

      参数说明:WorkflowID 主流程的标识ID。

      使用说明:为指定的主流程序号增加结束步骤,返回添加节点步骤的ID,如果返回0代表已经存在此步骤的结束步骤,如果返回-1代表不存在指定的待添加结束步骤的主流程。

      ⑩ Enums.WorkflowErrorType VerifyWorkflow(int WorkflowID) or Enums.WorkflowErrorType VerifyWorkflow(List<WorkflowDetailed> lst)
      参数说明:重载方法。WorkflowID 主流程的标识ID。lst 主流程下的节点步骤实体泛型列表。

      使用说明:验证流程节点的有效性。返回枚举类型。具体错误枚举类型参考Workflow.Abstract.Enums.WorkflowErrorType。

      ⑪ bool UpNunciator(int ID, string Nunciator) or bool UpNunciator(int WorkflowID, int StepID, string Nunciator)

      参数说明:重载方法。ID 节点步骤的标识ID,Nunciator 告知对象(多人逗号分割),WorkflowID 主流程的标识ID,StepID 节点步骤号。

      使用说明:修改节点步骤的告知人。

      ⑫ bool UpNextStep(int ID, int NextStep) or bool UpNextStep(int WorkflowID, int StepID, int NextStep)

      参数说明:重载方法。ID 节点步骤的标识ID,NextStep 节点步骤对象的下一节点步骤号,WorkflowID 主流程的标识ID,StepID 节点步骤号。

      使用说明:修改节点步骤的下一步的节点步骤号。

      五、任务实体操作的相关封装

      1.TaskListOperation类,对流程中 任务 实体操作的一个封装。

      实例化方法:(返回类的实例)

    Workflow.Abstract.ConcreteFactory.CreateConcrete<ITaskListOperation, TaskListOperation>();
    

      ① int TaskListAdd(TaskList tasklist)

      参数说明:tasklist 待添加的任务实体。

      使用说明:添加一个任务实体。

      ② int TaskListDel(int ID)

      参数说明:ID 任务实体的标识ID。

      使用说明:删除指定ID的任务。

      ③ int TaskListUpdate(TaskList tasklist) or int TaskListUpdate(int taskid, string Opinion, int HandleType) or int TaskListUpdate(string FormID, int WorkflowID, string Person, string Opinion, int HandleType)

      参数说明:重载方法。tasklist 待修改的任务实体,taskid 待修改的任务标识ID,Opinion 修改任务的处理意见,HandleType 处理类型(同意或不同意),FormID 表单ID,WorkflowID 流程ID,Person 处理人。

      使用说明:修改任务的处理已经和处理状态。

      ④ TaskList GetModel(int ID)

      参数说明:ID 任务的标识ID。

      使用说明:根据任务ID获得对应任务的实体。

      ⑤ List<TaskList> GetTaskList()

      使用说明:获得所有任务的泛型列表。可使用Linq相关进行二次过滤。 

      ⑥ List<AnnexList> GetAnnexList(int ID)

      参数说明:ID任务的标识ID。

      使用说明:获得指定任务ID的对应的多个附件的泛型列表。

      ⑦ int UpExpire()

      使用说明:如果告知类型的任务在有效期内未处理,通过此方法将失效的告知任务标记为已处理。

      ⑧ TaskList TaskCirculation(int taskid, string HandlePerson) or TaskList TaskCirculation(int taskid, string Opinion, string HandlePerson)

      参数说明:重载方法。 taskid 任务的标识ID,HandlePerson 流转后的处理人,Opinion 流转意见。

      使用说明:调用此方法可以将任务流转到其他处理人,并可添加流转的处理意见。  

      ⑨ TaskList AddHandlePerson(string FormID, int WorkflowDetailed_ID, string HandlePerson) or TaskList AddHandlePerson(string FormID, int WorkflowID, int StepID, string HandlePerson)

      参数说明:重载方法。FormID 表单ID,WorkflowDetailed_ID 节点步骤的标识ID,HandlePerson 待添加的处理人,WorkflowID 流程ID,StepID 步骤ID。

      使用说明:调用此方法可以将指定的处理人添加到具体的任务中。

      ⑩ bool RemoveHandlePerson(string FormID, int WorkflowDetailed_ID, string HandlePerson) or bool RemoveHandlePerson(string FormID, int WorkflowID, int StepID, string HandlePerson)

      参数说明:重载方法。FormID 表单ID,WorkflowDetailed_ID 节点步骤的标识ID,HandlePerson 待添加的处理人,WorkflowID 流程ID,StepID 步骤ID。

      使用说明:调用此方法可以将指定的处理人从具体的任务中移除。

      ⑪ List<TaskList> GetPersonTask(string psersonid, bool? HandleStatus)

      参数说明:psersonid 处理人,HandleStatus 任务类型

      使用说明:通过此方法可以获取某处理人的所有待处理的任务。其中任务类型是区分获取的任务是告知类型还是处理类型,如果传入null值,则返回所有待处理任务列表。

      ⑫ List<TaskList> GetByFormTaskList(string FormID, int WorkflowID)

      参数说明:FormID 表单ID,WorkflowID 流程ID.

      使用说明:此方法获取某任务针对某流程的待处理任务列表。

      六、附件实体操作的相关封装

      1.AnnexListOperation类,对流程中 任务处理附件 实体操作的一个封装。

      实例化方法:(返回类的实例)

    Workflow.Abstract.ConcreteFactory.CreateConcrete<IAnnexListOperation, AnnexListOperation>();
    

      ① int AnnexListAdd(AnnexList annexlist)

      参数说明:annexlist 待添加的附件实体。

      使用说明:添加一个附件实体。

      ② int AnnexListDel(int ID)

      参数说明:ID 附件的标识ID。

      使用说明:删除指定ID的附件。

      ③ int AnnexListUpdate(AnnexList annexlist)

      参数说明:annexlist 待修改的附件实体。

      使用说明:修改一个附件实体。

      ④ AnnexList GetModel(int ID)

      参数说明:ID 附件的标识ID。

      使用说明:根据模块ID获得对应模块的实体。

      ⑤ List<AnnexList> GetAnnexList()

      使用说明:获得所有附件的泛型列表。可使用Linq相关进行二次过滤。

      七、流程任务处理人员类型需实现的接口(IPersonList)说明

      ① List<string> GetPersonList(string processingpersonnel)

      接口说明:传入可逗号分割的处理人员类型获得具体的处理人列表。如:出入角色 管理员 则返回所有管理员的具体人员列表。

      ② IDictionary<string, string> GetGlobalKeyValue()

      接口说明:获得具体实现类对应的键值对列表。如:具体实现类型为角色,则返回管理员、计划员等角色列表。具体实现类型为部门,则返回软件部、开发部等部门列表。此方法在SL的可视化流程设计中用到。

      ③ PersonnelMode类

      此类实现一个单例模式。用于注册处理人员类型的列表。结构为:键为注册的类型,如人员、部门、角色等。值为具体的实现类的实例,如人员的具体实现类实例,部门的具体实现类实例等。注:人员实现类为简单实现,如果不满足实际需求需要再重新实现。

      通过:Workflow.Abstract.PersonnelMode.GetInstance().GetPersonnelModeList() 可获得处理人员类型列表。返回类型为:IDictionary<string, IPersonList>。

      八、EF实体上下文

      流程相关是EF实体上下文是公开的,访问方式为:Workflow.Entities.WorkflowDB。

      由于篇幅过长,本篇到此为止。下篇将结束使用流程的整体解决方案。

    相关文章连接:

      通用流程设计http://www.cnblogs.com/qidq/p/workflow.html

      可视化流程设计——流程设计器演示(基于Silverlight)http://www.cnblogs.com/qidq/p/Workflow_Silverlight.html

      流程引擎及流程设计器的嵌入方式http://www.cnblogs.com/qidq/p/3499769.html

      使用流程引擎整体解决方案http://www.cnblogs.com/qidq/p/3505112.html

  • 相关阅读:
    PMP:9.项目资源管理
    @JsonIgnore忽略JSON字段
    xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
    android加载不到.so文件
    报错Failed to install the following SDK components: platforms;android-29 Android SDK Platform 29
    Mac 终端启动运行Redis
    Mac 命令行执行Sublime
    Bean转为Json指定字段名,防止被修改大小写
    Rest接口入参忽略大小写 使用jackson注解
    mongo批量导入
  • 原文地址:https://www.cnblogs.com/qidq/p/3504061.html
Copyright © 2011-2022 走看看