流程编码转让专利

申请号 : CN200780014904.8

文献号 : CN101432715B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : A·J·杉格维G·齐齐斯V·拉贾拉贾

申请人 : 微软公司

摘要 :

所描述的是包含流程编码的可移植包。这些包是可移植的,并且与技术栈不同。这些包可以采用用于配置技术栈的声明性代码的形式,并且可被插入到技术栈中以允许技术栈播放这些包,由此自动化由这些包编码的流程。还描述了用于创作包的方法、用于播放包的技术栈、以及用于加载(“插入”)包并且还可能控制包的播放的应用程序。

权利要求 :

1.一种将描述流程的包加载到技术栈的方法,所述方法包括:

读取所述包并检查所述包的依赖性;

标识所述包中针对所述技术栈的代码部分;

用所述代码部分配置相应的技术栈;

重复所述标识和所述配置的过程,直到解析了整个包;以及

激活所述技术栈上的所述包;

其中所述包是可移植包,流程定义信息被储存在所述可移植包内作为代码部分,并且所述流程定义信息包括:定义对应于所述流程的工作流的工作流定义信息,其中所述工作流定义信息在被插入到工作流引擎时将使得所述工作流引擎能够实例化并 执行所述工作流的实例;

定义表单以及将所述表单链接到由所述工作流定义信息定义的工作流的信息的表单定义信息,其中所述表单定义信息在被插入到表单框架时将使得所述表单框架能够向用户显示所述表单;以及定义一类或多类人为产物以及将所述人为产物链接到所述工作流定义的信息的人为产物定义信息,其中所述人为产物定义信息在被插入到人为产物存储时将使得所述人为产物存储能够储存由所述人为产物定义信息定义的类型的人为产物。

2.如权利要求1所述的方法,其特征在于,还包括在所述包中储存包信息,所述包信息包括标识所述包的作者、所述包对另一包的依赖性、以及所述包所遵循的打包模式的信息。

3.如权利要求1所述的方法,其特征在于,还包括在所述包中储存链接信息,所述链接信息在被插入到链接框架时将使得所述链接框架能够将所述工作流引擎、所述表单框架或所述人为产物存储的任一个中的项与所述工作流引擎、所述表单框架或所述人为产物存储的另一个中的项相链接。

4.如权利要求1所述的方法,其特征在于,所述储存所述流程定义信息包括将所述流程定义信息构造为声明性代码,其中所述工作流定义信息、所述表单定义信息和所述人为产物定义信息包括由所述工作流引擎、所述表单框架和所述人为产物存储分别实现的语言中的代码的相应部分。

5.如权利要求4所述的方法,其特征在于,还包括在所述包中储存对包括其它流程定义信息的另一包的引用。

6.如权利要求1所述的方法,其特征在于,所述流程定义信息还包括链接信息,所述链接信息在被插入到链接框架时将使得所述链接框架能够链接由储存在所述工作流引擎、所述表单框架和所述人为产物存储的不同者上的流程定义信息的不同部分定义的不同项。

7.如权利要求1所述的方法,其特征在于,所述流程定义信息还包括门户信息,所述门户信息在被插入到门户框架时将使得所述门户框架能够显示作为由所述流程定义信息定义的流程的一部分的门户。

8.如权利要求7所述的方法,其特征在于,所述流程定义信息还包括知识信息,所述知识信息在被插入到知识框架时将使得所述知识框架能够向用户提供与由所述流程定义信息定义的流程相关的知识。

说明书 :

流程编码

[0001] 背景
[0002] 多种不同的实体已经编译了关于信息技术(IT)管理流程的指南。例如,IBM发布了红皮书(Redbook)系列。英国的IT信息库(ITIL)描述了用于管理IT服务的厂家无关优选制度。微软提供了将ITIL方针应用于特定软件产品的微软操作框架(MOF)。某些组织可能具有其自己的自定义IT制度和流程,这通常包括人类活动和自动化。一般而言,存在用于管理IT系统和服务的许多不同的优选制度。这些制度中的某一些例如与管理IT系统中的变更、报告并响应于IT事故等相关。
[0003] 结果是许多IT部门将正式IT管理付诸实行发生了问题。某些IT部门可能花费数年来实现ITIL流程。可能存在技术问题,诸如缺少支持流程自动化的基础结构。可能需要配置管理数据库(CMDB)或者可能需要将新的应用程序部署在用户的计算机上。也可能有诸如了解新流程、重新训练人员、分发信息、决定实现细节等人工问题。一般而言,这几种问题可能会部分地解释为何IT行业适应或自动化优选或正式IT管理制度是缓慢的。
[0004] 当然,许多不同公司或组织的IT部门也可能会面临这些相同的问题。可能有大量的重复工作。考虑其中两个不同的IT部门希望在其各自的IT系统上实现同一业务流程或IT管理流程,例如资产获取流程的情形。这两个部门必须大致经历相同的了解并理解获取流程(例如,审计细节、批准链、通信等)、配置其技术以适应新流程、向IT用户和IT管理员提供关于如何实现该流程的知识等的步骤。当前,没有方法供IT部门高效或自动地实现优选IT管理流程。此外,没有方法供人们以与用于自动化IT或业务流程的底层技术分开的方式来共享这些流程的编码。
[0005] 概述
[0006] 以下概述仅是为了介绍在以下详细描述中讨论的某些概念而包括的。本概述并不是全面的,并且不旨在描绘可保护的主题的范围,该范围由所附的权利要求书来阐明。
[0007] 所描述的是包含流程编码的可移植包。这些包是可移植的,并且与技术栈不同。这些包可以采用用于配置技术栈的声明性代码的形式,并且可被插入到技术栈中以允许技术栈播放这些包,由此自动化由这些包编码的流程。还描述了用于创作包的方法、用于播放包的技术栈、以及用于加载(“插入”)包并且也可能控制包的播放的应用程序。
[0008] 许多附带特征将通过参考下面的详细描述并结合附图考虑而得到更好的认识。

附图说明

