首页> 中国专利> 脚本处理和工作流系统间的自动转码和语义自适应

脚本处理和工作流系统间的自动转码和语义自适应

摘要

本发明涉及脚本处理和工作流系统间的自动转码和语义自适应。此处描述了用于通过在两种模型间自动翻译来组合工作流和脚本的特性的工作流脚本处理系统。使用该系统,脚本作者可使用熟悉的脚本处理语言动态地创建工作流,而工作流作者能够使用脚本处理步骤来执行动作。以此方式运行的工作流可被设置成在其自身的过程中执行以增强稳健性或效率。企业环境中的操作经常需要长时间并且容易遭受打断。通过为窗口环境添加工作流的可靠性概念,系统的用户能够编写脚本以解决大规模计算环境的共同需求。因此,工作流脚本处理系统混合了由工作流提供的可用资源以及脚本处理环境,以为IT人员提供多种强大的、先进的能力。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-12-21

    授权

    授权

  • 2015-08-12

    专利申请权的转移 IPC(主分类):G06F9/45 变更前: 变更后: 登记生效日:20150723 申请日:20120907

    专利申请权、专利权的转移

  • 2013-11-06

    实质审查的生效 IPC(主分类):G06F9/45 申请日:20120907

    实质审查的生效

  • 2013-10-02

    公开

    公开

说明书

技术领域

本发明涉及用于通过在两种模型间自动转换来组合工作流和脚本的特性 的工作流脚本处理系统。

背景技术

计算环境的用户常常碰到想要使各种任务自动化的需求。终端用户可能希 望使频繁被执行的各个任务自动化,而信息技术(IT)人员可被派以将跨许多 计算机系统的大型任务自动化的任务。任务可包括诸如应用安装和维护、计算 机设置、安全校验、更新系统和应用的目录等等之类的动作。

工作流提供了一种用于使计算环境中的任务自动化的方法。随着时间流 逝,软件编程已从以诸如汇编之类的低级语言来编写应用演变为用像C++、C# 以及Visual Basic之类的高级语言来编写。较高级的语言通常去除了对存储器 的低级管理以及其它基于机器的限制,这有利于允许编程者更多地站在代表将 要解决的问题的对象的角度来思考。然而,在应用逻辑中还是存在许多复杂之 处,尤其是当管理异步处理时。诸如由MICROSOFTTM WINDOWSTM Workflow  Foundation(WF,工作流基础)所提供的那些工作流之类的工作流提供了用于 以高级方式将应用和服务逻辑系统地表示为一个或多个工作流的声明性框架。 工作流由对应用的处理中的特定阶段进行处理的各个活动所组成。一组活动形 成一个工作流。当应用等待来自其它组件的响应时,工作流可被暂停和继续, 并且工作流特别好地适合异步编程以提高开发者的生产力。WF提供了用于声 明工作流、有助于限定逻辑和控制流的活动、以及用于执行所得到的应用定义 的运行时的工具集。

脚本处理提供了另一种用于使计算环境中的任务自动化的方法。脚本处理 一般包括脚本处理语言和主机,该主机读取以脚本处理语言提供用来实现各种 动作的指令的文本文件或控制台输入。与工作流不同,脚本一般不太正式,并 且不要求与对于传统软件编程而言所公知的编程知识相同的知识。脚本可通过 并不比文本编辑器和脚本主机更多的工具被快速地构建和测试。

不幸的是,这些现有方法完全站在了使任务自动化的对立面,并且每个方 法都包含了使其应用于特定任务变得困难的限制。例如,构建工作流一般牵涉 到设置编程环境(诸如MICROSOFTTMVisual Studio)以及获取开发和调试工 作流的编程技巧。这限制了工作流的可访问性并且增加了使任务自动化的花 费。受限制的编程者资源会变成完成这些事情的瓶颈。尽管对于小的、单机的 任务来说很好,但脚本处理对于用于具有跨潜在的许多计算机系统的潜在的许 多从属步骤的较长的任务来说困难得多。具体来说,脚本处理缺乏较高级编程 语言中提供的那种差错检测和差错处理,并且在差错或意料之外的事件发生之 后的停止、恢复、以及重启方面并不擅长。难以用脚本处理来执行的一组步骤 的一个示例是任何牵涉到重新引导计算机系统的任务。一旦系统被重新引导, 脚本就不再运行并且当计算机系统重启时无法在某个正确的点继续。

发明内容

此处描述了用于通过在两种模型间自动转换来组合工作流和脚本的特性 的工作流脚本处理系统。使用该系统,脚本作者可使用熟悉的脚本处理语言动 态地创建工作流,而工作流作者能够使用脚本处理步骤来执行动作。以此方式 创建的工作流可以像传统工作流一样被停止和重启,但这一能力可通过脚本处 理环境或命令窗口(command shell)来访问。另外,以此方式运行的工作流可 被设置成在其自身的过程中执行以增强稳健性或效率。企业环境中的操作经常 需要长时间并且容易遭受打断。传统的窗口脚本处理语言不被设计成在这些环 境下高效运行或者大规模地运行操作。通过为窗口环境添加工作流的可靠性概 念,系统的用户能够编写脚本以解决大规模计算环境的共同需求。因此,工作 流脚本处理系统混合了由工作流提供的可用资源以及脚本处理环境,以为IT 人员提供多种强大的、先进的能力。

