工作流引擎(数据库)
时间:2022-12-25 18:30:01 | 来源:信息时代
时间:2022-12-25 18:30:01 来源:信息时代
工作流引擎 : 工作流管理中负责进行工作流调度及任务管理的软件。工作流引擎的主要组件是工作流调度器和任务管理器(task manager,TM)。工作流调度器根据任务间的依赖关系协同调度工作流中任务的执行,来完成一个企业目标。任务管理器负责启动其对应的任务,并负责该任务的整个执行过程,即不断从任务处获得任务的执行状态,通知给工作流调度器,并将工作流调度器的决定通知给任务。任务管理器与任务间的消息传递采用某种用户接口语言。
工作流管理系统通过对原有应用代码的少量修改或对新的应用开发强制采用一些标准,使一个任务中主要步骤间的变迁对外可见,从而实现任务管理器对任务的控制。为了创建全局控制以及使恢复和监控更加便利,任务管理器负责与调度器之间的通信。小型的面向办公自动化的工作流管理系统的调度器一般是集中式调度器。
(1)集中式体系结构: 这种体系结构是把任务管理器(TM)和调度器放到一个进程中。这个进程是多线程的,一个线程用于调度器,一个线程用于分派服务,每一个任务管理器对应一个线程,任务作为一个独立的进程来考虑。
调度器负责总控,分派服务根据调度器的决定创建一个个任务管理器线程,任务管理器启动其关联的任务并监控它的执行,同时将任务的执行情况通知调度器,调度器根据任务的执行情况及任务之间的依赖关系,决定在这个工作流中的下一个任务是否启动,如果启动,就通知分派服务创建该任务管理器和任务线程。
监控器监控整个工作流的执行。在集中式体系结构中,调度器把每个任务的内部可视状态以及数据对象的引用传给监控服务,监控器可以实时获取系统的执行状况,及时发现系统故障,并据此进行必要的恢复。
集中式的体系结构实现起来较简单,但在大型的应用领域中可能存在上百甚至上千个任务,在这种情况下,调度器将成为整个系统的严重瓶颈,从而影响系统的性能(见图1)。
图1 集中式体系结构
(2)半分布体系结构: 这种体系结构和前一种体系结构的主要不同点在于任务管理器不再是线程,而是一个个进程。这样不同的任务管理器可以位于远程不同的场地上,一般是和它所关联的任务在一个场地上,负责和任务之间的通信,从而减少同集中调度器的通信开销。
调度器除了设有分派服务外,还设有消息收集服务。分派器发送一个消息来初始化相应的任务管理器。当一个任务达到一个状态,任务管理器就发送一个消息到消息收集器。调度器从消息收集器中获得消息。为了更好地处理消息,消息收集器可以作为该体系结构中的一个线程。任务管理器之间可以相互通信。当任务管理器之间直接交换数据时,仍发送控制信号到调度器。
因为任务管理器从调度器中分离出来,因此它可位于其他的网络结点上,位于多个结点上的任务管理器能以并行的方式进行工作。这种结构将更多的工作分散到各个任务管理器,对于多工作流实例运行情况明显好于集中式调度体系结构。同时这种体系结构仍保持了集中调度算法和集中式体系结构的优点(见图2)。
图2 半分布体系结构
(3)完全分布式体系结构: 在完全分布的体系结构中,没有集中调度器。系统的调度信息分散在各个任务管理器中,作为任务管理器的一部分来实现。每个任务管理器不仅知道其前趋任务的信息,也知道其后继任务的情况,任务管理器之间采用异步通信方式。每个任务管理器可根据其前导任务的执行状态决定是否、何时启动其关联的任务执行。所有任务管理器中的调度信息支持整个系统的调度。
监控器负责监控整个工作流的执行。每个任务管理器将其对应任务的内部可视状态以及数据对象的引用传给监控器。监控器可以实时获取系统的执行状况,及时发现系统运行故障,并据此进行必要的恢复。采用异步通信方式,可提高系统的运行效率,但增加了系统错误检测的复杂度。在这样的系统中,一般应设有专门的错误检测机制,检测由于异步通信而引发的系统故障,这类故障一般调度系统无法发现。
这种分布式的体系结构非常适合工作流的内在分布特性,同时,它消除了任务管理器在工作流执行中要和远程集中调度器进行通信的瓶颈,这种结构的另一个好处是失败的恢复,如果一个结点崩溃,只会影响到推进到该节点的工作流实例,而其他工作流实例可以照常向前推进,不会引发系统崩溃。因而在实际的支持分布式复杂应用的工作流系统开发中,多数采用完全分布式体系结构(见图3)。
图3 完全分布式体系结构