shark是一个用来解析XPDL的工作流引擎
研究shark工作流首先下载它的源码,先来介绍一下它的sharkAPI文件夹下的client和internal。
client中wfbase是表示错误和用来做判断用的,和逻辑实现关系不大
wfmodel中的wfactivity、wfactivityIterator等以wf--作为开始的都是为非常重要的接口,后面说到的sharkkernal文件夹下的文件要实现这些接口的功能。
wfservice中的Admininterface、Adminmisc、PackageAdministrator等等都是定义用来给客户端调用的功能接口,包括了种种的管理功能。
internal中的各个文件夹下的内容都是定义在引擎执行时候,由前面的说到的wf--开始的类需要调用到的各种管理器,包括assignment(分配器)管理器、authentication(认证)管理器、cache管理器、持久化管理器、代理管理器(与调用外部程序有关)、日志管理器、映射管理(用户和过程定义的执行者的映射以及应用程序与过程定义中定义的应用程序的映射)、过程锁定(没研究)、脚本管理(可能与计算执行条件和表达式有关)、安全管理(功能不是很强)、工具代理(和调用应用程序有关)、事务管理(这个功能很特别,有点搞不懂)、用户组管理,用户事务管理(和前面的事务管理的实现机制差不多)。