提供本发明内容以便以简化形式介绍将在以下详细描述中进一步描述的 一些概念。本发明内容并不旨在标识所要求保护主题的关键特征或必要特征, 也不旨在用于限制所要求保护主题的范围。

附图说明

图1是示出一个实施例中的工作流脚本处理系统的组件的框图。

图2是示出一个实施例中的用于处理在脚本处理环境中接收到的与工作流 有关的命令的工作流脚本处理系统的过程的流程图。

图3是示出一个实施例中的用于展示脚本处理环境中的工作流对象的工作 流脚本处理系统的过程的流程图。

图4是示出一个实施例中的用于将现有工作流导入到脚本处理环境中的工 作流脚本处理系统的过程的流程图。

图5是示出一个实施例中的工作流脚本处理系统的操作环境的框图。

图6是在一个实施例中的用于可视地示出使用脚本处理命令和使用脚本处 理环境中的这些以及其它的工作流来创建新的工作流的过程的数据流程图。

具体实施方式

此处描述了通过在两种模型之间自动转换来组合工作流和脚本的特性的 工作流脚本处理系统,使得脚本能够使用工作流且工作流能够使用脚本。使用 该系统,脚本作者可使用熟悉的脚本处理语言动态地创建工作流,而工作流作 者能够使用脚本处理步骤来执行动作。以此方式创建的工作流可以像传统工作 流一样被停止和重启,但这一能力可通过脚本处理环境或命令窗口来访问(此 处所使用的脚本处理环境可包括窗口或其它环境而无需传统的要通过其来提 供命令的脚本处理语言)。另外,以此方式运行的工作流可被设置成在其自身 的进程中执行以增强稳健性或效率(例如,通过并行化)。企业环境中的操作 经常需要长时间并且容易遭受打断。传统的窗口脚本处理语言不被设计成在这 些环境下高效运行或者大规模地运行操作。通过为窗口环境添加工作流的可靠 性概念,系统的用户能够编写脚本以解决大规模计算环境的共同需求。

在相关工作中,已描述了使用诸如MICROSOFTTM WINDOWSTMPOWERSHELLTM之类的窗口环境的命令作为工作流活动的能力(参见例如美 国专利申请号12/372,746,题为“将命令单元转换成工作流活动(CONVERTING  COMMAND UNITS INTO WORKFLOW ACTIVITIES)”的专利申请)。工作 流脚本处理系统通过利用窗口脚本处理环境中的工作流概念和本地对象、第一 类的操作在这一工作上来构建(例如,它们可以在任何脚本中直接、容易地使 用)。该系统通过工作流概念的应用增强了脚本处理环境和语言以支持规模可 扩展的、高度可靠的、多机器的操作。该系统是窗口脚本处理语言和工作流服 务的现有组件的合成和扩展,其有助于实现高度可靠并且规模可扩展的多机器 管理,改进了工作流创作流程及其功能,并且提供了在企业环境中的故障和中 断下存活的能力。

在一些实施例中,工作流脚本处理系统将与工作流有关的操作添加到现有 的脚本处理环境中。例如,系统可添加提供用于并行地运行其它操作的关键词 的“并行”操作、能够截取快照并存储工作流运行时状态的“持久存储”操作、 能够从之前的错误或暂停状态恢复的“恢复”操作、以及适合在脚本处理环境 中提供工作流行为的任何其它操作。当在脚本处理环境中接收到与工作流有关 的命令时,系统将命令映射成适当的工作流对象(例如经编译的工作流或工作 流主机本身),并且调用工作流对象以执行该命令。执行该命令可包括自动生 成可扩展标记语言(XML)或用于构建工作流的其它中间数据(例如,可扩展 应用标记语言(XAML)文件)、向工作流主机查询状态信息、调用工作流主 机命令以开始/暂停/恢复工作流、等等。

在该命令期间或之后,系统可接收稳健性差错或状态信息。经修改的脚本 处理环境允许脚本作者对这些差错作出反应并且以传统工作流方式直接根据 脚本来处理这些差错。例如,作者可选择重启失败的命令序列、延迟执行命令 直到另一时间、记录关于故障的信息、等等。另一方面,由此创建或分开创作 的工作流还可调用由脚本处理环境所提供的命令。在一些实施例中,系统还包 括调用手动创建的工作流元素的自动化的能力,诸如通过自动创建脚本处理命 令以及用于查看和选择工作流动作参数的帮助信息。因此,工作流脚本处理系 统混合了由工作流提供的可用资源以及脚本处理环境,以为IT人员提供多种强 大的、先进的能力。