[0009] 附图中使用相同的附图标记来指示相同的部分。
[0010] 图1示出一示例IT系统。
[0011] 图2示出一个包。
[0012] 图3示出包如何可用于共享流程。
[0013] 图4示出一个示例包。
[0014] 图5示出应用程序可执行来将包加载到技术栈中的过程。
[0015] 图6示出用于插入包的另一过程。
[0016] 图7示出技术栈在播放示例包时的示例处理流程。
[0017] 图8示出了配置管理数据库(CMDB)。
[0018] 图9示出一个示例工作流引擎。
[0019] 图10示出用于处理事故的示例工作流。
[0020] 图11示出了用于声明性地定义工作流的标记。
[0021] 图12示出了可由链接服务器或链接框架链接的工作项、人为产物、警告和其它东西的示例。
[0022] 详细描述
[0023] 概观
[0024] 以下描述以对典型IT系统的讨论以及该IT系统上可用的软件服务或组件的栈的简要讨论开始。之后将是对流程包以及流程包可以如何在技术栈上“播放”,即用于自动化IT基础结构上的业务或IT流程的描述。然后将更详细讨论软件服务栈的组件及其特性。然后将讨论包的其它方面。
[0025] IT系统或基础结构
[0026] 术语信息技术(IT)广泛地涉及技术,具体地涉及尤其是在大组织中管理和处理信息的各方面。IT涉及使用计算机和计算机软件来储存、处理、传送和检索信息。组织的IT基础结构或系统指的是主要是IT服务提供给组织的资产以及用于向组织提供IT服务的硬件和软件(人为产物)。通常,大IT基础结构将由专门的工作人员或部门来管理。
[0027] 图1示出示例IT系统100。IT系统100具有多个硬件和软件人为产物102。硬件人为产物的示例是服务器;诸如路由器、网桥、主干线、电缆、工作站、移动设备、PC等网络设备;诸如打印机以及可能的电话设备等外围设备;以及太多以致于无法列出的其它硬件。软件人为产物的示例是数据库服务器、桌面应用程序、web服务器、web门户、文件服务器、电子邮件服务器、IT管理软件、生产性套件、会计包、以及通常由IT部门来部署和管理的几乎无限种类的其它软件服务。
[0028] 图1还示出了示例技术栈104。技术栈可以被人为是IT基础结构中的软件服务或产品,它们被松散地链接并且能够彼此协作或通信以提供整体IT服务并管理和维护整体IT服务。即,技术栈提供IT基础结构中的实用程序和功能。在图1所示的示例技术栈104中,技术栈104具有多个组件106-116,它们分布在IT基础结构100上。并不是为了重要性起见,这些组件在以下一般地讨论,并且在后文中更详细地讨论(见题为“技术栈”一节)。
[0029] 示例技术栈104具有自服务门户106,它通常用作组织的雇员访问企业信息和应用程序的起始点或网关。尽管通常被具体化为门户网站,但是自服务门户106也可以采用其它形式。自服务门户106可以使用来自各种软件厂商的任一个的产品来实现。例如,微软的SharePoint Portal Server的现有或将来版本可用于核心门户功能。诸如SQL Server等其它产品可用于提供报告服务等。IBM的WebSphere Portal是可用于自服务门户106的产品的另一示例。
[0030] 技术栈104还包括表单框架108。表单框架108是在IT系统100中广泛可用的某一框架。如其名称所指的,表单框架108用于以类似于表单的方式填写关于诸如人为产物、任务等某一工作项的信息。一种非常基本的表单通常具有可能被调整大小并类型化的字段,并且可耦合到某一后端数据源以储存或回填表单字段。表单框架108中的表单还可以是交互式的,即,它可以不止涉及简单地填写字段表单。关于数据完整性的轻量逻辑或规则也可存在于表单中。可使用各种各样的现用产品来实现表单框架108。例如,可使用来自微软公司的Office12或IBM的Workplace Forms或其它产品。较佳地,表单框架108将允许表单以各种方式来显示,例如,一表单可能是直接用户界面(例如,SharePoint或InfoPath表单),或一表单可能是诸如Microsoft Outlook、文字处理程序等应用程序中的弹出窗。由用户经由表单框架108输入的数据通常将被持久保存,可能被保存在一个或多个数据库或在专用人为产物存储110(以下讨论)中。表单框架108中的表单可以由技术栈104中的其它组件来驱动,并且通过表单框架108输入的数据可以影响技术栈104中的其它组件。
[0031] 技术栈104也可具有知识源、存储库或框架112。知识框架112是用于管理知识的服务或应用程序集。知识框架112可以提供诸如储存和索引人为产物和文档、搜索知识、交叉引用或链接相关文档、元数据标记、编目等功能。知识框架112可被认为是允许在进行中捕捉并访问组织的知识的系统。较佳地,用户可以查询并浏览所储存的知识,该知识可以是结构化或非结构化信息。知识的可寻址部分可能是合乎需要的(例如,到文档的URI)。故障诊断指南、文章、白皮书、用户手册、过程文档等是可能在知识框架112中找到的某些类型的知识的示例。可用于知识框架112的产品的示例包括微软的Office12、Factiva、Interwoven的Worksite套件等。
[0032] 工作流引擎或框架114也是IT系统100的技术栈104的一部分。工作流框架114允许创建、执行并监视自动化的工作流。对于大多数工作流产品,工作流由各离散活动之间的流、可能的条件构成。活动的过程可以取决于条件事件。工作流的范围可以从简单的事故处理自动化,到用户定义的长期运行且复杂的工作流。工作流通常是关于什么触发了工作流的特定实例、工作如何流过、以及执行该工作流的活动的某一描述。如稍后将更详细讨论的,工作流可以由另一连接的系统或技术栈组件中的状态变更事件触发。此外,由于人为产物可以通过由链接框架116(以下讨论)提供的链接来链接,因此工作流活动(工作流中的“节点”)可以通过例如web服务等接口来操纵这些人为产物或访问这些人为产物。这可允许诸如IT管理系统警告创建处理IT事故的生存期的事故工作流的情形。
[0033] 存 在 许 多 可 用 于 工 作 流 框 架114 的 商 用 产 品。 例 如,Windows WorkflowFoundation(Windows工作流基础,WWF)提供了用于执行工作流的基于Windows的工作流引擎,而Microsoft Office(Visio)允许工作流的图形构建。Skelta销售一种基于.NET的工作流框架。也可使用基于Java的开放源工作流引擎;参见JBoss jBPM。
[0034] 示例技术栈104中的另一组件是链接服务或链接框架116。链接框架116帮助将技术栈104中的各种组件连系在一起。链接框架116允许链接、交换或同步和映射人为产物。例如,链接框架116可以将开发平台与诸如MicrosoftOperations Management(微软操作管理,MOM)或Systems Management Server(系统管理服务器,SMS)等IT管理平台链接。链接框架116中的链接允许自动化工作流由链接的系统中的相关人为产物来触发并操纵这些人为产物。可使用的链接产品的一个示例是微软的Team Foundation Server(团队基础服务器,TFS),它允许栈组件向链接服务器注册其人为产物和关系。如果使用TFS,则例如,经由web服务获得的人为产物可由链接框架116使用,后者可以维护这些人为产物的关系和位置。
[0035] 技术栈104较佳地包括任务产物源110,它通常是配置管理数据库(CMDB)。CMDB主要提供保持IT项的记录并跟踪其彼此的关系的功能。大多数IT管理活动从人为产物存储110中进行推断以做出决策并共享关于IT系统100中的事物的信息。较佳地,人为产物存储110基于系统定义模型(SDM)语言,该语言便于对人为产物的类型及其之间的关系建模,且便于与诸如MOM和SMS等其它基于SDM的组件交互。一种CMDB类型的人为产物存储110在下文中更详细讨论。
[0036] 技术栈104仅是IT系统可能具有的一种可能的技术栈的示例。其它IT系统可能具有一组不同的组件。此外,组件可以用来自任何厂商的任何种类的市场上可购买到的软件产品来实现。组件可以分布在IT系统中的许多不同的计算机上(例如,表单框架108、自服务门户106等)。某些组件可被安装并运行于一个计算机或服务器(例如,知识框架112、人为产物存储110等)上。某些可被主存在同一服务器上。安装配置并不重要。相反,相关的是各种技术组件的可用性及其彼此通信的能力。此外,组件能够进行关于其各自功能的自治操作。即,例如,工作流框架114能够向用户提供工作流功能而无需技术栈104中的其它组件。或者,表单框架108可能具有存在且与其它组件分开操作的表单,而同时它可能具有如下所述与其它技术栈104组件互操作的表单。技术栈104是能够进行松散联盟或互操作(可能是间接的,或通过链接框架116来方便)但还提供独立功能的自治组件的集合。
[0037] 包
[0038] 图2示出一个包130。给定诸如示例技术栈104等任何技术栈,包130可用于控制该技术栈。包130包括较佳地声明了该技术栈的配置的编码;该包由技术栈来解释并控制该技术栈。更具体而言,包130是流程的编码,并包括诸如栈用于实现该流程的元数据等相关信息。包130实际上可被“插入”到技术栈中并由技术栈“播放”。包130松散地类似于DVD;它可被插入到播放器(技术栈)中,并且其流程可由技术栈来播放。
[0039] 如在背景中所讨论的,从纸张或人类知识解释IT或业务流程可能是易于出错的,而自动化流程使得其与现有管理工具一起工作可能太复杂以致于可能花费数年来实现并且维护成本可能过高。包130允许将技术中立IT或业务流程编码成可移植的、机器可使用的可扩展形式。由此,如果不同IT系统(以及不同的相应技术栈)具有相同的包,则在该包中编码的流程可以在不同的IT系统处实现(自动化)。包方法允许将技术栈(实现流程)与包中配置技术栈来执行包的流程的信息分开。如下文所讨论的,包较佳地包含配置并控制栈组件以协作地执行流程的声明性信息。例如,包可能包含:定义包的流程中各种人类或自动化步骤的工作流信息;用于插入到人为产物存储110中的人为产物模式和关系类型;旨在供流程中涉及的人使用的知识人为产物或指令,其可被储存在知识框架112中;角色定义;示图、表单和报告;表示诸如服务、资产、用户、位置、组织等对象的配置项。
[0040] 包130的内容较佳地是声明性配置信息和元数据,其一部分可被定向到技术栈104中的各种对应组件并由其解释(见图5)。不论包130的内容的形式如何,程序或应用程序132都读取包130并将其插入到技术栈104中。一旦被插入(图2的较低部分),技术栈可以开始自动化包130中编码的业务或IT例程,即,“播放”该包。
[0041] 图3示出包如何可用于共享流程。多个不同的组织、人或实体150a、150b、150c可以将流程152a、152b、152c编码到包154a、154b、154c中。实体150a、150b、150c可能是专攻自动化业务或IT流程的公司。实体可能是其IT部门或人员,其可能编码用于该部门的IT管理流程。诸如流程152a等流程可能是非正式地理解或部分地编制文档的流程,其中流程中的大部分是一个或多个人的个人知识,或者流程的另一部分可能是松散地编制文档的。诸如流程152b等另一流程可能是通常在ITIL、MOF、IBM红皮书系列、IT部门文档编制等中找到的类型的编制文档的流程。诸如流程152c等另一流程可能是临时开发或设计的并将其编码在包152c中。在任一情况下,包154a、154b、154c是较佳地声明了可在不同组织之间共享的流程或过程的可移植编码。
[0042] 图3还示出两个分开且自治的IT系统156a、156b,其可能对应于不同的组织、企业、公司等。每一IT系统156a、156b具有对应的技术栈158a、158b。技术栈158a、158b类似于如上所述的技术栈104,但是可能具有不同的组件集以及可能不同的执行类似功能或代替各种栈组件的不同产品。例如,技术栈158a可能对工作流管理使用微软的WWF,而技术栈158b可能使用开放源工作流引擎。
[0043] 如图3所示,包154a、154b、154c可以在不同的IT系统156a、156b处分发、共享和播放,以使技术栈158a、158b能够实现流程152a、152b、152c。包154a、154b、154c可以通过网络传输来电子地分发、通过物理存储介质的分发来物理地分发、或作为IT管理系统的一部分预安装等等。不论采取哪种方式,一旦接收到包,该包可被插入到接收者的技术栈中并在其上播放,由此自动化了对应的流程。在图3的示例中,技术栈158a正在播放包154a、154b和154c。技术栈158b正在播放包154b、154c。可以看到,不同流程可由一个实体编码,并且仍可由许多不同的实体高效地共享和自动化(“播放”)。此外,如以下参考图4所讨论的,如有需要,包154a、154b、154c中的任一个可以参考其它包154a、154b、154c中的任一个且因此可使用从交叉引用的包中导出的工作项、或类、或数据文件(例如,知识人为产物)、或任何信息。
[0044] 注意,每一IT系统156a、156b应具有将任何包插入到其相应的技术栈158a、158b中的能力。尽管可使用诸如应用程序132等独立程序,但是可提供类似的功能作为技术栈158a、158b的组件的一部分。合并服务台(CSD)是用于提供这一功能的理想位置。事实上,应用程序132可以是CSD应用程序。
[0045] 图4示出一个示例包170。在一个实施例中,包170具有对应于技术栈中的相应组件的代码部分172a-172f。例如,代码部分172a-172f可对应于技术栈104中的组件106-116(图2)。然而,应当注意,包可以具有仅对应于由该包编码的流程所使用的栈组件的一个子集;包不需要使用技术栈中的每一组件。更复杂且结构化的流程具有往往会接触更大量栈组件的编码包。假定示例包170是针对技术栈104的,则每一代码部分172a-172f具有可被插入到其对应的技术栈组件中的代码。如果包170中编码的流程是例如IT资产获取流程,则代码部分172a可能声明用于询问请求的状态或用于发起请求的自服务门户对象的类型/类和实例。代码部分172b可能声明性地描述供用户输入与请求相关的数据的表单,例如用于批准请求的批准表单。代码部分172c可能对人为存储110定义与对其实例可能被储存在人为产物存储110中的请求相关的对象的类。例如,工作项或工作次序、正被请求的人为产物(例如,软件包、计算机等)、或诸如“请求者”、“批准者”、“会计部门”等角色等等。代码部分172d可能指示包括附加到包170的某些知识174。知识174可能包括电子文档、诸如指导视频等媒体、或甚至对知识框架112中的现有文档的修改或更新,诸如到知识174的新的超链接、新文本或其它类似的信息。
[0046] 在示例包170中,代码部分172e可为流程定义整体工作流,例如资产获取工作流。代码部分172e可声明活动和事件和/或活动之间的流的条件。代码部分172f可声明要添加到链接框架116的链接。例如,它可能声明来自IT管理系统(例如,MOM)的警告被链接到储存在人为产物存储110中的问题或人为产物。任何栈组件中的任何数据都可能被链接到另一栈组件中的另一数据项。
[0047] 如由图4中的虚线176所示的,代码部分172a-172f中的任一个可能具有对在另一部分172a-172f中声明的类或对象或其它信息的引用。同样如上所述,代码部分也可能具有到附加到诸如知识174等包170或随其一起包括的某些比特或硬数据的链接或引用177。这一硬数据也可包括向代码部分172a-172f之一添加补充逻辑的软件库、源代码或“代码分离(code-beside)”,或甚至用于升级技术栈组件以与包170或一个或多个代码部分172a-172f兼容的升级压缩包。
[0048] 诸如包170等包较佳地包括适用于整个包170的某些信息,这将被称为全局数据或包数据178。包数据178可指示定义诸如包154a、154b、154c和包170等包的格式的主或容器模式。包数据178可通过提供名称或全局唯一标识符或其它身份信息来标识包170。包数据178可定义包170的命名空间、标识包170的版本、标识包170的发布者或作者、包含真实性和完整性信息(例如,加密的校验和、公钥或真实性证书等)、或全局特性的其它信息。包数据178还可包括诸如对另一包180的依赖性179等依赖性信息、需要的平台、需要的栈组件及其版本等等。包数据178还可用作诸如分发数据181或安装数据182等包的清单列表部分。在一个实施例中,包170可任选地构造为箱文件(即,CAB文件)、微软Windows安装程序(MSI)包或某一其它分发包格式。
[0049] 在一个实施例中,包170是根据包模式184来格式化的结构化文档,该模式可以是XML模式定义文件(XSD文件)或某一其它类型的模式文件。如上所述,包模式184可以附加到或环绕包170,尽管这并不是必需的。在基于XML的实施例中,代码部分172a-172f和包数据178由根据包模式184格式化并排列的XML标记或标签185构成。在该实施例中,代码部分172a-172f可以由加载应用程序132转换成组件专用代码。
[0050] 在另一实施例中,包170也可以是根据包模式182格式化的结构化文档。然而,代码部分172a-172f是专用于相应的技术栈组件的代码的摘录,并且不需要被转换,尽管宏扩展(即,类似编译器的预处理)可能有助于确保参数、宏、命名对象等对包170或将在其上播放该包的技术栈是专用的。
[0051] 在任何实施例中,包可以使用诸如可扩展标记语言(XML)、其派生语言或其它语言等语言来实现。某些部分可使用系统定义建模语言(SDM),例如储存在人为产物存储中的人为产物的定义来实现。在技术栈组件具有可经由声明性代码来访问的API和/或对象模型的情况下,则包的代码部分可以直接插入到对应的栈组件中。在技术栈具有未提供标准化声明性访问(例如,组件专用XML模式)的组件的情况下,则用于该组件的包代码可以是专门为该组件编写的,或者可以用建模语言(例如,SDM)或可能由包模式184定义的另一语言来编写。这一代码可由应用程序132转换成对相应组件专用的代码。
[0052] 关于在包中捕捉的信息的特性,应当注意,可以在包中编码许多类型的流程。可编码非结构化流程(例如,具有单个或未排序活动的流程),例如:通信和协作流程;知识和训练的使用、分级和更新;诊断和调试应用程序的浏览;在解决IT问题时与最终用户聊天;基于web的自服务;报告;查找IT事故和IT事故的服务状态;IT系统变更的通知;填写调查表、关于使用、可用性和与服务级协定(SLA)的兼容性的连续报告;等等。也可编码具有延长的状态持久性(例如,天、周、月甚至年)的结构化流程,其在活动之间可能有很长的间隔,并且在活动之间有高度结构化的流。结构化流程的示例包括:诸如路由和逐步升级等工作项生存期;包括可能的会计活动的授权和批准;诸如接收、测试、部署和引退等资产生存期流程;变更管理生存期流程;知识生存期;等等。尽管IT管理流程较好地适用于打包,因为其通常是以各种IT资源可用的假设来设计的,但其它非IT流程也可被打包。会计流程、保险索赔处理流程和其它业务流程也可被打包。
[0053] 加载器/控制器应用程序
[0054] 如上参考图2所讨论的,应用程序132可用于将包加载到然后播放该包的技术栈中。图5示出应用程序132可执行来将包202加载到技术栈204中的过程200。最初,应用程序132读取206包202并检查全局或包数据(例如,包数据178)。基于包数据,应用程序132可确定是否满足包202的依赖性。例如,应用程序132可验证技术栈组件存在和/或是足够的版本级别。应用程序132还可检查以验证任何交叉引用的包或者被安装在技术栈204中,或者可用于安装。在最初的读取206时,应用程序也可加载任何必要的模式、检查命名空间、或以其它方式准备插入包202。
[0055] 在读取206并处理了全局包数据之后,应用程序132然后标识208包202中针对技术栈组件的一部分。例如,应用程序132在解析包202时可读取标识或区分一代码部分,例如代码部分172a-172f之一的标签。如有必要,如此标识208的节点、元素或代码部分可被转换210成由该代码部分所针对的栈组件所规定的格式或语言。如上所述,对于可使用标准声明性语言(例如,SDM、XAML等)直接编程/配置的技术栈,包中用于这些栈的代码部分可被直接插入到对应的栈组件中。在任一情况下,所标识208且可能转换210的代码部分然后用于配置212适当的技术栈组件。即,包202的该部分被插入到其技术栈组件中。例如,如果所标识208的部分是工作流定义,则用该工作流定义来配置212工作流框架114。
如果所标识208的部分是用于人为产物存储110的且定义了对象的类和/或实例,则当用该部分配置212时人为产物存储可以变得能够储存所定义的类或类型的对象。如果所标识
208的部分是定义包202的门户的门户信息214,则可配置212门户组件216以提供所定义的门户。此外,代码部分的各部分可被插入到一个以上组件中,例如,用于用必需类型的对象类、工作项、链接或其它数据来配置它们。
[0056] 重复218标识208、可能的转换210、以及配置212的过程,直到解析了整个包202。假定包202是在没有任何致命错误的情况下加载或插入的,则应用程序132然后可以通过激活220技术栈204上的包202来开始包132的“播放”。这可涉及验证包202或代码部分都已被成功加载、允许工作流框架开始处理由包202定义的工作流的实例、以及可能发信号通知栈组件的重启、重新设置或重新引导。
[0057] 尽管未用流程图示出,但应用程序132可具有其它主要功能。例如,它还可或者通过禁用其工作流或者通过从栈组件中卸载启用代码来“停止”包的“播放”。应用程序132还可通过分析各种栈组件的错误消息或错误日志来监视包的状态。再一次,示例应用程序132的功能可驻留在任何地方并且不需要被委托给专用程序。应用程序132还可用作通用合并服务台应用程序。
[0058] 图6示出用于插入包的另一过程。接收230来自任何任意源的任何任意包。搜索232该包中对其它包的引用,这些其它包或者被单独安装或插入234、合并到所接收232的包中、或者被验证为当前正在技术栈上“播放”。然后激活236该包,之后栈组件播放238来自包的其相应的内容部分并按需互操作。
[0059] 技术栈
[0060] 一旦用包来配置,技术栈就开始自动化由包编码的流程,即播放或执行该包。技术栈的自治组件执行其普通功能,但是这些组件现在被配置为使得这些功能一起自动化了由包编码的流程。组件不需要知晓其它组件。例如,工作流引擎不需要知道一特定工作流受到例如表单框架中的表单的影响。
[0061] 对于简单或非结构化流程,在技术栈组件上可发生最少量的活动。例如,向用户通知对IT系统的变更的简单的包编码流程可不仅涉及用户在自服务门户处启动变更通知,这可涉及作为该门户的数据源的后端数据库服务器处的触发。该触发可以转到链接框架,后者可确定门户事件被链接到人为产物存储中的工作项。链接服务器因此可发消息通知人为产物存储储存关于变更通知的工作项,并且可发消息通知表单框架开始新的变更通知工作流。工作流引擎然后可通过向用户发送用于填写工作项的细节(变更通知的细节)的表单来执行该工作流的初始活动。用户可接收该表单、填写它、并填写变更通知。对变更通知的填写可使得人为产物存储通知链接框架变更通知已被更新。链接服务器然后发消息通知工作流引擎,依此类推,直到变更通知流程完成。如可以见到的,栈组件将包作为粘合单元来播放或执行,即使它们可能是各自能够独立于其它组件安装和使用的独立或自治的组件。
[0062] 图7示出技术栈在播放示例包时的示例处理流程。一旦播放或激活250了包,用户活动或系统事件就可例如生成252工作项或其它人为产物表示。用户活动的某些示例是向由包配置的电子邮件地址发送电子邮件、访问门户页面或提交输入到表单(可能由包定义)中的数据,等等。系统活动的示例是来自诸如MOM或SMS等管理系统的警告、或由工作流活动生成的消息、或IT系统上由IT系统的技术栈接收到或识别出的其它自动化事故。工作项的生成252导致工作项被储存254在CMDB或其它人为产物存储中。技术栈中的组件生成工作流激活。工作流引擎然后根据触发工作项执行链接的工作流实例中的活动。这些仅是技术栈中的不同组件一旦用包配置如何可协作以执行由包编码的流程的几个示例。
[0063] 图8示出了配置管理数据库(CMDB)280。如上所述,CMDB是用作人为产物存储110的优选(但不是必需)类型的数据库。CMDB储存配置项,即CI的表示(为方便起见,CI的表示和CI本身将互换地使用)。CI通常是服从IT配置管理控制的某一IT组件。在ITIL下,仅举几个例子,CI表示如服务、资产、用户、位置和组织等对象。CI的生存期通常由变更单(change order)(在下一节中讨论)来驱动。箱外(out-of-the-box)人为产物模板可被提供给作者以使作者能容易地编写对诸如计算机和应用程序等常见人为产物使用CI的包。作者可以添加新类型或扩展现有类型。
[0064] 关系也通常能在CMDB中找到。工作项和CI可以通过诸如包含、所有者、服务依赖性、因果等各种类型的关系而彼此或在它们之中相关联。在CMDB中,CI可以由其它CI组成。CI的复杂性和类型可以广泛变化,并且范围可以从整个系统(包括硬件、软件和文档编制)到单个软件模块或次要硬件组件。CI可具有属性,诸如CI名称、描述、位置、详细技术配置设置、选项等等。总之,CMDB是包含每一CI的相关细节以及CI之间的关系的细节的数据库。该数据库可包括关于CI的信息,诸如其副本和序列号、类别、状态、版本、模型、位置、责任或关于项的历史信息等等。
[0065] CMDB可能是优选的是因为许多IT流程处理被方便地储存在CMDB中的IT人为产物和关系。如图8中见到的,诸如事故管理、变更管理、发行管理等IT管理功能282可以使用CMDB280作为在管理IT基础结构284时的信息交换和持续点。此外,IT管理功能282中的大多数决策制定是在这些人为产物和关系上推导的,并且流程的自动化通常操纵这些人为产物和关系的表示。CMDB还可提供既是可移植的又是可扩展的良好定义的基线系统模型。此外,随着时间的推移,更多管理产品将开始使用CMDB,尤其是基于SDM的CMDB,这可方便与其它产品或栈组件的互连接性。
[0066] 不论是否使用CMDB,人为产物存储110都优选地具有某些特征。较佳地,它应是对象关系型的。即,类、关系、组成、分组和约束的概念将是有益的。此外,假定包实际上扩展了现有的技术栈,则如果人为产物存储110允许可扩展性和继承则将是有帮助的。因此,新的包的作者可以继续定义新的类和关系类型,它们可能构建在其它包或模板中定义的那些类和类型上。并且,从如配置项(CI)、受管实体、服务、资产和网络设备等预定义抽象类,或如客户机-服务器等关系类型分出子类可以减少创作包所需的工作。
[0067] 图9示出一个示例工作流引擎300。如上所述,工作流框架114可以使用各种现有工作流引擎中的任一种来实现。图9中的工作流引擎300仅旨在给出某些工作流引擎如何安排和运作的示例。工作流引擎300具有解析新工作流定义304的解析器302。控制器306是执行工作流304的实例的单元。控制器306管理工作流的主题、执行工作流的活动、调用监听器、监听事件、处理超时、执行日志记录等等。监听器308可被实现为一同步活动,并且在满足前提时由控制器306调用。监听器308监听工作流的传入事件。加载器310按照id从诸如CMDB280等持久存储中加载工作流的主题。
[0068] 图10示出用于处理事故的示例工作流330。工作流330是可使用包来实现的结构化流程的类型中的典型。活动332(在包的工作流部分中定义)是工作流330的节点。工作流330的主题包括工作项、用户、电子邮件等。活动332中的任一个可由技术栈的某一其它组件来触发。其它类型的活动可包括发送任务、调用服务、向人们发送通知、操纵人为产物、或通过经过链接服务器(可以具有对该人为产物的引用)来操纵另一栈组件的人为产物。包的工作流代码部分还可包括定义或描述什么触发了工作流的特定实例的信息。包的工作流代码部分还应描述流逻辑,即活动之间的流的路径和条件。考虑工作流可如何与其它栈组件交互的一些示例。工作流可检索、创建、更新或删除CMDB中的工作项和人为产物。工作流可以经由链接框架与外部系统交互,并且例如执行由管理组件(例如,MOM)监视的服务上的任务。工作流还可用电子邮件或其它手段来发出通知。工作流甚至可以用特定信息来注释知识文章。
[0069] 如上所述,包应当能够配置工作流引擎,使得在包中描述的工作流可被自动创建、执行和监视。工作流可以涉及从简单的事故处理自动化,到用户定义的长期运行且复杂的工作流的任何事物。如在下一节中所讨论的,包作者可以为诸如变更授权、逐渐升级、通知、事故处理、资产生存期管理等IT流程定义工作流。基线或标准包(由大多数创作的包使用)可以提供基于在例如MOF中找到的标准操作的模板。
[0070] 同样如上所述,可使用WWF作为工作流框架。然而,为了避免必须编写代码,创作可以在Visual Studio工作流设计器中执行。工作流类型可被绑定到工作项或人为产物的状态变更事件。特定的状态变更,例如将问题状态设为“已解决”,可以启动工作流的新实例来处理问题解决。工作流的上下文可包括工作项,并且因此工作流中的逻辑可访问其相关联的人为产物的一个或多个特性,例如受到该问题影响的服务的所有者的电子邮件地址。可提供箱外标准工作流活动的库来操纵人为产物,包括如解决事故、逐步升级事故、更新事故、更新CMDB等活动。可在WWF设计器中提供标准工作流活动的选项板。这些可包括如发送电子邮件、逐渐升级隐错、或通过调用如MOM、SMS、Exchange、SharePoint或TFS等链接的产品来部署软件等活动。采用该方法,包作者可以通过拖放活动来创建预定义流程,而无需编写代码。
[0071] 图11示出了用于声明性地定义工作流的标记350。本示例中的标记350是以可扩展应用标记语言(XAML)来编写的。标记350是可以是从包中提取并插入到工作流框架中的代码部分的类型的代码的示例。
[0072] 如上所述,技术栈可包括包可用于用相关知识来补充流程的知识框架。知识框架理想地不仅仅是文档的集合;相反,知识框架应具有诸如创建索引、允许搜索、关联相关文章等知识管理功能。应有遵循文章之间的关系并知道在诸如特定包的上下文等给定上下文中什么文章与给定文章相关的能力。如隐错报告、事故或问题的工作项可具有将指示目的或上下文的分类法。例如,工作项可具有指示该工作项是对口令重置的请求的字段。工作项的包中可以有指示存在某些相关知识片段的某些信息。该信息可以是将工作项链接到分类法的链接。如果用户需要了解如何请求口令变更,则用户可获取指示例如何时请求口令、需要发送给用户的经理的电子邮件或根据编码的流程需要采取的任何步骤的知识。在知识密集型使用情形中,可以有定义知识的生存期的工作流或包,例如,某人或角色决定对于关于一话题的文章的需求,某人或角色写草稿,其他人审阅该草稿,某人将其付诸生产等等知识框架可使用诸如微软SharePoint、具有web前端的数据库、Factiva、AskMe、SiteScape等市场上可购买到的产品来实现。
[0073] 图12示出了可由链接服务器或链接框架链接的工作项、人为产物、警告和其它东西的示例370。链接框架可用于创建新数据类型或类之间的新连接器。取决于解空间,可连接或链接到其它外部存储。链接也可在存在坐落在栈组件之上的web服务时是可能的。在这一情况下,有可能容易地声明性地表达链接的项之间的某一链接和转换。换言之,链接框架可提供将对应于一个组件的人为产物与对应于另一组件(或诸如MOM或SMS等IT管理平台)的人为产物进行链接、交换/同步和映射的能力。TFS链接和路由服务器(先前提到的)可用于连接系统。人为产物及其关系在链接服务器处注册。在一个实施例中,当这些人为产物可经由web服务获得时,链接服务器能够维护这些人为产物的关系和位置。用于MOM、SMS和TFS连通性的连接器可如标准模板库中所提供的那样来创作或使用。在一简单实施例中,链接可以是第一对象/人为产物的第一唯一标识符和第二对象/人为产物的第二唯一标识符之间的关联。在此实施例中,示例370之间的链接将是对应于示例370的唯一标识符对之间的一组关联。
[0074] 如上所述,在一个实施例中,技术栈是可扩展的。由此,如果新的包定义了新类、新人为产物、新活动类型、人为产物之间的链接、新工作流等等,则栈组件可以获知并适应该新信息。栈组件根据来自包的新信息来重新配置或扩展。栈组件较佳地具有可用于扩展其功能的可扩展API或抽象层。技术栈的这些特征可以使得包能更容易地用作流程和相关元数据的自包含编码,这允许流程的定义与自动化该流程的技术栈清楚地分开。
[0075] 包特征和流程示例
[0076] 应当注意,包可用作可被插入到操作环境或技术栈的流程的外部表示或模型;存在技术栈和创作环境与包本身之间的区分。同一个包可被插入到不同IT系统的不同技术栈中。包可以引入新链接、具有发生在栈中的不同地方的工作的新工作流、新文档以及到其的链接、以及新表单。此外,该信息可用声明性的方式来编码。换言之,作者可以在包中声明表单,例如定义博客中的下拉菜单的放置,定义另一地方的文本字段,定义另一地方的框,声明下拉菜单将附加到选自一声明性选择列表的数据源,声明界面元素将根据选择选项来限制其显示什么等等。这一类型的信息可以在将执行它的栈或操作环境中表达。类似地,可以在抽象中声明报告而非硬编码。
[0077] 在某些实施例中,包是元数据驱动的解决方案。给定其中要开发解决方案的技术栈,有可能向栈组件添加新数据类型。然而,该步骤单独可能是不切实际的,因为例如现在工作流可能无法工作,因为它没有正确的数据类型;作者有可能必须探究现有工作流来修改该工作流的数据类型以便能够处理新数据类型,例如了解添加的新属性。类似地,现有表单可能无法立即“播放”该数据类型,因为表单作者甚至不了解该属性。由此,通过将这些事物在包中连系在一起,包可以是流程的自包含编码;它可被放入技术栈中,并且其所描述的功能和数据变得在整个技术栈中活动。这对于技术栈的片段理解包中的元数据语言且因此能够一起将该包作为一个粘合单元来“播放”的情况特别可行。作为进一步的解释,包可以通知栈,有具有新属性的新事物等等,并且包可以将这些新事物链接到系统的各部分中的其它事物。然后,在栈级,可以在这些可链接的新事物可以跨技术栈来操纵的假设下创作包。例如,具有活动的新工作流可以操纵新事物,或者组件中的触发器可以在新事物以特定方式改变时被调用。
[0078] 作为进一步的解释,考虑存在诸如人为产物存储(例如,面向对象的数据库、CMDB等)、表单框架(例如,Office12)、工作流引擎(例如,WWF)、信息工作者生产性套件以及上述其它产品等各种可用软件产品。这些种类的产品(栈组件)以某种方式汇聚。例如,许多都具有或将具有可使用诸如SDM或其它基于XML的建模语言等声明性代码来扩展的对象模型和功能。换言之,它们可由可对不同组件采用同一语言的声明性代码来配置。然而,组织的技术栈的这些不同组件先前未作为粘合单元来编程(配置)或扩展。根据此处描述的某些实施例,可移植包现在可用于通过利用其使用诸如XML、SDM或其它语言(不论是标准还是非标准的)等建模语言来声明性地扩展其对象模型的共同能力来将这些组件“连线在一起”。
[0079] 正如编程语言可具有一组标准库一样,技术栈可具有一组其它包可引用和使用或扩展的标准包。这些标准包可以集中于特定情形,并且可以定义与这些情形相关的基本人为产物、活动、链接等,这将在下文中讨论。
[0080] 在IT管理领域,服务管理情形可以使用打包的可移植解决方案来自动化。用于可能接触许多栈组件的呼叫管理的流程可被编码;经由电话、聊天、电子邮件或甚至web传入的“呼叫”可以与呼叫队列管理、计算机电话集成(CTI)、智能语音响应(IVR)、审计、自动形式填充以及在场相集成。事故管理情形也可被编码,例如,涉及管理状态转换和通过其生存期对事故的所有权的事故跟踪。事故管理流程可以包括分类法的自动填充、服务和资产与问题和知识可见性的关联、资产数据的预先发现、以及变更历史。请求管理流程也可在包中编码。这些流程可涉及处理信息请求和硬件或软件升级。服务管理流程包可以例如通过自动从事件或诸如MOM或外部服务台等性能管理系统生成事故来与服务监视流程相集成。问题管理解决方案也可被自动化。这些包可以涉及将事故识别为基础问题的症兆,提供配置、拓扑、知识和事故之间的共同性的可见性以帮助其解决问题。另一种类型的服务管理流程是根本原因分析。这些类型的流程使用CMDB中的相互依赖性图和服务及资产的当前状态来自动识别底层的真正问题。服务级管理流程可以在包中编码。这些可自动化事故优先化、逐步升级、可能绑定到服务级协定(SLA)的通知、或按照服务和问题类型对细粒度的SLA的设置。通知和簿记解决方案可被储存在包中。例如,这一包可自动化在处理事故时保持记录和在适当时刻向资金持有者发送所需通知的流程。另一示例是隐错逐步升级,在这一情况下被认为是隐错的问题通过诸如TFS等隐错跟踪系统逐步升级。解决方案包的另一种类型的服务管理类型与知识使用和维护相关,其中基于事故分类和预先收集的配置数据,向分析者呈现可能基于知识库中的分级的适当的相应知识。较高级的分析者可以定期更新知识以阻止大量问题。
[0081] 变更管理是具有可被编码到包中的流程的另一领域。不当管理的IT变更是IT系统中事故和停机时间的主要原因。变更管理流程是用于以受控方式引入变更以最小化停机时间的流程。基本变更项通常被称为变更单,而通过变更跟踪的基本项单元被称为配置项或CI(上文中讨论)。CI可以或者是受管实体或者是关系,它们是基于模型的管理方法的一部分。然而,CI也可以是策略、用户组或合同及相关关系。某些特定可编码变更管理情形或流程包括以下。变更授权和批准可被结构化为驱动从变更单的创建到完成的工作流、保护来自资金持有者(例如,风险经理、预算经理、调度员、服务所有者和最终用户)的必要授权和批准。用于变更管理的流程可被创作或定制。可创作变更通知流程,这可保持受影响的各方经由电子邮件、门户等被通知到即将到来的变更。影响分析流程可被编码以帮助风险经理分析在一个或多个服务上做出所请求的变更的影响(或风险)。这一流程可通过利用CMDB中的关系来自动化。可创作变更调度流程,它可包括帮助调度员基于可能打开的变更窗、服务时间表和所需人员的可用性来找出以最小不利影响实现变更的适当机会。配置审计流程也可被打包,这一流程可以例如包括将配置信息与使用SMS的所需配置管理(DCM)和物理库存工具扫描的真实信息进行比较。
[0082] 用于性能管理和安全管理的流程也可在流程包中捕捉。安全管理流程的示例包括结合调查和通知活动的警告、导致推荐的知识被提供给管理员的自动化分析等等。
[0083] 与资产管理相关的流程也可在可移植的可插入栈的包中捕捉。资本设备决策通常基于考虑了服务信息的所有者总成本(TCO)报告。这些决策可通过变更管理来驱动变更。更具体而言,资产和配置跟踪流程可用于随时间跟踪诸如服务、资产、用户、配置、策略及其彼此之间的关联等CI。这可允许诸如查询资产的所有者、资产安装在何处、资产参与哪一服务、或如果资产破坏应该呼叫谁等附属流程。变更单的自动化执行保持该数据最新,较佳地保持在企业人为产物存储中。另一可编码资产管理流程是软件许可证遵循管理,包括对环境中的软件的存在和使用的自动化检查、以及采取行动来降低成本和许可风险。TCO跟踪流程可以报告对特定服务或资产的随时间的服务和变更成本。该信息可用于围绕出帐、外包、资本货物和厂商选择做出决策。
[0084] 结论
[0085] 总之,在一个或多个实施例中,单个即插即用包(可以指,且因此逻辑上包括,其它即插即用包)可具有驱动组件栈以一致的方式传递涉及其它连接的产品(在栈之外)上的人和自动化的完整IT/业务流程的配合。给定组件的特性,栈的组件可以直接彼此通信或不通信。但是,所有相关组件可以协作。值得注意的是,由于例如模式和工作流活动等底层声明性配置的知识,栈组件(例如,表单、工作流、一类人为产物)的声明性配置可以用底层组件(例如,CMDB或工作流引擎)的行为的知识来表达,因为它们碰巧在同一即插即用包中。
[0086] 本领域的技术人员将认识到用于存储程序指令的存储设备可分布在网络上。例如,远程计算机可存储描述为软件的过程的示例。本地或终端计算机可访问远程计算机并下载该软件的一部分或全部以运行该程序。可替换地,本地计算机可按需下载软件的片断,或者通过在本地终端上执行一些软件指令而在远程计算机(或计算机网络)上执行一些软件指令来分布式地处理。本领域的技术人员将认识到,通过使用本领域技术人员已知的常规技术,软件指令的全部或部分可由专用电路,如DSP、可编程逻辑阵列等来执行。
[0087] 以上讨论的所有实施例和特征都可用储存在易失性和/或非易失性计算机或设备可读介质中的信息的形式来实现。这被认为至少包括诸如CD-ROM、磁介质、闪存ROM等储存机器可执行指令(或者在执行之前、在执行期间、或者在这两个时间)或源代码、或可用于允许或配置计算设备来执行以上讨论的各实施例的任何其它信息的介质。这也被认为至少包括诸如在实现一实施例的程序的执行期间储存如CPU指令等信息的RAM等易失性存储器。