今天投了一家做协同软件的公司,投完我就在思考如果自己在这家公司上班,会用到什么技术。
协同软件中的流程自动化就是工作流的一种具象化,由于之前没有接触过工作流的知识,于是连夜学习了一下基本理论。
其实在工作中也用到过工作流,比如目前公司的ETL,之前做数据分析时的kettle。都是预先定义了大量的任务,然后通过可视化界面进行拖拽、连线等,形成一个完整的流程。
我们可以用流程图的实现去理解工作流,需要开始任务、结束任务、以及过程中的任务,每个任务都有输入、输出,前一个任务的输出就是下一个任务的输入。这期间涉及到流程定义、任务定义、状态保存等事务。这些工作在Activiti框架的核心服务中均有所体现:
上图出自官网,可以看到Activiti的核心服务包括:
- repositoryService: 用于管理和操作deployments和process definitions的操作,也就是管理流程定义的工具,主要存储一些静态信息。
- runtimeService:用于管理一个流程实例的,比如请假审批流程中,张三的请求申请审批。
- taskService:用于管理一个流程中的任务节点的服务,包括查询、创建、分配等等操作。
- identifyService:主要用于管理流程中相关的用户数据
- historyService:主要管理流程中的状态数据,比如什么时候开始的任务、什么时候时候谁谁谁干了什么事儿等等。
- formService:这个并非必须的,有些流程是完全不需要用户输入的。在工作流中有些任务是以用户填某个表开始的,在过程中也需要某些人填写一些信息,这个服务就是在这个时候使用的。
- managementService:在基于activiti开发应用的时候,一般用不上这个服务。这个服务主要用于查询流程相关状态的,一般用于监控上。
通过以上学习,大概知道了activiti和工作流的原理。工作流在工作生活中非常普遍,特别是在AI爆发的场景下,agent本质上也就是一个工作流,mcp服务就是任务节点。工作流也是分治思想的一种实现,将任务分割、然后标准化、流程化、自动化。