工作流脚本处理系统为IT人员提供了几种用于更有效率地通过脚本来利 用工作流的有用的能力。首先,系统提供了将现有的脚本处理语言转码成工作 流的能力。例如,系统可将WINDOWSTMPOWERSHELLTM语义映射成工作流 语义。这包括将脚本处理语法映射成工作流活动以及标记差错、将活动打包在 帮助功能中以提供一致的行为(例如,记录进度报告、设置状态检查点、遥控) 的能力、等等。系统还提供将工作流参数和语义添加到现有命令行抽象中的能 力。这些附加语义包括使用AsJob参数来执行作为后台作业或者使用 PSComputerName参数来定标多个计算机的能力。系统还提供了分析工作流并 且将多个执行单元分隔到不同环境(例如,各进程)中以管理安全性、容错性、 性能以及并发性等等(除了处理工作流活动的执行以外)的能力。对此,系统 通过将命令行语法映射成工作流运行时能力来实现。另外,系统提供工作流与 帮助功能的自动打包,以提供丰富的、一致的命令行语义,例如调试、冗长、 作为后台作业运行等等。相反地,系统扩展了工作流运行时以支持丰富的、一 致的诸如多输出流(输出、差错、调试等等)之类的命令行语义、一致的命令 行选项处理、等等。

工作流脚本处理系统包括工作流引擎与窗口脚本语言的完整集成,其通过 允许工作流语义并将完整的集成保留在交互式窗口体验(交互式命令发现、在 线帮助、等等)中的诸如“工作流”、“序列”以及“并行”之类的新语义元 素的引入提供了以窗口脚本(例如,WINDOWSTM POWERSHELLTM或其它的) 的格式定义工作流活动以及在工作流环境中使用这些活动的能力、以窗口脚本 的格式定义工作流自身的能力。所使用的工作流引擎可以是系统内本地的或者 由诸如WINDOWSTMWorkflow Foundation之类的现有工作流引擎所提供。系 统还提供内建的管理任务库、用于将脚本处理语言转换成内建的工作流活动的 编程方法、工作流公共参数(当现有语言命令被转换成工作流活动时,一组新 的用于现有窗口脚本语言命令的参数变得可用),非处理中的活动的主控与执 行(扩充窗口脚本处理语言运行时以应用工作流概念,该工作流概念允许用户 运行处理中或非处理中的脚本的一部分而用户不必额外做任何事)、使用标准 通知和事件仓库来记录、追踪工作流和工作流活动并将它们与其它语言命令和 管理栈中的其它任务相关的能力(包括组件内的变量级上的跨全部易管理性组 件的挂钩追踪能力)、将流处理集成到工作流环境以启用活动级进展报告以及 将数据集插入各个位置的能力、以及工作流活动的耦合。

命令行会话示例

以下是使用WINDOWSTM POWERSHELLTM内的工作流脚本处理系统的带 注释的示例命令行会话。第一示例示出根据命令行定义工作流的能力。以下文 本表示用于在脚本处理环境内创建工作流的脚本。

这一示例工作流有几个有意思的方面。首先,“parallel(并行)”关键词的 引入允许定义在工作流由工作流主机运行时将被同时执行的工作流中的动作。 每个并行块包括一系列命令。为了说明的方便,每个块包含描述该块将在真实 的工作流中被用来干什么的文本(例如,“Step 1(步骤1)”将用为该工作流实 现作者的目的的任意步骤来替代)。如这一示例中所示,系统还为所生成的工 作流提供了调用脚本和cmdlets(提供附加命令的WINDOWSTM  POWERSHELLTM扩展模块)的能力。脚本处理和工作流之间的转换是双向的。 脚本可使用工作流概念,而工作流可使用脚本处理概念。“script(脚本)”关键 词的使用展示了工作流中的内联脚本。“persist(持久存储)”关键词的使用展 示了工作流的检查点。

下一示例示出从脚本内使用工作流以及与工作流交互的能力。会话结合以 下工作流定义来运行,与前一示例很像,该工作流定义可使用WINDOWSTM  POWERSHELLTM来提供在命令行中。

这一定义创建了称为“Test-Workflow”的工作流,其具有三个动作:1) 显示任何WINDOWSTM POWERSHELLTM进程的状态;2)休眠20秒钟;以及 3)显示关于(处理网络上接收到的WSMan请求的)WinRM服务的信息。定 义这一工作流使得系统自动创建能够由工作流运行时所执行的XML(XAML) 定义。定义可被显示如下。

注意的是,尽管这是一个相当简单的工作流,但创建该工作流将通常需要 打开一个工作流编辑应用、充分地理解工作流以创建和使用正确的命令、以及 随后构建该工作流。而使用工作流脚本处理系统,只需命令行中的几个简单的 行就能完成以上工作。以下命令行运行该工作流作为新的作业。

PS C:\Wi ndows\system32>$j=Test-Workflow-AsJob

PS C:\Windows\system32>$j

