日期:2014-05-16  浏览次数:20689 次

Apache ODE 流程编译过程解析

?

流程编译过程包括了两个步骤,一个是流程的部署过程,另一个是编译。在BPEL流程设计完之后,要想使用该流程首先得将流程文件及相关WSDL文件拷贝到特定文件夹中,该文件夹为所有部署流程的放置位置,这样的实现,降低了流程部署的复杂性。引擎通过查看该文件夹来得知是否有新的流程加入到引擎中,如果发现该文件夹中有新的流程部署,则开始解析BPEL文件和相应的部署文件(deploy.xml),该文件对当前所要部署的流程基本信息进行描述,包括流程名称、流程所引用到的WSDL文件等,在解析过程中根据BPEL规范对不同活动的定义来提取BPEL文件中的各个结构信息、变量信息,以此来构建一个在引擎内部交互的BPEL对象,该对象包含了所有BPEL流程相关信息,后续的所有运行操作再不需要其他文件的参与。在没有错误之后,由持久化层将该流程信息进行存储,等待客户端调用。最后,还应该将该BPEL暴露为Web服务,并且提供WSDL文件。



?在引擎启动后,首先会根据引擎所在的容器环境,对流程部署文件夹进行配置,然后启动部署轮询器来每隔固定间隔轮询检查。部署轮询器会首先检查新加的流程文件夹中是否有deploy.xml文件,通过FileFilter来实现该功能,然后再为新部署的流程创建一个标志文件,表示该流程已经部署成功,这里使用一个空文件来表示,例如对于ATM-process/这么一个流程,将为该流程创建一个ATM-process.deployed空文件表示其已经部署,然后再通过log4j[31]提供的FileWatchDog工具类来监控该文件夹,如果发现该文件内容有更新则对该流程进行重新部署。部署轮询器还要负责删除流程,如果用户删除了流程部署文件夹下的流程文件,则需要调用相应的部署工具类来移除该流程。

在检测到有新的流程部署之后,引擎调用ProcessStoreImpl.deploy(File)来部署一个流程。在部署的过程中主要是解析BPEL文件的过程,这就需要对XML文件进行操作,在本项目我们采用Apache Xerces来操作XML文件,通过解析读取BPEL