`
kungstriving
  • 浏览: 129074 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Intalio Tempo研究一(架构设计)

    博客分类:
  • BPEL
阅读更多

Intalio Tempo架构设计

1. 文档编写目的

该文档通过对Tempo这个开源工作流引擎的架构设计进行描述,学习其设计方法,重要的是了解其对于BPEL4People规范的实现机制,以其在后续的项目开发中可以集成到BPEL引擎中。

本文档主要分为以下几个部分,首先是对Tempo的总体架构的一个简单描述,再就是对于其各个子模块进行描述,其中着重了解其BPEL4People的实现方式,最后,对于TempoODE的集成提出自己的看法。

2. Tempo系统架构

Tempo是一个具有很高模块化的软件,它以此来给开发人员提供最大限度的灵活性,开发人员可以根据自己的不同需求来替换或修改任何其中的模块。

从一个较高层次来看,Tempo可以分成三层结构,以top-down的方式主要有以下几个方面:

1)        终端用户用来管理他们的任务列表的用户接口(界面)。Tempo有两个模块提供最终用户接口:用户接口框架(User Interface Framework)和XForms管理器(XForms Manager)。

2)        管理任务生存周期的工作流逻辑。这部分是由一组WS-BPEL流程来实现的,叫做任务管理流程(Task Management Processes),这些流程可以一个Web Service接口来访问。

3)        负责以一个安全的方式,来负责持久化任务属性的持久化层。这部分是通过任务管理服务(Task Management Service),通过Web Service接口进行访问。

其他的组件提供了额外的/可选的功能,这些功能可以来完成Tempo与一个BPEL环境的集成工作以及Tempo的管理。

1)        安全框架是一个基于角色的访问控制框架(授权、认证、单点登录)。

2)        任务附件服务(Task Attachment Service)是一个接口,用来将附件存储到数据存储或者内容管理系统中。

3)        表单调度服务(Form Dispatcher Service)就像一个代理,它位于任务管理流程(Task Management Processes)和用户接口框架(User Interface Framework)之间。

4)        工作流部署服务(Workflow Deployment Service)提供一个接口来在工作流数据库中部署工作流组件,并且提供其他方法来访问这些组件。

最终,任务对象模型(Task Object Model)定义了任务的属性,它定义在一个通用包中,其他模块都可以重用该对象。

下图描述了这些模块是怎样一起协同工作的:

 

 

1 创建和完成一个完整任务

3. Tempo模块

该部分更细致的介绍上面提到的各个组件

3.1   XForms ManagerXFM

XFM负责提供XForms的代码,并且提供与这些表单对应的工作流操作(workflow actions)。这些是通过User Interface Framework所调用的,当用户在自己的任务列表上点击相应任务时,便会发生对于XFM的调用,当然这些任务对应的表单就是一个XForms document。接着XFM调用TMSTask Management Service)来取得对应的任务数据,并通过WPSWorkflow Deployment Service)取得XForms表单。当用户在其任务列表上选择一个任务时便会生成一个表单。XFM同样可以为工作流操作中添加工具,例如一个提交/完成一个任务的按钮,一个用来管理附件的工具等等。这个机制允许在不影响表单代码的前提下,添加新的操作。事实上,工作流操作是在Form Manager中进行编码的,而不是在表单中。表单开发人员可以专注于表单的开发而不需要担心工作流动作。而XFM只是处理XForms形式的表单以及用于这些表单上的工作流动作。尤其是,它不提供任务列表也不提供任何其他形式的表单。

XFM使用了Orbeon Presentation Serverhttp://www.orbeon.com/)来支持XForms。还需要了XPL语言用来实现工作流动作以及调用TMSTask Management Service)和暴露为Web服务的BPEL流程。

XFM几乎可以以一个war包的形式部署在所有的J2EE应用服务器中,或者一个Servlet容器,像是Apache Geronimohttp://geronimo.apache.org/)。

3.2   User Interface FrameworkUIFW

用户接口框架(UIFW)是一个以web应用程序,用户通过它来访问工作流系统。它提供了一个登录界面和工作列表。当用户选择一个任务时,由它负责提供一个合适的表单管理器。在这一点上,UIFW仅仅支持XForms Manager,它是负责XForms 表单的,但是其他的管理其他类型表单的表单管理器可以plug in到系统中。表单管理器可以基于表单的URL来自动选择,表单URL是每一个任务的元属性。根据不同的表单URL,不同的表单管理器将被调用来生产相应的表单来支持所选择的任务。

UIFW使用了Spring框架来进行实现,同样也可以以一个WAR包的形式部署在几乎所有的J2EE应用服务器上,或者Servlet容器像是Apache Geronimo

3.3   Task Management ProcessesTMP

任务管理流程(TMP)工作流任务的生存周期,从一个任务被创建的那一刻知道该任务完成。在这些流程中,它负责根据一定的规则和定义好的用户交互来变更任务的状态。TMP调用TMSTask Management Service)以一种可靠的安全的方式来改变任务的状态。它提供一些服务来让用户执行工作流动作。同时在用到工作流活动的地方还与BPEL流程进行交互,这些都是通过Form Dispatcher Service来完成的。

TMP是用WS-BPEL2.0实现,它可以部署在几乎所有的WS-BPEL2.0引擎中,例如Apache ODE

3.4   Task Management ServiceTMS

任务管理服务(TMS)将任务数据持久存储到底层数据库中,并且以一种安全的方式提供客户端程序访问和改变任务数据的服务。TMSUser Interface Framework用来去取得任务列表,XForms Manger用它来取得任务数据,还有TMP用它来改变任务状态。

TMS是使用Java实现的一个Axis2的服务,它可以部署在Apache Axis2中。

3.5   Security FrameworkSFW

安全框架给安全系统提供一个基于角色的访问控制接口,主要包括授权、认证和单点登录。它被User Interface Framework用来在用户login的时候鉴定用户身份,同时被Task Management Service用来给任何的TMS调用授权。对于该接口的不同实现可以加入到Tempo中,以此来集成不同的安全系统。Tempo提供了一个默认实现,使用XML文件来定义用户和角色。该框架同样支持从一个LDAP目录服务器中取得用户和角色组织结构。

SFW是用Java实现,以JAR包的方式部署。

3.6   Task Attachment ServiceTAS

TAS是一个将附件持久化地链接到任务的服务。它的API支持添加和删除附件(二进制文件)、还有一些描述和内容类型。

TAS是用Java-Servlet实现,以一个WAR文件部署。

3.7   Form Dispatcher ServiceFDS

FDS可以对用户流程的消息表示和任务管理流程的消息表示进行相互转换。有必要提供一个具体任务的创建/完成模式(schemas)给用户流程,同时给任务管理流程提供处理任何任务类型的能力。

FDS是用Java Servlet实现,部署为一个WAR文件。

3.8   工作流部署服务(WDS

工作流部署服务允许设计时间和自动化工具来远程部署任务描述以及表单内容。WDS将存在的和可用的任务定义注册到Task Object Model持久化存储中。

WDSJava Servlet实现,部署为一个WAR文件。

3.9   Task Object ModelTOM

任务对象模型(TOM)是一个数据访问层,用来创建、查询和管理任务定义和任务实例。

TOM实现为一个Java libraryjar文件)

  • 大小: 67.5 KB
2
0
分享到:
评论

相关推荐

    Intalio使用教程

    Generated by Foxit PDF Creator.Edited by jt.Qiu.关于Intalio的初级入门到使用,如何构建服务等。

    c语言开发图书管理系统项目源码+数据+可运行程序

    c语言开发图书管理系统项目源码+数据+可运行程序 主要功能有:1、以管理员或读者不同身份注册账户。2、登录、找回密码、修改密码。3、管理员:图书入库,清除库存,统计书籍数量,统计读者借书情况,在馆书籍排序,读者排序。4、读者:查看个人借阅信息,借书,还书,按书名、作者、出版社检索图书,查询全部在馆图书。

    基于transformer的多模态脑肿瘤分割.zip

    本项目旨在利用Transformer模型实现多模态脑肿瘤分割。多模态脑肿瘤分割对于脑肿瘤的诊断和治疗具有重要意义。 我们采用Transformer模型,通过分析脑部MRI、CT、PET等不同模态的医学影像数据,实现对脑肿瘤区域的自动分割。项目使用的数据集包括公开的脑肿瘤影像数据集,如BRATS、Medical Segmentation Decathlon等,并进行了预处理,包括图像增强、分割和特征提取等。 在运行环境方面,我们使用Python编程语言,基于TensorFlow、PyTorch等深度学习框架进行开发。为了提高计算效率,我们还使用了GPU加速计算。此外,我们还采用了Docker容器技术,确保实验结果的可重复性。 项目完成后,将实现对多模态脑肿瘤的快速、准确分割,为脑肿瘤的诊断和治疗提供有力支持。同时,项目成果也可应用于其他医学影像分析领域。

    马尔文高浓度池说明书 High Concentration Cell (ZEN1010)

    马尔文高浓度池说明书 High Concentration Cell (ZEN1010)

    如何提高APP商业变现能力.docx

    如何提高APP商业变现能力.docx

    node-v12.20.0-darwin-x64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    R语言绘制SCI科研生存ROC曲线源代码.zip

    把input里面的数据替换成自己的数据,打开R,点Run,可以直接出图!文件适合有R语言基础的同学。

    高电压技术(第三版)课后习题答案

    高电压技术(第三版)课后习题答案

    Linux线程同步:深入理解与实践.pdf

    linux之线程同步一。 本文深入探讨了Linux线程同步的几种常见机制,并提供了代码示例。希望这些信息能够帮助你更好地理解和应用线程同步技术。在编写多线程程序时,请务必谨慎,确保线程安全。

    1999-2022年企业持续绿色创新水平数据.dta

    1999-2022年企业持续绿色创新水平数据.dta

    数据结构实验代码三个方法求最大公约数.rar

    数据结构实验代码

    机械设计无阀滤池-30Tsw16可编辑非常好的设计图纸100%好用.zip

    机械设计无阀滤池-30Tsw16可编辑非常好的设计图纸100%好用.zip

    机械设计RJ45安防线连接器焊锡机sw18可编辑非常好的设计图纸100%好用.zip

    机械设计RJ45安防线连接器焊锡机sw18可编辑非常好的设计图纸100%好用.zip

    SwiftUI嵌入UIKit(SwiftUI顺传值到UIKit)

    SwiftUI嵌入UIKit(SwiftUI顺传值到UIKit)

    node-v12.18.4-darwin-x64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    Python代码实现基于朴素贝叶斯算法的垃圾邮件分类(源码+全部数据)

    当处理垃圾邮件分类问题时朴素贝叶斯算法是一种经典且常用的方法。朴素贝叶斯算法基于贝叶斯定理特征条件独立性假设,能够高效地处理文本分类问题。 以下是一个使用Python实现基于朴素贝斯算法的垃圾邮件分类的示例: 1. 数据准备: 首先,需要准备训练数据集和测试数据集。训练数据集包含已标记的垃圾邮件和非垃圾邮件的文样本,通过这些样本进行模型训练。测试数据集用于评估模型的性能。 2. 数据预处理: 将文本样本转换为特征向量是朴素贝叶斯算法的关键步骤。可以使用词袋模型或者TF-IDF等方法将文本样本表示为向量。 3. 特征选择: 根据问题的具体特点,可以选择保留所有特征或者进行特征选择。常见的特征选择方法有卡方检验、互信息等。 4. 模型训练: 使用训练数据集训练朴素贝叶斯分类模型。常见的朴素贝叶斯分类器有多项式朴素贝叶斯、伯努利朴素贝叶斯和高斯朴素贝叶斯等。 5. 模型评估: 使用测试数据集评估模型的性能,常见的评估指标包括准确率、召回率、精确率和F1值等。 下面是一个简单的Python实现示例: ```python import numpy as np from

    httpsyy70958.com29875videoplayvid45958.m3u8..m3u

    httpsyy70958.com29875videoplayvid45958.m3u8..m3u

    Java 三维装箱代码示例

    在Java中,实现一个三维装箱(也称为三维背包问题)的算法通常涉及到组合优化和动态规划。这个问题是一个典型的优化问题,其中目标是在三个维度的限制下最大化价值的总和。下面是一个简单的Java代码示例,它使用动态规划来解决三维装箱问题。 请注意,这个代码只是一个简单的示例,它假设所有物品的第三个维度的大小都是1,并且没有给出如何回溯选择物品的完整逻辑。在实际应用中,三维装箱问题可能更加复杂,需要考虑所有三个维度的限制,并且可能需要更复杂的算法来解决。 此外,这个问题的解决方案可能需要根据具体问题的要求进行调整,例如物品是否可以分割、是否允许超过一个的物品等。如果你有特定的问题描述或者需要进一步的帮助,请提供更多的细节。

    BCSP-X 2024年活动文件,包含活动范围和模拟题

    北京市中小学信息学能力测评活动(BCSP-X)活动范围和模拟题目,包含基础知识题目和测试点题目

    商业模式画布——如何找到独特价值定位.docx

    商业模式画布——如何找到独特价值定位.docx

Global site tag (gtag.js) - Google Analytics