Id  Name State HasMo reData Location Command

1 Job1 Running True localhost Test-Workflow

如以下的行中所示,该作业可被挂起并且随后在另一工作站被拾起及控 制,这些对于此前仅仅采用脚本处理来说是不可能的。另外,该作业可在系统 重新引导和重启或恢复之后被拾起。

PS C:\Wi ndows\system32>Suspend-Job$j

PS C:\Wi ndows\system32>get-job

Id  Name State HasMo reData Location Command

1 Job1 Suspended True local host Test-Workflow

5 Job49 Suspended True localhost Join-Domain

PS C:\Windows\system32>Receive-Job 1-Keep

Handles NPM(K)PM(K)WS(K)VM(M)CPU(s)Id ProcessName

634 38 80996 94072 643 9.58 3428 powershell

286 20 54768 58696 590 0.61 5860 powershell

PS C:\Wi ndows\system32>$j

Id  Name  State HasMoreData Location  Command

1 Job1 Suspended True localhost Test-Workflow

PS C:\Windows\system32>get-job

Id Name State HasMoreData Location Command

1 Job1 Suspended True l ocal host Test-Workflow

5 Job49 Suspended True l ocal host Join-Domain

PS C:\Windows\system32>ipmo PSWorkflow

PS C:\Windows\system32>get-job

Id  Name State HasMoreData Location Command

3 Job49 Suspended True localhost Join-Domain

4 Job1 Suspended True localhost Test-Workflow

PS C:\Windows\system32>Receive-Job-Name job1-Keep

Handles NPM(K)PM(K)WS(K)VM(M)CPU(s)Id ProcessName

634 38 80996 94072 643 9.58 3428 powershell

286 20 54768 58696 590 0.61 5860 powershell

PS C:\Windows\system32>Receive-Job-Name job1

Handles NPM(K)PM(K)WS(K)VM(M)CPU(s)Id ProcessName

634 38 80996 94072 643 9.58 3428 powershell

286 20 54768 58696 590 0.61 5860 powershell

Status:Running

Name:winrm

DisplayName:Windows Remote Management(WS-Management)

PS C:\Windows\system32>get-job

Id Name State HasMoreData Location Command

3 Job49 Suspended True localhost Join-Domain

4 Job1 Completed False localhost Test-Workflow

PS C:\Windows\system32>get-job|remove-job-force

PS C:\Windows\system32>get-job

最后的示例显示了为未明确定义用于脚本处理环境的公共参数的工作流 自动创建该公共参数。

PS C:\Windows\system32>import-Module Get-Inventory.xaml

PS C:\Windows\system32>Get-Inventory-PSComputerName Machine1,

Machine2,Machine3-PSCredential foocontoso.com-AsJob-JobName

MyJob

这一示例显示了像WINDOWSTM POWERSHELLTM中公共的 PSComputerName以及PSCredentials之类的参数,这些参数由用于XML定义 的工作流的系统自动创建。该示例还示出了使用“Import-Module(导入模块)” 命令来根据XAML定义直接将工作流导入到WINDOWSTMPOWERSHELLTM中以供后续执行。

系统组件

图1是示出一个实施例中的工作流脚本处理系统的组件的框图。系统100 包括脚本处理主机组件110、命令接收组件120、工作流命令组件130、工作流 转换组件140、工作流主机组件150、主机间通信组件160、工作流执行组件 170以及脚本动作组件180。这些组件中的每一个都在此处进一步详细讨论。

脚本处理主机组件110包括能够接收用于执行任务的脚本命令的脚本处理 环境。脚本处理主机组件110可包括经修改以实现此处所描述的系统100的现 有脚本处理环境,诸如WINDOWSTM POWERSHELLTM。脚本处理环境可提供 命令提示符、翻译用一种或多种脚本语言(例如,JavaScript、VBScript、Perl 等等)编写的命令、以及执行命令所指定的任务。脚本处理主机组件110可包 括可执行文件(例如,powershell.exe、cscript.exe等等),用户运行该可执行 文件来调用为脚本处理环境提供接口的进程。脚本处理环境可包括用于接收文 本文件或其它命令列表的接口、用于动态输入命令的接口(例如,命令提示符)、 用于编程地接收来自其它源(例如数据库或远程控制台)的命令的接口、等等。 为了执行所接收的命令,脚本处理主机组件110可调用提供计算机系统所展示 的各种功能的一个或多个外部组件或应用编程接口(API)。

命令接收组件120接收并解释提供给脚本处理主机组件110的用户界面的 命令。命令接收组件120可被设计成识别执行脚本处理环境的公知核心任务(诸 如加载脚本文件、导入定义附加命令的模块(例如,cmdlets)、显示状态信息 等等)的一个或多个关键词。命令接收组件120还识别由对此处所描述的系统 100的一种实现添加到脚本处理环境中的一个或多个与工作流有关的命令。工 作流命令可包括用于定义工作流、定义工作流动作、定义工作流动作如何执行 (例如,并行或串行)、监视工作流的状态、检索工作流差错或其它信息等的 关键词、参数以及其它定义。当检测到与工作流有关的命令时,命令接收组件 120将命令传递给工作流命令组件130以供处理。

