用于在场的群组组成算法的制作方法

文档序号:6335992阅读:119来源:国知局

专利名称::用于在场的群组组成算法的制作方法
技术领域
:本发明涉及构建群组和确定群组的在场(presence)的系统和方法。技术背景企业和其它组织常常对成群的人做决策或开展活动。群组可以由两个或更多个人形成。例如,董事会可开会确定首席执行官。可由该组织的规则来确定该群组的组织及成员。然而,在无直接人为参与情况下确定群组是否在场和恰当形成是困难的。在场系统有助于自动确定一个人是否在场或者该人在何处。不幸的是,在场系统没有提供一种直接确定群组是否在场的功能。
发明内容关于上述事项及其它问题,考虑了本文提出的实施方式。本文提出的系统及方法的实施方式构建群组并确定群组的在场。群组可基于业务逻辑(businesslogic)构建。一组组件可从业务逻辑来对群组进行建模,可建立群组的成员,可确定管理成员的在场确定的一个或多个规则,并可将群组模型、成员信息、以及一个或多个规则提供给规则引擎。所述规则引擎可基于成员及所述一个或多个规则来针对群组模型评估在场。所述群组在场可接着被提供给向规则引擎订阅了群组在场的一个或多个实体、应用程序、或工作流。本文提出的实施方式提供了多种优势。在场服务之内的群组组成应当对真实世界业务逻辑进行建模。本文的实施方式提供了一组组成算法,其使得群组组成或状态能基于可配置的规则原语(primitive)的任意组合。一些规则原语的例子包括需要单个成员代表一给定的群组或复合群组的子群组(即,代表该给定群组或子群组确定在场状态或接收通信);需要群组全部成员代表一给定的群组或复合群组的子群组;需要法定人数(定义为所有所定义成员的总数或百分比)代表一给定的群组或复合群组的子群组;利用上述规则之一形成并且满足一个或多个相应要求(例如,一个子群组、全部子群组、法定人数等等)的群组或子群组的集合;一天时间规则,其将群组或子群组的在场限定至所定义的一组营业时间;地理位置规则,其通过地理位置限定群组的在场(例如,必须在瑞士);媒介规则,其通过通信的媒介/渠道来限定群组的在场(例如,可经由电话);状态限定规则,其通过预定状态来限定群组的在场。此外,可自动构建和/或更新群组成员。例如,可按照如下方式构建群组经由递归来构建包括不同类型的其它群组的群组;经由从企业目录(enterprisedirectory)(典型地经由轻量级目录访问协议(LDAP)访问)获取的属性;或者经由另外的一种或多种可用机制来输入在别处起源的状态或属性。给定状态的组成规则和状态规则可为每个群组进行不同配置。当前技术仅提供了简单的群组组成能力,其是不灵活的并且不易映射到业务逻辑。本文提出的实施方式通过采用更复杂且灵活的组成规则允许更自然的映射到真实世界业务规则。短语“至少一个”、“一个或多个”以及“和/或”是开放式表述,在操作中既是连接的又是分离的。例如,表述“A、B和C中的至少一个”、“A、B或C中的至少之一”、“A、B和C中的一个或多个”、“A、B或C中的一个或多个”和“K、B和/或C”中的每个都表示A自身、B自身、C自身、A和B—起、A和C一起、B和C一起、或者A、B和C一起。术语“一”或“一个”实体指一个或多个该实体。因此,术语“一”(或“一个”)、“一个或多个”和“至少一个”可在本文交替使用。也要注意到,术语“包括”、“包含”和“拥有”可交替使用。术语“自动”及其变体,如本文所使用的,指的是当执行过程或操作时,在无实质的人为输入情况下所作的任意过程或操作。然而,如果在执行过程或操作之前接收输入,则过程或操作可以是自动的,即使过程或操作的执行使用了实质或非实质的人为输入也是如此。如果人为输入影响了将如何执行过程或操作,则这种输入视为是实质的。同意执行过程或操作的人为输入不视为是“实质的”。本文使用的术语“计算机可读介质”指的是参与提供指令给处理器来执行的任意有形存储装置。这种介质可采取多种形式,包括但不限于非易失性介质或易失性介质。非易失性介质例如包括NVRAM、或磁盘或光盘。易失性介质包括动态存储器,诸如内存。通用形式的计算机可读介质例如包括软盘、软磁盘、硬盘、磁带、或任意其它磁性介质,磁光介质、CD-ROM、任意其它光学介质,打孔卡、纸带、具有孔洞模式的任意其它物理介质,RAM、PROM、和EPROM、FLASH-EPR0M、像存储卡一样的固态介质、任意其它存储芯片或磁片盒,或者任意其它计算机可从中读取的介质。当计算机可读介质配置为数据库时,要理解该数据库可以是任意类型的数据库,例如关系数据库、层次数据库、面向对象数据库和/或类似数据库。因此,本发明被认为包括有形存储介质和现有技术认可的等同物和继任介质,其中存储了这里的实施方式的软件实现。术语“确定”、“运算”和“计算”及其变体,如本文所使用的,可交替使用,并且包括任意类型的方法学、过程、数学运算或技术。本文使用的术语“模块”或者“组件”指的是任意已知的或后来开发的硬件、软件、固件、人工智能、模糊逻辑、或者能够执行与该元件相关联的功能的软硬件结合体。而且,当本发明根据示例性实施方式进行描述时,应意识到可单独要求本发明个别方面的权利。本公开结合附图进行描述图1是一种群组模型实施方式的框图,该群组模型表示群组的成员、层级和结构;图2A、2B和2C是可确定群组在场的系统的实施方式的框图3是一种用于创建群组模型和群组规则的系统的实施方式的框图,所述群组规则用来确定群组在场;图4A和4B是数据结构的实施方式的框图,所述数据结构可由一个或多个计算机系统存储、发送或接收,并且表示群组定义和节点定义;图5是一种用来创建确定群组在场的群组模型和/或一个或多个规则的过程的实施方式的流程图6是一种确定群组在场的过程的实施方式的流程图7是一种计算机系统环境的实施方式的框图,在该计算机系统环境中可执行所述系统及方法;以及图8是一种计算机系统的框图,在该计算机系统中可执行所述系统及方法。在所附的附图中,类似组件和/或特征可拥有相同的附图标记。进一步地,相同类型的多个组件可由附图标记后跟着的字母来区别,所述字母在类似组件中进行区别。如果在说明书中仅使用第一附图标记,则描述可应用于任一具有相同第一附图标记的类似组件,而与第二附图标记无关。具体实施方式接下来的描述仅仅提供实施方式,并非要限制本发明的范围、适用性、或配置。更确切地,接下来的描述将提供给本领域技术人员一种实施所述实施方式的有效描述。要理解,对元件的功能及布置可进行多种变化,而不脱离如权利要求中所提出的本发明的精神及范围。本文描述的实施方式确定群组在场。群组可以是两个或更多个实体的任意集合。实体可以是个人(即,人类)或另一群组。基于业务逻辑创建群组。业务逻辑是一个或多个针对具体任务或事件定义成员的规则。例如,如果公司被起诉专利侵权,则该公司可能需要基于州或国家法律、基于公司的公司法规、公司章程、公司政策或其它指南来按照具体方式应诉。例如,该公司可能需要一特定群组来开会讨论应诉。该群组成员可包括首席执行官、六位董事会成员中的任意其中之三、公司法律顾问、以及财务总监或者首席技术官。为了确定是否可举行该群组会议,该群组的在场需要从该群组的成员并基于业务逻辑来确定。因此,本文的实施方式基于业务逻辑来确定群组组成及群组在场。在图1中示出了一种群组模型100的实施方式(该群组模型亦可称为群组结构或简称为群组)。该群组结构100仅仅是各种群组结构、成员、和/或层级的一种实施例。该群组结构100被提供来说明一些在后面提到的概念或术语。群组100可包括两个或更多个节点102到118。102到118的每个节点可表示个人、另一群组、或子群组。群组100可布置在层级中,其中顶级节点102确定整个群组100的在场。顶级节点102可根据与下级节点的关系被称作父母节点、祖父母节点、曾祖父母节点等等。两个或更多个节点104到118可在层级中包括一个或多个子级或下级。例如,节点104到108在顶级节点102的下一级上。节点104到108被认为是父母节点102的子节点。节点110到118是下一级节点。节点110到118被认为是祖父母节点102的孙子节点并且是父母节点104或者父母节点108的子节点。图1示出了仅具有三级的群组层级。然而,群组层级可根据创建该群组的业务逻辑具有任意数目等级。顶级节点102从子节点104、106和108接收在场状态。顶级节点102可具有一根据子节点104、106和108的在场状态确定该群组是否在场的规则或阈值。例如,该阈值可要求每个子节点104、106和108在场。在其它实施方式中,该阈值可以是百分比(例如,子节点104、106和108的至少50%需要在场)。在其它实施方式中,该阈值是一设定数字(例如,子节点104、106和108中的至少两个需要在场)。无论如何,顶级节点102以及因此该群组的在场状态是基于提供在场状态给顶级节点102的子节点104、106和108的在场状态的。下级节点104到118的在场可以类似方式来确定。例如,节点104的在场状态是根据节点110中的人1和节点112中人2的在场状态的。在某一等级,该节点的在场是根据一个或多个个人的在场的。因而,需要至少两个个人的在场状态来确定群组100的状态。该示例性群组100将在下面提到来描述所述系统及方法的实施方式。在图2A、2B及2C中分别示出了三种系统200、212和218的实施方式,其可操作来产生群组并确定群组在场。系统200、212及218包括通用组件或模块。系统200、212及218中的组件可以是硬件、软件或者软硬件相结合。在实施方式中,结合图2A、2B和2C描述的服务器或计算机系统按照结合图7和8进行描述。结合图2A、2B及2C描述的服务器和功能亦可是软件应用程序,该应用程序在结合图7和8描述的一个或多个服务器或计算机系统上执行。进一步地,本文描述的组件可彼此通信。所述组件可通过任意已知系统或协议进行通信,其中一些系统或协议结合图7和8进行描述。在实施方式中,系统200、212和218包括在场服务器202,其可操作来确定两个或更多个个人的在场状态。在场服务器202可通过任意已知手段来确定所述两个或更多个个人的在场。例如,在场服务器202可根据美国专利申请第7,171,473号、发明名称为"SystemusingHTTPprotocolformaintainingandupdatingon-linepresenceinformationofnewuserinusertableandgrouptable,,、其于2007年1月30日授权;以及美国专利公开号为20070067443、发明名称为“Presence-basedhybridpeer-to-peercommunications”、其申请日是2005年9月30日,来确定在场,这两篇美国专利都在本文全部引用结合所述专利的全部教导。在场信息及在场确定在网络工作组请求评议(NetworkWorkingGroupRequestforComments)中进一步描述2778、由Μ·Day、J.Rosenberg禾口H.Sugano所著、由互联网工程任务组在2000年2月公布,标题为“AModelforPresenceandInstantMessaging”,其在本文全文结合该文档的所有教导。在场服务器202可提供所述两个或更多个个人的在场状态作为在场信息208。在其它实施方式中,在场服务器202亦可提供第一组的群组在场信息210以方便确定第二组的在场。规则数据库206可以是任意数据库服务器、系统、或应用程序,其可操作来存储和提供数据或信息。规则数据库206可为规则引擎204存储群组规则、业务逻辑、群组模型100等。因此,取决于触发群组在场信息需求的群组或事件,规则引擎204可从规则数据库206中搜索及获取信息以帮助确定群组在场。系统200、212和218亦可包括规则引擎204。规则引擎204可以是确定群组在场的应用程序或设备。换句话说,规则引擎204可操作来接收在场信息208、可操作来根据所述在场信息208确定群组在场、以及可操作来公布所述群组在场作为群组在场信息210。规则引擎204可根据从创建群组模型100的业务逻辑创建的规则来确定群组在场。在实施方式中,规则引擎204可在图2A示出的在场服务器202上执行。在其它实施方式中,系统212包括附件214。附件214可以是一与确定群组在场的在场服务器202相独立的服务器或者相独立的应用程序。因此,在场服务器202发送个人的在场信息208至附件214,在附件中,运行在附件214中的规则引擎204确定群组在场并公布群组在场信息210。群组在场信息210可被发送至其它工作流216。其它工作流216可以是其它附件、在场服务器202、另一在场服务器、应用程序、终端用户、等等。系统218亦可包括应用程序220。应用程序220可以是任意使用群组在场信息的软件应用程序。在实施方式中,应用程序220执行规则引擎204。因此,在场服务器202发送个人或子群组的在场信息208至应用程序220,其中运行在该应用程序220上的规则引擎204确定群组在场并公布群组在场信息210。群组在场信息210可被发送至一个或多个终端用户222。因此,对预定的一个或多个群组感兴趣的每个应用程序220可单独确定在场。换句话说,在两个或更多个应用程序220中以分布式方式确定群组在场。在图3中示出了另一种系统300,其可操作来产生群组在场模型100和规则以及可操作来帮助规则引擎204确定群组在场。系统300中的组件可以是硬件、软件、或者软硬件相结合。在实施方式中,结合图3描述的组件是结合图7和8进行描述的计算机系统或服务器。结合图3描述的组件及功能亦可以是运行在一个或多个结合图7和8描述的服务器或计算机系统上的软件应用程序。进一步地,本文描述的组件可彼此相互通信。所述组件可通过任意已知系统或协议通信,其中一些结合图7和8进行描述。系统300可包括可操作来存储用于群组的规则的规则数据库206、可操作来提供业务逻辑306以定义规则的企业目录302、可操作来根据业务逻辑306或规则定义群组模型100的群组定义组件304、以及可操作来根据群组模型100或业务逻辑306定义规则的规则定义组件310。企业目录302、群组定义组件304、以及规则定义组件310帮助定义规则引擎204确定群组在场所需的信息。所述信息接着存储在规则数据库206中。企业目录302可以是存储关于所述两个或更多个个人的信息的LDAP数据库。所存储的信息可包括关于组织中人们的元数据或属性。例如,属性可包括个人标识符(例如,姓名、员工标识符、社保标识符等等)、职位标识符(例如,职称、职位代码,等等),该人所处位置(例如,办公室名称、网址、地址等等)、该人在公司工作了多长时间、个人联系信息(例如、一个或多个电话号码、一个或多个电邮地址、一个或多个邮寄地址,等等),薪水,等等。这些属性可用来形成群组。例如,群组可包括5个执行委员中的3个。胜于列出执行委员的姓名或者个人标识符,群组可列出预定的职位标识符,所述标识符指定几个人作为执行委员。可按照类似方式使用其他属性来形成群组。当规则引擎204正针对具有由属性标识的成员的群组确定在场时,规则引擎204可发送LDAP(或类似)请求312至企业目录302来检索与定义群组成员的属性相关联的所述两个或更多个个人的个人身份。例如,规则引擎204请求形成上述群组的执行委员会的成员的姓名或标识符。这样,规则引擎204可确定何种在场信息208是与群组在场确定相关的。企业目录302亦可包括用来形成群组的业务逻辑306。业务逻辑306可包括谁应该包括在具体群组中、那些群组应如何开会或通信(例如,亲自、视频会议、电邮)、那些群组可以或应该何时开会、那些群组应在何处开会、等等。业务逻辑306被发送至群组定义组件304和/或规则定义组件310,以定义群组模型100和与确定群组在场相关联的规则。群组定义组件304从业务逻辑306定义群组模型100。例如,如果群组包括两个个人和两个子群组,则群组定义组件304创建具有4个节点的模型100,所述两个个人的两个节点以及所述两个子群组的两个节点。进一步地,群组定义组件304接着定义是子群组节点的子级的成员及节点。群组定义组件304创建群组模型100中的节点并布置节点之间的相互关系。群组模型100接着被发送至规则数据库206并由该规则数据库存储。类似于群组定义组件304,规则定义组件310基于业务逻辑306确定与群组模型100中的每个节点相关联的规则。例如,规则定义组件310创建用于节点成员的阈值规则。该阈值通过一种或多种算法来确定并确定如何确定在场。例如,如下情况时可满足阈值规则成员中的两个或更多个个体的至少一个个体在场;成员中的所有个体在场;成员中所有个体中预定百分比个体在场;以及成员中所有个体中的预定数目的个体在场。其它阈值规则是可能的。规则定义组件310亦可具有限定或改变如何确定在场的规则。例如,规则定义组件310可创建一天时间(time-of-day)规则,该规则基于一天时间来限定群组或节点的在场确定(例如,仅在营业时间期间发现在场);地理位置规则,该规则根据地理位置来限定群组或节点的在场确定(例如,仅当成员在预定办公地点时发现在场);媒介规则,该规则根据可用的通信媒介或渠道来限定群组或节点的在场确定(例如,仅当所有成员可呼入远程会议时发现在场);或者状态限定规则,该规则根据状态来限定群组或节点的在场确定(例如,仅如果成员在工作并且不在休假,才发现在场)。这些规则可应用于一般的群组模型100或者应用于群组模型100内的一个或多个节点。用户界面308可以是按照结合图8描述的任意用户界面。用户可能希望创建群组或者管理群组。为了修改或者创建群组和规则,用户通过用户界面308与群组定义组件304、企业目录302、和/或规则定义组件310进行界面交互。因此,用户可创建未由业务逻辑306单独规定的定制群组或规则。图4A和4B中示出了数据结构400和402的实施方式,其可由规则数据库206存储并由规则引擎204检索以确定群组在场。数据结构400和402可保存在任意数据库系统或数据存储系统或协议中。进一步地,数据结构400和402可由群组定义组件304和/或规则定义组件310这二者任意之一创建。在实施方式中,数据结构400是群组定义。群组定义400可包括群组标识符数据字段404、层级数据字段406、至少一个节点标识符数据字段408、成员数据字段410、以及阈值数据字段412。群组定义400可包括比图4A中示出的字段更多或更少的数据字段,如省略号414所表示。群组标识符数据字段404包括至少一个可用来标识群组的标识符(例如,全局唯一标识符(GUID))。群组标识符404可用来公布群组的在场确定。因此,对群组在场感兴趣的应用程序或其它工作流可订阅接收与群组标识符404相关联的在场信息。层级数据字段406可定义群组的层级布置。在实施方式中,层级定义406可标识顶级节点和/或一个或多个在该层级的每个后续等级处的节点。可通过利用节点标识符和该节点所指派到的等级的号码或符号来进行所述标识。进一步地,层级406可定义节点之间的相互关系。换句话说,层级406可列出与该节点相关联的任意相关联子或父母节点的一个或多个节点标识符。节点标识符408可表示与该群组相关联的所述两个或更多个节点。节点标识符408可以是任意类型的标识符或者指向节点数据结构402的指针。成员数据字段410可包括群组的成员信息。成员信息410可包括一个或多个个人,其可能是群组400的一员但不是子群组的一部分。进一步地,成员信息410可包括定义成员的规则,诸如结合图3描述的那些规则。阈值数据字段412可包括用来确定群组何时在场的一个或多个规则。阈值412可包括一个或多个规则,诸如结合图3描述的那些规则。图4B中示出了节点定义数据结构402。节点定义402可包括节点标识符数据字段416、成员数据字段418、以及阈值数据字段420。节点定义402可包括比图4B中示出的字段更多或更少的数据字段,如省略号422所表示。节点标识符416可标识节点。节点标识符416可以是任意类型的标识符(例如,GUID)或指向另一节点定义402或群组定义400的链接。成员数据字段418,与群组定义400—样,可包括节点的成员信息。成员信息418可包括节点标识符和/或作为节点成员的一个或多个个人或子群组的标识符。进一步地,成员信息418可包括定义成员的规则,例如结合图3描述的那些规则。阈值数据字段420可包括用来确定该节点成员何时在场的一个或多个规则。阈值420可包括诸如结合图3描述的那些规则之类的规则。图5示出了一种用于产生群组/规则定义的方法500的实施方式。一般来说,方法500开始于一启动操作502并终止于一结束操作518。尽管在图5中示出方法500的步骤的一般顺序,但方法500可包括比图5所示出的步骤更多或更少的步骤或者布置不同的步骤顺序。方法500可作为一组计算机可执行指令来执行,所述指令由计算机系统执行并在计算机可读介质上编码或存储。此后,方法500将参照结合图1到4B描述的系统、组件、模块、软件、数据结构等等来说明。群组定义组件304和/或规则定义组件310可在步骤504从企业目录302接收业务逻辑310。业务逻辑306定义群组成员和/或管理群组成员的规则。用户可通过经由用户界面308发送信号至群组定义组件304、规则定义组件310、和/或企业目录302来启动群组创建。在其它实施方式中,响应于在企业目录302中创建或修改业务逻辑306来自动创建群组。换句话说,企业目录302自动将业务逻辑306的变化推送(push)给群组定义组件304或者规则定义组件310来创建或修改群组。在步骤506,群组定义组件304基于业务逻辑306来确定群组结构。群组定义组件304可如结合图3说明的根据业务逻辑306来创建群组模型100。一般来说,群组结构100可包括一具有两个或更多个节点的层级。因此,群组定义组件304可创建群组定义400和/或一个或多个节点定义402来创建群组模型100。业务逻辑306可定义群组定义400的数目和内容和/或一个或多个节点定义402,如结合图4A和4B所说明的。进一步地,在步骤508,群组定义组件304可根据业务逻辑306来确定群组层级。业务逻辑306可定义何种个体和/或子群组104和108形成主群组102或其它子群组。因此,群组100的成员可以是其它群组或子群组和/或个人的集合。群组定义组件304可接着在群组定义400和任意节点定义402中包含节点标识符408和/或层级定义406。在实施方式中,一些群组仅拥有个体并且该过程可选地通过路径520从步骤504进行至步骤510。在步骤510,规则定义组件310可确定所述两个或更多个节点102到118中的每个节点的成员。规则定义组件310可由业务逻辑确定标识作为每个节点成员的每个个人的属性或身份,以及从企业目录302获取属性或身份。例如,如果该群组需要有三个执行委员,则规则定义组件310确定执行委员的职位标识符或者确定当前执行委员的员工标识符。属性或身份可存储在群组或节点的成员字段410或418中。进一步地,在步骤512中,规则定义组件310可确定群组中所述两个或更多个节点中的每个节点的阈值。该阈值定义节点成员是否在场。该阈值可由业务逻辑306定义并可包括一个或多个规则,如结合图3所描述的。在步骤514接着创建管理群组组成和成员的一个或多个规则,并在步骤516将其存储在阈值字段412或420中。在实施方式中,规则定义组件310亦可定义限定如何确定在场的规则,例如结合图3描述的规则。这些规则或算法定义群组在场并且是基于业务逻辑306的。因此,如果业务逻辑306改变则规则改变。图6中示出了一种用于确定群组在场的方法600的实施方式。一般来说,方法600开始于一启动操作602并终止于一结束操作618。尽管在图6中示出方法600的步骤的一般顺序,但方法600可包括比图6所示出的步骤更多或更少的步骤或者布置不同的步骤顺序。方法600可作为一组计算机可执行指令来执行,所述指令由计算机系统执行并在计算机可读介质上编码或存储。此后,方法600将参照结合图1-4B描述的系统、组件、模块、软件、数据结构等等来说明。在步骤604规则引擎204接收在场事件。在场事件可以是个人在场状态的变化、定义群组规则的业务目标的变化、节点成员变化(例如,为由执行委员标识符所定义的群组雇佣了新的执行委员)、群组层级的变化、群组中节点的变化、等等。换句话说,在场事件可以是可能影响群组在场的任何变化。例如,在场事件可以是该群组成员一部分的子群组、个人、或者其它实体的在场状态的变化。进一步地,在场事件可以是改变群组结构或群组规则或者新群组创建的业务逻辑的变化。规则引擎204可通过向在场服务器202订阅关于两个或更多个个体的在场状态来被警示在场事件。如果在场状态发生变化,则在场服务器202发送新的在场状态至规则引擎204。在实施方式中,企业服务器302、规则数据库206、群组定义组件304、和/或规则定义组件310可根据业务逻辑306的变化发送信号至规则引擎204,通知群组或规则定义的变化。在步骤606,规则引擎204可接着确定被在场事件影响的一个或多个群组的一个或多个可应用规则。在实施方式中,在场状态的变化用一个或多个群组标识符404来标识。规则引擎204可为一个或多个群组标识符404发送数据库搜索至规则数据库206。规则数据库206可返回一个或多个群组定义400和一个或多个节点定义402。一般来说,群组100将拥有两个或更多个节点。在接收群组定义400和一个或多个节点定义402之后,规则引擎204可使用群组定义400以及一个或多个节点定义402中所定义的群组模型100来确定群组在场。为了确定群组在场,在步骤608规则引擎204可遍历与群组模型100相关联的层级至节点110。在实施方式中,规则引擎204遍历层级110、112、114或者118至群组模型100中的最低节点。为了遍历层级,规则引擎204可解释层级信息406来确定最低节点的节点定义402。在其它实施方式中,规则引擎204可由指向节点定义402的每个节点标识符字段408中的指针或标识符指引。在节点定义416中,规则引擎204可确定该节点是否有子节点并且由指向子节点的指针或标识符指引。该过程可继续直到规则引擎204到达没有指向另一节点的指针或标识符的节点。在遍历层级至节点之后,在步骤610规则引擎204可确定节点的在场。一般来说,规则引擎204根据节点的成员418和一个或多个阈值规则420来确定节点的在场。成员418可包括两个或更多个个人或群组,并且该阈值由定义节点的成员418何时在场的一个或多个规则来确定。典型地,最低节点表示个人,例如节点110、112、114和118。因此,在最低节点处,该节点与至少一个个人的在场相关联,并且规则引擎204从在场服务器202接收个人的在场信息以确定节点的在场状态。在一些实施方式中,与节点相关联的一个或多个个人通过或基于如企业目录302中所存储的个人的至少一种属性来表示。在这种情况下,规则引擎204可发送LDAP查询至企业目录302,以从企业目录中检索拥有该属性的一个或多个个人的身份或标识符,从而确定节点的在场。接着,规则引擎204可从在场服务器202请求该被标识人的在场信息208。如果该节点是父母节点,则由子节点的在场状态来确定在场。换句话说,该节点与子群组的在场相关联,其中该子群组可包括两个或更多个个人。在每个实例中,规则引擎204检索该节点的成员信息418并应用存储在节点定义402的阈值数据字段420中的一个或多个阈值规则和一个或多个其它规则。规则引擎204接着开始迭代用于确定群组中一个或多个节点的在场状态的过程。在步骤612规则引擎204确定是否另一节点存在于群组模型100中。这里,在确定节点的状态之后,规则引擎204确定该节点是否是另一节点的子节点。为了确定该节点是否是一子节点,规则引擎204可确定是否另一节点在节点标识符字段408中具有本节点的节点标识符416。在其它实施方式中,节点定义402包括与该子节点相关联的一个或多个父母节点的标识符。如果在群组模型100中有另一节点,则方法600顺着“是”流回步骤608,以遍历层级至其它节点并在步骤610确定其它节点在场状态。通过继续从一个或多个最低节点向上遍历群组模型100,规则引擎204可确定每个子群组的状态并最终确定群组节点102的状态。如果在群组模型100中没有其它节点,则方法600顺着“否”流向步骤614。在已确定子群组和个人的所有节点之后,在步骤614规则引擎204可接着根据所述两个或更多个下级节点的在场来确定群组在场。这里,规则引擎204确定群组的成员及一个或多个阈值规则。利用所确定的下级节点状态,规则引擎204应用所述阈值规则来确定群组的在场。接着,在步骤616,规则引擎204可公布群组在场210给其它工作流216、应用程序220、终端用户22、或者其它感兴趣方或实体。这里,工作流216、应用程序220、终端用户22、或其它感兴趣方或实体订阅接收群组在场210。规则引擎204发送群组在场210至订阅者。图7说明了一种计算环境700的框图,该计算环境可包括本文描述的系统200、212、218、或300、或本文描述的其它系统。系统700包括一台或多台计算机705、710和715。计算机705、710和715可以是通用个人计算机(包括,仅仅是示例,个人计算机和/或膝上型计算机,其运行各种版本的微软公司的Window涉.和/或苹果公司的Macintosh操作系统)和/或工作站计算机,其上运行多种商用UNIX或类UNIX操作系统中的任意操作系统。这些计算机705、710、715亦可拥有多种应用程序中的任意种,包括例如数据库客户端、服务器应用程序、和/或web浏览器应用程序。替代地,计算机705、710和715可以是任意其它电子设备,诸如瘦客户端计算机、移动电话、移动设备、具有上网功能的移动电话、和/或个人数字助理,能够经由网络(例如,下述网络720)通信和/或显示及导航其它类型的电子数据。虽然示例性系统700示出具有三台计算机,但是可支持任意数量的计算机。系统700进一步包括网络720。网络720可以是本领域技术人员熟悉的任意类型的网络,其可利用多种商用协议中的任意协议来支持数据通信,包括但不限于TCP/IP、SNA、IPX、AppleTalk等等。仅仅为了示例,网络720可能是局域网(“LAN”),诸如以太网、令牌环网和/或类似网络;广域网;虚拟网,包括但不限于虚拟专用网(“VPN”);因特网;内部网;外部网;公用交换电话网(“PSTN,,);红外网;无线网(例如,在IEEE702.11协议组、现有技术中已知的蓝牙(Bluetooth)协议、和/或其它无线协议中任意协议下操作的网络);和/或这些网络和/或其它网络的任意组合。网络720可等同或类似于允许本文所描述的不同系统及组件之间通信的网络。系统700亦可包括一个或多个服务器计算机725和730。服务器计算机725和/或730可表示本文所描述的系统200、212、218、300或其它系统中的任意系统。一个服务器可以是web服务器725,其可用来处理来自用户计算机705、710和720的对网页或其它电子文档的请求。Web服务器可运行包括上面所讨论的那些中的任意操作系统,以及任意商用服务器操作系统。Web服务器725亦可运行多种服务器应用程序,包括HTTP服务器、FTP服务器、CGI服务器、数据库服务器、Java服务器等等。在一些实例中,web服务器725可公布操作可用操作作为一种或多种web服务。系统700亦可包括一个或多个文件和/或应用程序服务器730,除了操作系统之外,其还可包括一个或多个可由运行在一个或多个用户计算机705、710、715上的客户端访问的应用程序。服务器730可以是一个或多个通用计算机,能够响应用户计算机705、710和715运行程序或脚本。举个例子,服务器可运行一个或多个web应用程序。Web应用程序可实施为一个或多个脚本或程序,所述脚本或程序以诸如JavaTM、C,C#:或C++之类的任意编程语言,和/或诸如Perl、Python、或TCL之类的任意脚本语言,以及任意编程/脚本语言的组合来编写。应用程序服务器730亦可包括数据库服务器,包括但不限于那些商用OracleJicrosoft、Sybase、IBM等等,其可处理来自运行在用户计算机705上的数据库客户端的请求。由web应用程序服务器730创建的网页可经由web服务器725转发至用户计算机705。类似地,web服务器725可从用户计算机705接收网页请求、web服务调用、和/或输入数据,并且可转发网页请求和/或输入数据至web应用程序服务器730。在另外的实施方式中,服务器730可充当文件服务器。虽然为了易于描述,图7说明了单独的web服务器725和文件/应用程序服务器730,但是本领域技术人员将认识到关于服务器725、730描述的功能可由单一服务器和/或多个专用服务器来执行,这取决于实施专用需要和参数。系统700亦可包括数据库735,其可相同或类似于数据库206。数据库735可驻留在多个位置中。举例来说,数据库735可驻留在存储介质上,该存储介质位于一个或多个计算机705、710、715、725、730本地(和/或驻留在其内部)。替代地,它可远离计算机705、710、715、725、730中的任意或全部计算机,并与其中之一或多个通信(例如,经由网络720)。在具体实施方式组中,数据库735可驻留在本领域技术人员所熟悉的存储区域网络(“SAN”)中。类似地,任意用于执行计算机705、710、715、725、730专属的功能所必需的文件可适当地本地和/或远程存储在各个计算机上。在一组实施方式中,数据库735可以是关系数据库,例如Oracle10i,其适于响应SQL格式的命令来存储、更新和检索数据。数据库735可操作用来存储数据结构400和402。图8说明了一种计算机系统800的实施方式,其上可使用或运行本文描述的系统200、212、218、300,或者其它系统。示出了计算机系统800,包括可经由总线855电耦合的硬件元件。硬件元件可包括一个或多个中央处理单元(CPU)805;—个或多个输入设备810(例如,鼠标、键盘,等等);以及一个或多个输出设备815(例如,显示设备、打印机等)。计算机系统800亦可包括一个或多个存储设备820。举例来说,存储设备820可以是磁盘驱动器、光存储设备、固态存储设备,例如随机访问存储器(“RAM”)和/或只读存储器(“ROM”),其可以是可编程、可闪存更新,和/或类似设备。计算机系统800可另外包括计算机可读存储介质读取器825;通信系统830(例如,调制解调器、网卡(无线或有线)、红外通信设备等等);以及工作存储器840,其可包括上述RAM和ROM设备。在一些实施方式中,计算机系统800亦可包括处理加速单元835,其可包括DSP、专用处理器和/或类似单元。计算机可读存储介质读取器825可进一步连接至计算机可读存储介质,它们共同(以及,可选地,与一个或多个存储设备820组合起来)综合表示远程、本地、固定、和/或可拆除存储设备加存储介质,用来暂时和/或永久包含计算机可读信息。通信系统830可允许与网络820和/或以上关于系统800描述的任意其他计算机交换数据。此外,如本文所公开,术语“存储介质”可表示一个或多个用来存储数据的设备,包括只读存储器(ROM)、随机访问存储器(RAM)、磁性RAM、核心存储器、磁盘存储介质、光存储介质、闪存设备、和/或其它用来存储信息的机器可读介质。计算机系统800亦可包括软件元件,示为当前位于工作存储器840之内,包括操作系统845和/或其它代码850,例如实施上述组件和软件的程序代码。应认识,计算机系统800的替代实施方式可具有来自上述方式的多种变化。例如,亦可使用定制硬件,和/或具体元件可以硬件、软件(包括便携式软件,诸如小程序(applet))或者二者结合来实施。进一步地,可采用到其它计算设备例如网络输入/输出设备的连接。在前述描述中,出于说明的目的,方法按照具体顺序来描述。应认识,在替代实施方式中,方法可以不同于所描述的顺序来执行。亦应认识,上述方法可由硬件组件执行,或者可按照机器可执行指令序列来实施,其可用来使得诸如通用或专用处理器或用所述指令来编程的逻辑电路实现所述方法。这些机器可执行指令可存储在一个或多个机器可读介质上,诸如CD-ROM或其它类型光盘、软磁盘、R0M、RAM、EPR0M、EEPR0M、磁卡或光卡、闪存,或者其他类型的适用于存储电子指令的机器可读介质。替代地,该方法可由软硬件相结合来实现。在说明书中给出了专门的细节来全面理解实施方式。然而,本领域普通技术人员要理解,没有这些专门的细节也可以实施所述实施方式。例如,为了不让不必需的细节模糊所述实施方式,电路可以框图来示出。在其它实例中,为了避免模糊所述实施方式,示出的公知电路、过程、算法、结构和技术省略了不必要的细节。而且,注意,所述实施方式被描述为一过程,其描绘为流程图、流图、数据流图、结构图、或者框图。虽然流程图可描述所述操作为一顺序过程,但是许多操作可并行或并发执行。另外,可重新布置操作的顺序。当其操作完成时终止过程,但是该过程可拥有附图中不包括的额外步骤。过程可对应于一种方法、函数、进程、子程序、辅助程序等等。当过程对应于函数时,其终止对应于该函数对调用函数或者主函数的返回。此外,实施方式可由硬件、软件、固件、中间件、微代码、硬件描述语言、或其任意组合来实施。当以软件、固件、中间件或微代码来实施时,执行必需任务的程序代码或代码段可存储在诸如存储介质之类的机器可读介质。处理器可执行必需的任务。代码段可表示进程、函数、程序、例程、子程序、模块、软件包、类,或者指令、数据结构、或程序语句的任意组合。代码段可通过传递和/或接收信息、数据、自变量、参数、或者存储内容来耦合至另一代码段或硬件电路或与另一代码段或硬件电路通信。信息、自变量、参数、数据等等可经由任意适宜的手段来传递、转发或发送,其包括存储器共享、信息传递、令牌传递、网络发送等等。尽管已在本文详细描述本发明的说明性实施方式,但要理解,本发明的概念可另外不同地实施及使用,并且所附的权利要求要解释为包括除现有技术限定的之外的这些变体。权利要求1.一种用于确定群组在场的方法,该方法包括一处理器接收在场事件;响应于所述在场事件,所述处理器确定与所述在场事件相关联的层级,其中该层级与拥有两个或更多个节点的群组相关联;所述处理器遍历与所述群组相关联的层级至所述节点中的选定节点;所述处理器确定所述选定节点的在场;所述处理器确定对于所述群组,是否存在所述层级中的另一节点;如果对于所述群组存在另一节点,则确定该另一节点的在场;如果对于所述群组不存在所述层级中的另一节点,则根据所述层级中节点的在场来确定所述群组的在场;以及所述处理器公布群组在场。2.如权利要求1所限定的方法,其中节点与个人的在场相关联。3.如权利要求1所限定的方法,其中节点与子群组的在场相关联,其中所述子群组包括两个或更多个个人。4.如权利要求1所限定的方法,其中根据节点的成员和阈值来确定该节点的在场。5.如权利要求4所限定的方法,其中所述成员包括两个或更多个个人,以及其中由一规则来确定该阈值,所述规则定义该节点的成员何时在场。6.如权利要求4所限定的方法,其中该节点的成员是基于存储在企业目录中的个人的至少一种属性的。7.如权利要求1所限定的方法,其中所述在场事件是下列组中之一,该组包括个人在场状态的变化、定义群组规则的业务目标的变化、节点成员的变化、群组层级的变化、以及群组中节点的变化。8.一种系统,包括在场服务器,该在场服务器可操作来确定与群组相关联的两个或更多个个人的在场状态,以及可操作来提供所述在场状态作为个体在场信息;以及规则引擎,该规则引擎与所述在场服务器通信,该规则引擎可操作来接收所述两个或更多个个人中的每个人的个体在场信息,可操作来根据所述个体在场信息确定群组在场,以及可操作来公布所述群组在场,其中所述规则引擎根据从业务逻辑创建的规则来确定所述群组在场。9.如权利要求8所限定的系统,进一步包括规则数据库,该规则数据库与所述规则引擎通信,所述规则数据库可操作来存储规则;企业目录,该企业目录可操作来提供所述业务逻辑;群组定义组件,该群组定义组件与所述规则数据库通信,该群组定义组件可操作来根据所述业务逻辑定义群组;规则定义组件,该规则定义组件与所述规则数据库和所述群组定义组件通信,该规则定义组件可操作来根据所述群组和所述业务逻辑这两者中的至少一个定义规则。10.如权利要求9所限定的系统,其中所述群组定义组件创建群组定义数据结构,所述群组定义数据结构包括以下各项中的至少一个群组标识符;群组的层级定义,其中该层级包括两个或更多个节点;所述两个或更多个节点的两个或更多个标识符;群组的成员以及群组的阈值,其中该阈值定义该群组的成员何时在场。全文摘要本申请涉及用于在场的群组组成算法,所提出的系统和方法构建群组并确定群组的在场。群组可根据业务逻辑来构建。一组组件可按照业务逻辑来建模群组,可建立该群组的成员,可确定一个或多个管理成员的在场确定的规则,以及可提供群组模型、成员信息、以及所述一个或多个规则给规则引擎。规则引擎可根据成员和一个或多个规则在群组模型之内评估在场。群组在场可接着被提供给一个或多个向规则引擎订阅群组在场的实体、应用程序或工作流。文档编号G06Q10/00GK102034144SQ201010546398公开日2011年4月27日申请日期2010年9月25日优先权日2009年9月24日发明者安德鲁·则莫雷克申请人:阿瓦雅公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1