工作流命令组件130接收并处理与工作流有关的脚本命令。这些命令可属 于各种类别,组件130可不同地处理这些类别中的每一个。例如,被设计用来 创建工作流的命令可使组件130存储用于持久存储与使用命令来创建的任何工 作流有关的信息的工作流定义。在一些实施例中,组件130可调用工作流转换 组件140来在用于定义工作流的脚本处理关键词与工作流框架所使用的标准工 作流格式之间进行转换。例如,XAML被用于通过WINDOWSTMWorkflow Foundation来定义工作流,而工作流转换组件140可基于定义工作流的任何工 作流脚本命令来输出XAML。诸如那些询问工作流状态的其它工作流命令可使 工作流命令组件130调用工作流主机组件150来确定关于工作流的更多信息。 例如,诸如WINDOWSTMWorkflow Foundation之类的工作流框架提供用于访 问工作流主机以及询问工作流状态的API。因此,工作流命令组件130可对基 于脚本的与工作流相关的命令的语义进行转码或适配以调用工作流框架的适 当的API来实现脚本的目的。

工作流转换组件140将定义工作流的与工作流有关的脚本命令转换成工作 流主机组件150所识别的标准工作流定义格式。传统地,工作流通过使用诸如 MICROSOFTTMVisual Studio或其它开发环境之类的工作流编辑用户界面来创 建,并且随后以诸如WINDOWSTMWorkflow Foundation所使用的XAML之类 的标准工作流格式来存储。工作流转换组件140可直接将脚本命令转换成与所 存储的诸如XAML元素之类的对象的一个或多个交互,以直接根据脚本或命令 提示符来定义工作流。以此方式创建的工作流对于即使没有开发或相关经验的 IT人员来说更容易访问,并且可由即时可用的组件快速地创建而无需安装专用 的工作流创作环境。例如,MICROSOFTTM WINDOWSTM 7及其后版本包括即 用型的WINDOWSTM POWERSHELLTM,其可被修改以实现此处所描述的系统 100。其它操作系统提供可以类似方式使用的其它脚本处理环境。

工作流主机组件150主控用于提供编程模型和引擎的工作流以将商业过程 实现为工作流。WINDOWSTMWorkflow Foundation是提供工作流主机的框架的 一个示例。工作流脚本处理系统100可利用这些现有主机或提供其自己的主机 用于主控托管工作流。工作流主机组件150可提供工作流的处理中执行、工作 流的非处理中执行、工作流的远程主控托管、或由系统100的用户所选取的以 上的任何选择。非处理中执行对于增强稳健性和避免使脚本处理主机进程中断 的差错来说会是有用的。远程执行对于执行影响远程计算机系统的工作流动作 来说会是有用的。工作流主机组件150执行传递给它的特定工作流的动作,并 且提供一组稳健的用于调用工作流、定义如何执行工作流、检查工作流状态、 管理处理中的工作流作业、接收差错并记录关于之前尝试过或者已完成的工作 流动作的信息等等的服务和API。

主机间通信组件160在脚本处理主机组件110和工作流主机组件150之间 通信。在不同时间,工作流主机组件150可以在与脚本处理主机相同的进程中、 与脚本处理主机相同的机器上的进程外、远程机器上、以及以上的任意组合中 运行工作流动作。主机间通信组件160提供了脚本处理主机和工作流主机之间 的链接,使得脚本能够获取状态信息、开始和停止工作流作业、以及执行与工 作流有关的其它动作。主机间通信组件160可包括使用各种通信协议(诸如 WS管理协议或其他)中的任意一种的传输服务以及传输服务客户机。组件160 可利用各种公知的通信标准,以供进程间通信、网络通信等等。

工作流执行组件170执行来自脚本处理环境内的工作流动作。脚本处理环 境可导入之前创建的、存储为XAML文件或另一种持久的数据格式的工作流, 并且可通过执行工作流来执行工作流所指定的动作。组件170可调用分开提供 的工作流主机或者可直接执行工作流。组件170可基于该工作流被设计为影响 哪些计算机系统(例如,该工作流是运行在远程计算机系统还是本地计算机系 统上)、将运行工作流多长时间、需要什么类型的稳健性等等来确定如何运行 工作流。

脚本动作组件180提供了用于调用来自工作流动作内的脚本命令的打包 器。工作流由称为活动的功能块组成,并且通常受限于由工作流设计环境提供 的任何块。在此处所描述的系统100的例子中,这些环境被扩展以提供对于大 量的可用脚本命令集的访问,包括那些随时间由第三方通过像WINDOWSTMPOWERSHELLTMcmdlets一样的可扩展框架添加的脚本命令。这允许此处所描 述的这种双向益处,其中脚本处理环境可利用工作流,而工作流可利用脚本处 理环境。

在其上实现该工作流脚本处理系统的计算设备可包括中央处理单元、存储 器、输入设备(例如,键盘和定点设备)、输出设备(例如,显示设备)和存 储设备(例如,盘驱动器或其他非易失性存储介质)。存储器和存储设备是可 以用实现或启用该系统的计算机可执行指令(如软件)来编码的计算机可读存 储介质。此外,数据结构和消息结构可被存储在计算机可读存储介质上。本文 所要求的任何计算机可读介质包括仅那些落在法定可受专利保护的类别中的 介质。该系统还可包括一个或多个通信链路,通过通信链路可传送数据。可以 使用各种通信链路,诸如因特网、局域网、广域网、点对点拨号连接、蜂窝电 话网络等。

该系统的实施例可以在各种操作环境中实现,这些操作环境包括个人计算 机、服务器计算机、手持式或膝上型设备、多处理器系统、基于微处理器的系 统、可编程消费电子产品、数码相机、网络PC、小型计算机、大型计算机、包 括上述系统或设备等中任一种的分布式计算环境、机顶盒、片上系统(SOC) 等。计算机系统可以是蜂窝电话、个人数字助理、智能电话、个人计算机、可 编程消费电子设备、数码相机等。

该系统可以在由一个或多个计算机或其他设备执行的诸如程序模块等计 算机可执行指令的通用上下文中描述。一般而言,程序模块包括执行特定任务 或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。通常, 程序模块的功能可在各个实施例中按需进行组合或分布。

功能操作

图2是示出一个实施例中的用于处理在脚本处理环境中接收到的与工作流 有关的命令的工作流脚本处理系统的过程的流程图。在块210开始,系统在脚 本处理环境内接收命令。可经由显示在命令控制台中的命令提示符、经由之前 加载的包含脚本命令的文本文件、或者通过提供脚本命令的任何其它源来接收 命令。命令可包括标识命令的关键词、与命令相关联的一个或多个参数、或与 命令有关的任何其它的补充信息。

在块220中继续,系统确定所接收的命令是否与工作流有关,并且如果是 的话在块230中继续,否则系统完成并以传统方式处理命令。该系统可识别一 个预定义的工作流命令列表,并且可提供可扩展模型,该可扩展模型允许通过 扩展脚本处理环境来添加和识别新的工作流命令。与工作流有关的命令可创建 新的工作流、定义工作流动作、请求工作流状态、执行或恢复工作流等等。

在块230中继续,系统标识与所接收的命令相关联的工作流。该命令可 根据名称或其它标识符来标识工作流。该命令可创建新的工作流或请求执行或 接收关于之前创建的工作流的状态信息。之前创建的工作流可能已通过此处进 一步描述的脚本处理环境创建,或者可能已使用工作流设计/编辑环境以更传统 方式创建。在一些例子中,标识工作流可以是隐式的而非显式的。例如,一个 可替换实施方式可仅仅假设所有都是工作流模式中的工作流。

在块240中继续,如果所接收的命令定义了新的工作流,则系统在块250 中继续,否则系统跳转到块260。命令可与用来创建工作流的一系列命令相关 联。例如,“工作流”命令关键词可在脚本中标记工作流创建块的开始,并且 圆括号或其它分割符内的其它命令可指定关于脚本将创建的工作流的动作和 其它信息。

在块250中继续,系统创建由接收到的一个或多个命令所描述的新的工作 流。系统可在存储器中创建工作流以及将工作流持久存储在诸如XAML文件之 类的公知的工作流存储格式中。持久存储的格式可以是能够使用工作流设计工 具来读取和编辑的格式,并且是能够被可执行工作流的动作的工作流主控软件 所识别的格式。系统允许用户使用脚本处理环境来执行非常强大的任务,但是 用户不受限于脚本处理环境,并且可以在使用脚本命令以及使用其它工具来处 理工作流之间自由地切换(例如,以便定义可从工作流设计者环境中受益的高 级动作)。

在块260中继续,系统将所接收到的与工作流有关的脚本处理命令转换成 工作流主机所识别的一个或多个工作流操作。转换可包括访问和调用与工作流 相关联的对象模型、调用工作流主机的API、加载或持久保存所存储的工作流、 等等。转换可将在脚本处理命令提示符处以一种格式接收的参数转换成被传递 给API的对象调用参数。系统执行适合于脚本处理环境正使用的工作流引擎的 转换。

在块270中继续,系统将经转换的工作流操作提供给工作流主机,以执行 所接收的与工作流有关的命令。例如,如果命令请求处理中的工作流的状态, 则系统可将该状态请求转换成对于工作流主机的API调用,调用该API,接收 API结果,并将结果转换成脚本处理环境中的命令行状态显示。

在块280中继续,系统从工作流主机接收响应于所提供的操作的操作结果。 结果可包括文本信息、编程对象(例如,日期、差错对象、或其它对象)、对 于内存中的工作流对象的引用、等等。系统将结果转换成能够被用于脚本处理 环境内的格式。例如,系统可提供用于在后续脚本处理命令中引用相同工作流 的数字标识符、向命令控制台显示文本、检索附加的差错信息以及显示描述性 文本、等等。在一些例子中,结果可简单地指示操作成功完成,并且系统可显 示“OK”或其它指示。

在块290中继续,系统响应于所接收的操作结果在脚本处理环境中显示状 态信息。在框290之后,这些步骤结束。

图3是示出一个实施例中的用于展示脚本处理环境中的工作流对象的工作 流脚本处理系统的过程的流程图。在块310中开始,系统接收标识包括在脚本 中的工作流命令的脚本创作请求。许多脚本处理环境提供具有诸如自动完成之 类的特性的命令提示符,环境为该特性在命令提示符处提供了可能的参数列表 或者与脚本命令有关的其它信息。在工作流的例子中,系统通过以下步骤生成 待响应于该请求而显示的信息:加载工作流、导入其补充信息(例如,动作、 参数等等)、将该信息转换成能够从脚本中使用的形式、以及将经转换的信息 显示给用户。

在块320中继续,系统响应于该创作请求标识一个或多个工作流对象。例 如,用户可能已经开始键入之前创建的或导入的工作流的名称、或者可能正在 键入与预定义的与工作流有关的命令相关联的关键词。系统标识命令可能正引 用以为其提供有帮助的信息的对象。例如,对象可包括一动作(该动作是工作 流的子集)、工作流作业标识符、或任何其它与工作流有关的对象。

在块330中继续,系统标识与所标识的工作流对象相关联的一个或多个参 数。参数可包括对象能够在其上执行的计算机名称、将在其下执行对象的用户 帐户的凭证信息、文件名、或应用于特定标识的工作流对象的任何其它参数信 息。

在块340中继续,系统将所标识的工作流对象参数转换成允许在脚本中提 供参数的格式。这可包括创建一个或多个参数标志或关键词(例如,用于“名 称”参数的“-名称”)、创建可用参数的列表、将具体类型的参数转换成意 思等同的文本(例如,允许日期对象被指定为文本日期,诸如“1/1/2011”)、 等等。

在块350中继续,系统在脚本处理环境中向用户显示关于经转换的工作流 对象参数的信息。系统可在命令提示符处显示帮助信息、在悬浮的窗口或列表 中弹出命令完成信息、或以有助于脚本作者使用来自脚本内的工作流对象的任 何其它方式提供关于工作流对象的信息。在框350之后,这些步骤结束。

图4是示出一个实施例中的用于将现有工作流导入到脚本处理环境中的工 作流脚本处理系统的过程的流程图。导入现有工作流的能力允许脚本处理环境 与工作流一起使用而无论它们是如何或何时被创建的。工作流不需要为了在脚 本处理环境中使用而已经在脚本处理环境中被创建。

在块410中开始,系统接收导入现有工作流以在脚本处理环境中使用的请 求。请求可包括用于访问现有工作流的信息,诸如访问存储工作流的文件的文 件路径、对存储工作流的数据库的数据库引用、或由于定位及访问之前定义的 工作流的任何其它标识符。请求可包括被添加到脚本处理环境中的、用于支持 使用来自脚本处理环境的工作流的预定义脚本命令。

在块420中继续,系统访问现有工作流并加载用于在脚本处理环境中使用 工作流的信息。例如,系统可访问存储工作流的XAML文件,枚举XAML文 件的XML元素以读取工作流说明,以及准备用于执行工作流上的进一步操作 的存储器内的对象。

在块430中继续,系统分析指定了由现有工作流执行的任务的一个或多个 工作流动作。使用之前的示例,系统可从XML文件加载工作流并且读取指定 了工作流的动作的XML元素、与各个动作相关联的任何步骤、各个动作的参 数、等等。

在块440中继续,系统创建用于与工作流动作一起工作并且指定与工作流 有关的输入信息的一个或多个与脚本有关的参数。例如,用于设置计算机系统 的工作流可接收指定了设置哪个计算机系统、安装哪些应用等等的输入。脚本 参数允许脚本作者在调用工作流或调度工作流用于以后执行时,直接在脚本处 理环境内指定工作流输入信息。

在块450中继续,系统等待与工作流有关的附加命令。例如,脚本作者可 与来自脚本处理命令提示符的工作流一起工作以提供参数、调用工作流、检查 工作流的状态、重启或暂停工作流、接收差错和/或进度信息等等。在框450之 后,这些步骤结束。

图5是示出一个实施例中的工作流脚本处理系统的操作环境的框图。环境 包括三个分开的、其上运行着系统的各部件的计算机系统。第一计算机系统是 客户机510,用户可从客户机510访问脚本处理环境。脚本处理环境包括工作 流命令组件515和传输服务客户机520。如此处将进一步描述的,工作流命令 组件515在脚本处理环境中接收并处理与工作流有关的命令。传输服务客户机 520与其它计算机系统通信以执行工作流命令。第二计算机系统提供工作流服 务530。工作流服务530包括传输服务535、活动主机进程540、以及工作流引 擎545。传输服务535接收从客户机410发送的命令并将其提供给工作流引擎 545。工作流引擎545管理工作流的执行,无论是本地的还是在远程计算机系 统上。活动主机进程540主控一个或多个工作流活动以在本地机器上执行其步 骤。第三或附加计算机系统包括一个或多个受管理的节点550,节点550执行 工作流活动或者是工作流活动的主体。例如,如果工作流活动包括格式化远程 计算机系统的硬盘,则受管理的节点550会让将被格式化的硬盘所位于的节点 存在。受管理的节点可还被用于将密集处理分离到分开的计算资源上。受管理 的节点550可包括用于与活动主机进程540和/或工作流引擎545通信的一个或 多个远程处理协议555。

图6是在一个实施例中的用于可视地示出使用脚本处理命令和使用脚本处 理环境中的这些以及其它工作流来创建新的工作流的过程的数据流程图。脚本 610包括用于创建工作流的一个或多个命令。分析将脚本610转换成抽象语法 树(AST)620,其可被转码成工作流概念并使用工作流引擎或其它校验来验证。 转码创建包括一个或多个活动的工作流630。系统还可创建一个或多个活动适 配器640,其允许在脚本处理环境内与工作流的活动交互。活动适配器640可 将活动的参数、输出、或与活动相关联的其它信息打包以将该信息转码为适合 脚本处理的形式。工作流命令适配器650识别并响应与新创建的工作流630有 关的命令。工作流命令适配器650还可与以诸如通过工作流编辑器或设计者等 其它方式创建的工作流660交互。

在一些实施例中,工作流脚本处理系统提供自动扇出以在多个计算机系统 上执行工作流而无需脚本作者介入。系统自动提供参数,诸如用于指定工作流 或工作流活动将在哪里运行的WINDOWSTM POWERSHELLTMPSComputerName参数。另外,系统可基于可用资源、对资源的调度、对相关 的其它资源(例如,数据库、网络等)的访问等等来提供对于在哪里运行各种 工作流的自动选择。系统还可提供在其上执行工作流的可用计算机的自动生成 的列表,以解放脚本作者,使其不必分开地枚举计算机并选择一个。

在一些实施例中,工作流脚本处理系统输出各个已创建工作流的持久的版 本(例如,使用XAML)。这允许用脚本处理环境之外的其它基于工作流的工 具来编辑或使用工作流。系统可创建持久存储的格式而无需脚本作者具有关于 XAML、Workflow Foundation、或其它工作流框架的任何知识。

在一些实施例中,工作流脚本处理系统允许脚本用户管理来自多个脚本处 理环境的工作流,并且从一个脚本处理环境移动到另一个并且管理相同的工作 流。例如,使用WINDOWSTM POWERSHELLTM或类似脚本处理环境的管理员 能够从一个计算机系统中启动工作流,并且之后从位于另一计算机系统上的 WINDOWSTM POWERSHELTM实例中检查工作流的状态。

在一些实施例中,工作流脚本处理系统使用WINDOWSTMWorkflow Foundation来提供用于工作流的可扩展持久存储。例如,尽管系统可默认在文 件系统中存储工作流,但特定的安装可将文件存储替换为SQL数据库以存储工 作流。这允许工作流可在整个公司或其它组织中被共享并且可从组织内的任何 计算机系统访问。

在一些实施例中,工作流脚本处理系统将工作流的执行期间的差错捕捉到 脚本处理环境差错流中。通常,来自工作流的差错信息不会在脚本中可用,直 到脚本完成(例如,完成之后的“作业失败”差错),因此正在运行的工作流 不会提供任何信息直到完成。然而,通过工作流脚本处理系统,工作流进展被 更新到WINDOWSTM POWERSHELLTM差错流中或其它脚本处理环境状态流。 这允许在工作流仍然在运行时检查工作流的状态并且实时提供工作流状态。工 作流可随后被暂停并且随后基于组织的要求按需恢复。工作流输出是工作流在 其被生成时很少提供的重要的流,但是在工作流脚本处理系统内很容易提供。

在一些实施例中,工作流脚本处理系统允许工作流被作为特定用户运行。 由于状态被持久保存在工作流中(即使经过多次重新引导),这意味着工作流 可作为特定用户运行(即使经过计算机系统的多次重新引导),这在目前是困 难的。

在一些实施例中,工作流脚本处理系统包括允许工作流请求管理性干预的 “挂起工作流”操作。如果工作流检测到其在缺少管理员干预的情况下不能继 续,则工作流可请求工作流的挂起。这将给管理员克服问题并且恢复工作流的 机会。

从上文将会认识到,虽然在此已出于说明目的描述了工作流脚本处理系统 的特定实施例,但是可以做出各种修改而不背离本发明的精神和范围。因此, 本发明只受所附权利要求限制。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号