应用程序中的自动行为执行的制作方法

文档序号:6411090阅读:553来源:国知局
专利名称:应用程序中的自动行为执行的制作方法
技术领域
本发明涉及计算机系统,尤其涉及用于应用处理系统处理动作的自动适应和增强的信息工程技术。
背景技术
信息系统开发者正面临比以往任何时候都要困难得多的挑战。在过去的几年中,侧重点已经从数据处理转到信息系统管理,转到判定支持系统,继而又转变到战略信息(strategic information)系统。为了跟上业务的变化,信息开发者必须建立足够灵活的系统以适应业务功能变化而同时不会引起过度维护和相应的费用。
在过去的约二十年中,软件开发自动化已经沿三条不同的独立途径而进步。一条途径是通过自动化编程来提高编程的效率。结果是产生了非过程的解释语言,如第四代语言(4GL)的程序发生器。第二条途径是在分析和设计中引入结构和精确性来寻求实现设计效率。第二条途径导致了将程序流程化或者将程序划分成功能块的结构化方法的发展。近来,这种结构方法的自动化已经通过计算机辅助软件工程(CASE)图示工具而实现。第三条途径着眼于可重复使用性,即借助于将目标和数据抽象化的开发的数据库方法。这种方法一开始采用诸如数据字典的结构,存取数据和数据单元之间的关系的信息。近来,这样的系统已经包含面向目标系统,并且已经包括了用来存储和存取目标、程序和数据的所谓信息源字典。
因为上述每一种方法和途径都具有其优点,所以人们试图将三种不同途径的不同工具在信息工程中组合起来。例如,有一种用于存储技术的衍生ANSI标准(evolving ANSI standard),并且IBM已经推出了一种“AD/循环”,它定义了一种管理所有信息资源的方法,包括应用说明(application specification)、编程工具、软件程序、软件程序码和数据。
然而,这些方法并没有解决应用程序维护的问题。计算机软件应用的维护和其他的相关支持通常是费钱、费时并且是不可靠的。若要削除维护费用,本质上讲人们通常需要削掉应用程序本身。这附带的好处是削减了技术说明、设计、结构和执行的信息工程应用开发周期。但上述三种应用开发途径中的任何一种方法或综合方法都没有恰当地解决维护问题,或者没有指出如何解决这一问题。
现有技术的信息处理系统的另一个问题涉及到借助于应用处理系统来检测运行的应用程序引起的错误。现有技术侧重于进行数据处理运行的动作所引起的故障和排除故障或不管故障如何使系统运行继续进行的方法。然而,在许多的应用处理系统中,并不是应用程序一定会有应用程序故障的。执行这些动作的应用程序是经过很好测试和实现。问题在于应用程序是没有产生所期待的行为,这是因为假设要发生的动作没有发生,而假设不会发生的某些动作却发生了的缘故。
这些类型的问题通常保持未被检测的状态,直到应用程序崩溃或直到由于对动作进行了不必要的处理而暴露了较差的性能为止。在传统的系统中,用户必须跟踪处理流程并观察处理流程中的每一个动作,以分析系统的性能或识别错误。所以,具有一个与所期待的行为所一致或增强应用处理系统的每一个动作的特定行为并消除不正确或不必要的处理而使系统性能最佳的系统是有利且有用的。
发明概述本发明采用在应用处理系统中使所期待的行为自动一致和增强的方法和装置解决了上述问题和其他一些问题。一个期待行为控制系统(EBCS)与包括至少一个其中定义动作的应用程序的应用处理系统组合在一起。对于EBCS来说,除非特别指明,术语“动作”、“规则”、“表达式”和“功能”意义相同。EBCS包括检测一由控制程序执行的动作是否产生一预期行为的预期行为功能。另外,EBCS可以协调或增强所选择的行为,以修改应用处理系统方法的处理流程,而不修改应用程序。当所期待的行为完成时,应用处理系统执行应用程序所规定的下一个动作。如果检测到一个所不期待的行为,校正动作功能执行至少一个校正动作,以便协高或增强系统的行为,完成期待的行为。
下文中给出了本发明更贴切的方面。这些方面应当被看作是本发明某些更突出的特性和应用的描述。通过以不同的方式应用本发明或以将要描述的方法修改本发明可以得到许多其他的有益结果。因此,通过下文中对较佳实施例的详细描述可以更完整地理解本发明和其他方面。
附图简述为了更完整地理解本发明及其优点,下面结合附图详细描述本发明。其中,

图1是模型信息控制系统的方框图;图2是图1所示模型信息控制系统的控制系统机构的详细状态图;图3是描述包括所期待的行为控制系统的应用处理系统的图。
详细描述参照图1,该图示出的是本发明模型信息控制系统(MICS)10较佳实施例的方框图。MICS 10包括至少一个信息模型12,它是用文本编辑器和运行MICS的目标计算机系统定义的特定语义规则产生的。几个信息模型详述如下。目标计算机系统典型的是运行UNIX、DOS或OS/2等操作系统的486计算机,当然其他的目标系统也是有用的。MICS还包括控制系统机构(CSE)14,它最好是一种通过下文中将要详述的操作状态循环的有限状态控制动作机器。控制系统机构14执行几个动作。它从信息模型12中定义的一组目标中激活一个目标。控制系统机构14还从与该目标相关的一组动作16中的激活一个动作。这是用将在下文中描述的相关动作标志完成的。
控制系统机构14还根据目标属性的激活限制来激活目标的“瞬间(instants)”,并且CSE通过与动作相关的功能来处理每一瞬间。一个目标的“瞬间”指的是目标属性的值的一个给定条件或状态。如果目标的属性赋予的值或具有从数据库检索的值而预先赋给的值,那么就存在目标的“活动(active)”瞬间。一“空(empty)”瞬间是目标属性的值还必须赋给或说明的情况。控制系统机构所使用的数据存储在数据库(DB)20中,并且该机构通过数据库接口22与DB 20相互作用。MICS的用户24通过表述接口26与系统的其余部分连接。尽管图中未详细示出,但应当理解,一个或更多个功能和/或数据库可以在本地或远端访问。
信息模型由至少一个属性和至少一个控制标志或至少一个目标和属性字典组成。目标通常包括一组属性,这组属性构成字典中的属性“分组”、几个控制标志以及一个或多个规则或表达式。与表达式相关的控制标志方便了目标的CSE使用。控制标志最好分成四种不同的类型,即(1)属性类型标志,(2)控制目标瞬间的存储和检索的目标类型标志,(3)通过一个或更多个功能方便瞬间的激活和处理的动作类型标志,以及(4)与属性一起使用以提供对功能指定的属性控制的功能控制标志,例如可以被传送到用户接口功能的表述功能控制标志以控制表述以及用户接口功能和各种系统I/O装置(例如表示显示器和报告打印机)之间的相互作用。
属性类型控制标志规定如何控制属性的行为,如“存储”级别和“存在”级别。“存储”级别标志识别存储值,如“图象”、“视频”、“话音”、“实数”、“整数”、“科学”、“布尔”、“ASCII”、“数据”、“时间”等。例如,属性“PATIENT NAME(病人姓名)”具有两个属性控制标志“TYPE(类型)=C,LEN(长度)=30”。第一标志表示数据是ASCII字符格式的。LEN=30表示ASCII数据存储级别的长度。
标志的属性“存在”级别控制用于产生属性的规则。例如,ATYPE和“选择”属性限定表达式指明如何产生一个或多个属性的条件。例如,“预约日历信息模型(Appointment Calendar Information Model)”中的属性“0900 A.M.”具有控制标志“ATYPE=T”,它指明属性名称是时间类型的,而属性“选择”限制规定的是如何产生在后文中详述的另一个属性。
目标型控制标志包括“基元(primitive)”、“瞬间(transient)”、“原子的(atomic)”、“观察(view)”、“同义词(synonym)”、“联结(link)”、“表格”和“分组”。该列举是示例性的,其他的目标类型标志也可以定义和用来对目标分类,并使一个与一个或多个其他目标相关。基元目标类型标志表示目标瞬间(instants)保留在系统中的MICS内持续一定的时间。瞬间目标类型标志指的是目标瞬间仅在特定动作处理期间需要保留在系统中。原子目标类型标志指的是目标瞬间是通过从目标的某些其他(源)瞬间抽象得到的。由瞬态目标类型识别的瞬间也保留在系统中,一观察目标类型标志表示主目标是某些其他目标的观察。“同义词”目标类型标志跟随主目标的识别之后,并指示主目标的属性应当用“使用”标志中识别的目标的属性来替代。所以,如果目标A后面跟随的是标志“X的使用”,则目标X的属性由目标A使用。
“分组”目标类型控制标志表示一组瞬间必须在选择的动作组中处理。每一目标也可以具有一相关的联系目标。例如,如果目标A是基元目标B的原子观察,则目标B被说成是目标A的相关联系目标。或者,如果目标C的瞬间存在于并且仅存在于有另一个目标D的相应瞬间,则目标D被说成是目标C的相关联系目标。
如上所述,目标中的动作类型标志识别便于CSE进行的瞬间的激活和处理的动作。一动作由四种控制标志组成,即,“动作标识符(identifier)”、“瞬间类型”、“动作级别”、“瞬间传输类型”以及可有可无的一个或更多个“功能”。动作标识符标志是这样的标志,借此可知道特定动作在系统的外部。瞬间类型标志表示瞬间的类型(活动或空)。动作级别标志表示该特定动作属于哪一个级别的动作。瞬间传输类型标志表示对于该瞬间的基元目标或原子目标如何传输瞬间的变化。功能(如果定义的话)可以要求被执行以处理该瞬间。
用编译程序器和链结/编辑器或其他的传统装置将这些功能包括在MICS系统中。这些功能可以是“现有的”模块,或者根据需要实际写入到MICS内。然而,一旦定义了功能组,就不必要在任何传统的意义上保留功能设置编码。
如上所述,当目标是在信息模型中定义的时候,它通常将包括由外部接口控制目标属性表达式的表达式控制功能标志。特别是,其中的每一属性包括一个或多个表达式控制标志,该表达式控制标志可以被传送到用户接口功能,以控制表达式以及用户接口功能和系统的各种I/O装置(例如表达式显示和报告打印机)之间的互相作用。表达式控制标志的代表的实例是FPROT、MFILL、RJUST、FHIDE、DPROT、RSKIP、CENTER、GROUP、COMMON、UNIQUE、WSKIP和PHIDE。FPROT表达式控制标志提供字段保护动作,防止用户示例目标的特定属性。MFILL标志表示该属性是使用者必须示例的属性。RJUST、LJUST或CENTER标志通知表述接口右边对齐、左边对齐或将属性的中央值告诉表述显示器。FHIDE标志防止该值被显示出来。DPROT标志保护覆盖DPROT的属性值免被擦去。COMMON标志表示该属性由多个使用者共享,并且在任何传输表达式的执行之前可以需要活动瞬间的特定动作。UNIQUE标志表示目标的实例由该属性的值组织,并指示建立目标的索引属性。这在以后的“预约日历信息模型”例子中说明。当报告被打印出来时,RSKIP标志告诉表达式接口跳过该属性,而当在显示屏上产生一窗口时,WSKIP标志告诉该接口跳过该属性。PHIDE标志把属性的名称隐藏起来。GROUP标志表示该接口应当将用于显示的属性值组织起来,以便易于阅读。例如,一病人名单可以按城市、省份和邮政编码来编组,而财务报告可以按照天、星期和月来编组。目标可以包括用于类似控制目的的其他表达式控制标志。
按照本发明的属性,信息模型中的属性和目标使用一致的规则或“表达式”,它们与各种控制标志一起,便于应用处理流程执行信息模型。一目标属性含有(i)如何对这些属性赋值的信息,(ii)限制可以赋给这些属性的值的种类的值约束,(iii)表明对一个属性赋给特定值是任何影响另一属性的值的相关信息,以及(iv)选择产生具有特定限制的一个或多个属性的约束。更具体地说,在该属性级,这些规则包括(i)对这些属性进行赋值的“初始值”或“缺省值”表达式,(ii)限制可以赋给这些属性的值的种类的“值”、“条件”或“赋值”表达式,以及(iii)当激活这些瞬间时,表明如何改变这些属性值的“激活”表达式,(iv)表明对一个属性赋予特定值是如何影响另一属性值的“传输”表达式,(v)“选择”表达式,规定限制可以被激活的瞬间的种类的约束条件。类似的规则或表达式是在目标级别处应用。当用在目标中时,这些表达式修改了瞬间的行为,影响到信息的激活、示例和处理。例如,目标级别处的约束表达式规定了启动约束,限制可以激活的目标瞬间的种类。最后,该目标还包括索引属性,采用这些索引属性,可以用一个或多个目标属性的值通过数据库存储和检索一个目标的实例。
因此,按照本发明,一个目标通常包括便于CSE的目标使用的一个或多个控制标志、从属性字典中选出的属性子集、以及可以修改目标的瞬间的行为以影响信息的激活、示例和处理的一个或多个规则或表达式。目标属性还可以包括表达式,它们控制如何对这些属性进行赋值、限制可以赋给这些属性的值的种类、规定当激活这些实例时如何改变属性值、表明对一个属性赋予特定值是如何影响另一属性值以及规定限制可以激活的瞬间的种类的约束。
本发明的优点是采用模型中定义的控制标志,通过将一个或多个信息模型直接转换成一组独立的功能的激活、示例和处理,MICS模拟具有自发控制的应用处理,从而使应用程序的应用处理流程自动化。在现有技术中,至今仍然必须产生这种处理流程的详细设计(以及自动或手动地产生源码来实施该处理流程)。本发明从整体上避免了这种详细设计和码的产生。
按照本发明的较佳实施例,MICS包括一个或多个信息模型和控制系统机构(CSE)。控制系统机构直接读取信息模型,并对此作出响应,(i)激活信息模型中定义的目标组的目标,(ii)激活与一目标的动作控制标志相关的动作组得到的动作,(iii)激活一个目标的一个或多个“瞬间”,以及(iv)通过与目标和/或其属性相关的任何一个表达式一起的与动作相关的一个或多个接口或功能处理一个或多个目标瞬间。以这种方式,MICS激活和处理对信息模型的独立的激活、示例和服务动作组。
下面可以描述具有本发明的属性的MICS的特定实现。通过附加背景,定义一“动作”的概念是有益的,该概念指的是用一个或多个功能,用控制标志来控制信息的激活、示例和处理的功能的自动分类和相关。这避免了对每一应用专门产生处理流程指令。因此这些应用可以被说成是与处理流程指定的过程分开,因为信息模型只需指明一个动作,而无需指明该动作是如何实施的。一个“动作”最好由服务的级别或它所使用的功能的类型来分类。为了方便起见,动作级别按如下方式划分1)“分析”类型(通过分析信息的一个或多个功能处理一活动瞬间的动作);2)“数据库”类型(通过一个或多个访问和处理信息的功能处理一活动瞬间的动作);3)“报告”类型(通过一个或多个从信息中产生报告的功能处理活动瞬间的动作);4)“加”类型(通过一个或多个产生活动瞬间的功能处理一空瞬间的动作);5)“更新”类型(通过一个或多个访问、处理和和将一活动瞬间返回到数据库的功能处理一活动瞬间的动作);6)“删除”类型(通过一个或多个从数据库中去除一瞬间的痕迹的功能来处理一活动瞬间的动作);以及7)“建立”类型(通过一个或多个从基元信息中建立原子信息的功能来处理一活动瞬间的动作)。
上述动作类型表仅为举例,而MICS可以包括其他的动作类型或上述各种类型的变异。每一动作与先前讨论的动作控制标志组相关。应当注意,不同的动作控制标志组可以用来取代上述标志。
例如在本发明的典型实施例中,假设动作类型是“更新”。于是相关的动作控制标志是“UPDATE、ACTIVE INSTANT、DATABASE、UPDATEINSTANT、USR_INSTANTIATION”。第一个标志UPDATE是识别动作UPDATE的标识符标志。第二个标志ACTIVE INSTANT表示该动作需要一活动瞬间。第三个标志DATABASE表示UPDATE动作属于DATABASE动作级别类型。第四个标志是引起CSE用数据库接口来更新活动瞬间的最终状态的瞬间传输类型。最后,功能USR_INSTANTIATION表示CSE将要求用户示例功能的执行。用户示例功能通过用户接口示例一瞬间。
在另一例中,假设动作是ADD。该ADD动作具有动作控制标志“ADD、EMPTY INSTANT、DATABASE、UPDATE INSTANT、USR_INSTANTIATION”。第一个标志识别动作ADD。第二个标志表示对一空瞬间进行操作的动作。第三个标志识别该ADD动作属于DATABASE动作级别类型。第四个标志UPDATE INSTANT是瞬间传输类型的,并引起CSE用该数据库接口将新产生的瞬间加到该数据库。最后,功能USR_INSTANTIATION表示CSE将需要用户示例功能的执行。
根据上述背景,下面是从用于医学记帐、计费和病人管理系统的信息模型(如下所示)得到的代表的目标的一部分模型医学#OBJECT PATIENT CHART,PRIMITIVE,DATABASEACNT NO,TYPE=1,LEN=8,GROUP=100,FPROTDEFAULT VALUE[ACNT NO]=SEQNUMBER.
VISIT FIRST,TYPE=d,GBOUP=100,FPROT,SETDATELAST,TYPE=D,GROUP=100,FPROT,SETDATEPATIENT NAME,TYPE=A,LEN=30,GROUP=102,MFILLADDRESS,TYPE=A,LEN=30,GROUP=103,MFILLCITY,TYPE=A,LEN=15,GROUP=104,MFILLSTATE,TYPE=A,LEN=2,GROUP=104,MFILLZIP CODE,TYPE=L,PTYPE=Z,LEN=5,GROUP=104,MFILL
BIRTHDATE,TYPE=D,GROUP=105,MFILLSEX,TYPE=A,LEN=1,GROUP=105,MFILL限制,值M-MALE,F-FEMALE.
MARITAL STATUS,TYPE=A,LEN=1,GROUP=105,MFILL限制,值S-SINGLE,M-MARRIED,W-WIDOWED,D-DIVORCEDPHONENO(HOME),TYPE=S,PTYPE=P,LEN=10,GROUP=106,RJUST(OFFICE),TYPE=S,PTYPE=P,LEN=10,GROUP=106,RJUSTSOCIAL SEC.#,TYPE=L,PTYPE=S,LEN=9,GROUP=107DRIVER LIC.#,TYPE=C,LEN=15,GROUP=107…第一行中的第一字段包括目标的名称(本例中PATIENT CHART)。该行中的第二个字段包括识别目标的类型的目标类型标志(本例中PRIMITIVE)。目标类型标志后面的下一个字段识别动作类型标志,这些标志识别CSE可以为瞬间的激活、示例和处理选择一个目标的一个或多个动作。本例中,具有DATABASE动作级别标志的目标只向CSE表示替换与DATABASE动作相关的所有动作成为可用的动作(因此使得不必一个个列举组中的每一个动作)。
目标第一行上目标类型和动作类型控制类型的后面,目标包括一组属性。正如可以看到的那样,病人图目标用作记帐和信息的目的,因此包括如姓名、地址、最近一次看病的日期和帐号及其他。目标还包括与特定的属性相关的几个表达式控制标志。如上所述,属性中的GROUP标志用来将接口显示的相同行上的目标的不同属性进行编组。所以,ACNT NO、VISIT FIRST和LAST属性将出现在在同一行上。如果相同的属性在目标中使用了一次以上,则该属性还包括一DATA语句。
参照图2,图中示出了MICS的控制系统机构(CSE)的较佳操作的详细状态图。CSE的各种状态和相关的控制动作分别如下(1)使MICS初始化
(2)选择模型(3)选择目标(4)选择动作(5)激活瞬间(6)处理瞬间(7)终止模型(8)终止CSE在CSE执行之前,利用针对目标系统的语义规则由开发者建立一个或多个信息模型。每一信息模型具有三个状态中的一个状态空闲、活动和挂起。当一信息模型处于其空闲状态时,其“下一个状态”是活动。活动状态中的信息模型可以在信息模型的处理期间的任何时刻挂起。一旦挂起,信息模型可以回到其活动状态(与在挂起同一点上),或者挂起的信息模型可以回到其空闲状态。每一信息模型与识别其状态和其下一个状态的属性相关。控制系统机构的执行从状态1开始。在状态1,CSE被初始化。这一步骤从操作系统获得了必要的资源(例如,存储区、缓冲区、进程间通信环境、I/O接口环境),并接着读取动作表定义和功能表定义,并将它们装入存储器。CSE还在存储器中建立结构,以保存信息模型,并将信息模型存入存储器。状态1还建立激活户环境的表达式接口26。
在状态1,所有信息模型被设置成空闲,而信息模型属性被设置成“3”(这是空闲模型的选择以后的下一个状态)。CSE接着移动到状态2。如果在状态1期间存在故障,则CSE进入状态8并且终止,提供一错误消息或类似的消息。
在状态2,提示用户进行信息模型的选择。尽管表述接口并不意味选择有限制,但表达式接口最好是基于窗口的图形用户接口(GUI)并采用传统的指向击键装置(如鼠标)来进行恰当的选择。如果用户选择一模型,则CSE激活选择的模型,并将选择的模型设置成“活动模型”。模型的激活意味着分配必要的存储区、使数据库初始化、从所有的目标根据属性组建立一字典,并建立与属性限制表达式相关的属性组或仅建立具有相关属性约束表达式的属性组。这将在关于日历例子的描述中作更全面的描述。如果用户决定取消这一部分,则CSE激活最近挂起的模型成“活动模型”。CSE接着进入活动模型的下一个状态。如果用户决定退出,则CSE进入状态8,并且CSE终止。
在状态3,CSE首先确定是否存在为活动模型而定义的一个或多个目标。如果不存在目标,则将目标设置成模型名称,并将所有在模型处定义的控制标志和控制表达式复制成目标的。并将所有模型的属性设置成目标的属性。如果为活动模型定义的只有一个目标,则CSE将“活动目标”的属性设置成该目标的并进入状态4。根据该活动模型,CSE控制表达式接口,以显示现有目标表(这是在信息模型中定义的),并指示用户选择一个。如果用户选择一个目标,则CSE将“活动目标”属性设置给所选择的目标,并进入状态4。如果用户决定取消,则CSE回到状态2,于是,CSE从该状态进入状态7,在该状态7,活动模型终止。
在状态4,CSE首先确定是否存在与活动目标相关的动作级别标志。如果有一个,则CSE替换与该动作的级别相关的所有动作标志,作为有效动作标志。如果只有一个动作标志,则CSE将与该动作标志相关的的动作设置成“活动动作”并进入状态5。另一方面,如果有一个以上的动作标志,则CSE控制表达式接口,以显示与活动目标的动作标志相关的动作名称表,并提示用户选择一个。如果用户选择一个动作,则CSE将“活动动作”属性设置成与活动目标的选择动作的动作名称相关的动作,并进入状态5。如果用户决定取消,则CSE返回到状态3。如果用户决定退出,CSE进入状态7。然而如果用户在状态4期间决定访问另一个信息模型,那么CSE就将活动模型的下一个状态设置成等于4,挂起活动模型并返回状态2。
在状态5,除了具有DPROT标志的那些属性以外,通过首先将活动目标的属性的所有值设置为零开始处理过程。接着完成一测试,以确定该活动目标是否具有相关的链接(link)目标。如果激活链接目标失败,则CSE回到状态4。如果链接目标激活成功,或者该活动目标不具有相关的链接目标,则程序继续进行确定活动目标是否需要一活动瞬间。如果这样,则CSE在活动目标中存在选择条件的情况下用该选择条件激活该瞬间。(选择目标的激活约束直接映射到与数据库20相关的选择调用)。如果激活失败,并且没有学习标志(learn flag),则CSE进入状态4。如果激活成功或者不需要激活,则CSE进入状态6。如果激活失败,并且存在一学习标志,则CSE也进入状态6,这是因为学习标志指示CSE接受一空瞬间,既使也需要一活动瞬间也是如此。例如,在预约日历信息模型中,数据库将不必包含与所有的日历日期对应的实例。当使用者请求观看日历特定页上的数据而数据库中没有该页的数据时,学习标志允许CSE接受空页作为没有数据的活动页,从而当使用者输入该页上的数据时,它将进入该数据库。同时,如果对于该活动瞬间存在一个激活表达式,则CSE执行该激活表达式。然而,如果使用者决定在状态5期间访问另一个信息模型,则CSE将活动模型的下一状态设置为等于5、挂起活动模型并返回状态2。对于上述每一个动作,如瞬间的激活、值的赋给和表达式的执行,由“期待行为控制系统(EBCS,Expected BehaviorControl System)”执行一检查,以确定由该动作发出的处理动作是否提供了期待的行为。对于动作与特定行为的一致性,检查仅在动作执行以后执行。为了加强特定的处理流行为,由EBCS进行的检查可以在动作的处理之前或之后进行。EBCS将在以后作更全面的讨论。
在状态6,程序首先确定是否存在与活动动作相关的任何功能标志。如果存在一个或一个以上的功能标志,那么对于每一功能标志,CSE执行相关的功能和在满足目标中激活约束的所有瞬间上与活动目标相关的处理传输表达式。功能可以是一个示例功能,例如与使用表达式接口和表达式控制标志的用户交互作用的用户示例功能。CSE还将通过将属性标志映射成恰当的功能来处理属性标志。例如,表述标志用来建立窗口并控制窗口中与数据的交互作用。只有满足属性约束条件的数据被接受,并且一经接受,CSE还执行与任意属性相关的传输表达式。然而如果用户者决定在状态6期间访问另一个信息模型,则CSE将活动模型的下一个状态设置为等于6、终止活动模型并返回到状态2。
如果不存在与活动动作相关的功能,或者如果已经成功执行了与活动动作相关的功能,则CSE执行与目标相关的任何传输表达式,并且通过确定任一目标类型标志是基元还是原子的使程序继续进行。如果不是,则CSE进入状态4以选择下一个动作。如果是,则CSE确定当前动作是否具有一更新瞬间或删除瞬间(瞬间传输类型动作控制)标志。如果更新瞬间标志存在,则活动瞬间被更新,或者将一空瞬间加到该数据库。如果一删除瞬间标志存在,则CSE删除一活动瞬间,并忽略空瞬间。如果一目标具有链接目标,则其相关链接传输表达式被执行,并且其瞬间被更新。如果使用者选择NEXT或PREVIOUS事件,则CSE获取NEXT或PREVIOUS瞬间。如果使用者选择PROCESS事件,则CSE回到状态4。如果在这些活动中的任一活动期间出现一错误,则CSE带着表示一故障的事件标志回到状态4。与在状态5中一样,对于每一动作,对EBCS执行一测试,以检查期待的行为,从而协调或增强处理动作,以提供一期待的行为。
在状态7,活动模型终止,CSE激活最新挂起的一个模型,并进入被激活模型的下一个状态;否则,CSE返回到状态2。
在状态8,CSE终止。一旦CSE初始化,它通过各种状态执行直至达到状态8。CSE执行时,信息模型中定义的功能性是以与现有技术源码相同的执行方式实施的。
下面描述用在MICS中的不使用EBCS的几个信息模型的典型结构。本例中,MICS包括三个信息模型预约日历(MODEL APPOINTMENTCALENDAR)、笔记本(MODEL NOTEPAD)和复杂的医学系统(MODELMEDICAL)。“预约日历”模型包括一个属性(如日期、星期几、时间和日记时间增量)和控制表达式的短表。初始值表达式将日期、星期几和时间初始设置成当前系统日期、星期几和时间,缺省值表达式将星期几属性设置成日期属性的相应值,而约束指定表达式分别根据EVENT前一个或下一个将日期设置成前一天(日期-1)或后一天(日期+1)。与此类似,笔记本模型包括一短属性表。医学系统包括众多目标的表。由动作和功能控制标志组成的系统控制表也被提供用以理解这些例子。
SYSTEM CONTROL TABLES#ACTIONADD,EMPTY INSTANT,DATABASE,UPDATE INSTANT,USRINSTANTIATIONUPDATE,ACTIVE INSTANT,DATABASE,UPDATEINSTANT,USR_INSTANTIATIONDELETE,ACTIVE INSTANT,DATABASE,DELETE INSTANT,USRINSTANTIATIONREPORT,ACTIVE INSTANT,REPORT,O,O,CREATE_REPORTCREATE ATOMIC DATA,ACTIVE INSTANT,ANALYSIS,UPDATEINSTANT,CREATE_ATOMIC_DATAGRAPH,ACTIVE INSTANT,ANALYSIS,O,O,GRAPHLEARN ASSOCIATION,ACTIVE INSTANT,ANALYSIS,O,O,LEARNATOMIC_DATAUSE ASSOCIATION,ACTIVE INSTANT,ANALYSIS,O,O,USE_ATOMICDATA#MODEL APPOINTMENT CALENDAR,PRIMITIVE,UPDATE,LEARNDescriptionYou can use Calendar program to keep track of yourappointmentsSELECT,INSTANT(NEXT INSTANT)[DATE]+=1;(PREV INSTANT)[DATE]-=1.DATE,TYPE=D,UNIQUEDATE,TYPE=D,PTYPE=D,TEMP0900 A.M.,TYPE=C,LEN=66,ATYPE=tDescriptionType any information you want to include for this timeslot.
SELECT,ATTRIBUTE(ATTRIBUTE<5.30) ATTRIBUTE+=60.NOTE,TYPE=C,LEN=132DescriptionType up to two lines of text as notes.TODO,TYPE=C,LEN=132DescriptionType up to two lines of text for things to do.#ENDMOIDEL NOTEPAD.PRIMITIVE_UPDIATE,LEARNDATE,TYPE=D,GROUP=100,SETDATE,FPROT,UNIQUETIME,TYPE=T,GROUP=100,SETTIME,FPROTREFERENCE,TYPE=A,LEN=20,GROUP=100TEXT,TYPE=C,LEN=512,GROUP=101,PHIDE#ENDMODEL MEDICAL#OBJECT PATIENT CHART,PRIMITIVE,DATABASEACNT NO,TYPE=I,LEN=8,GROUP=100,FPROTDEFAULT VALUE[ACNT NO]=SEQNUMBER.VISIT FIRST,TYPE=d,GROUP=100,FPROT,SETDATELAST,TYPE=D,GROUP=100,FPROT,SETDATEPATIENT NAME,TYPE=A,LEN=30,GROUP=102,MFILLADDRESS,TYPE=A,LEN=30,GROUP=103,MFILLCITY,TYPE=A,LEN=15,GROUP=104,MFILLSTATE,TYPE=A,LEN=2,GROUP=104,MFILLZIP CODE,TYPE=L,PTYPE=Z,LEN=5,GROUP=104,MFILLBIRTHDATE,TYPE=D,GROUP=105,MFILLSEX,TYPE=A,LEN=1,GROUP=105,MFILL限制,值M-MALE,F-FEMALE.MARITAL STATUS,TYPE=A,LEN=1,GROUP=105,MFILL限制,值S-SINGLE,M-MARRIED,W-WIDOWED,D-DIVORCED.PHONE NO(HOME),TYPE=S,PTYPE=P,LEN=10,GROUP=106,RJUST(OFFICE),TYPE=S,PTYPE=P,LEN=10,GROUP=106,RJUSTSOCIAL SEC.#,TYPE=L,PTYPE=S,LEN=9,GROUP=107DRIVER LIC.#,TYPE=C,LEN=15,GROUP=107CREDIT CARD#,TYPE=C,PTYPE=N,LEN=16,GROUP=108TYPE,TYPE=A,LEN=10,GROUP=108EMPLOYMENT STATUS,TYPE=A,LEN=1,GROUP=108限制,值E-Emploved,F-Full time student,P-Part time student.OCCUPATION,TYPE=A,LEN=20,GROUP=109EMPLOYER′S NAME,TYPE=A,LEN=30,GROUP=109SPOUSE/GUARDIAN NAME,TYPE=A,LEN=30,GROUP=111RELATIONSHIP,TYPE=A,LEN=1,GROUP=112限制,值S-自己,s-配偶,c-小孩,o-其他PHONE NO(HOME),GROUP=112,DATA=1,RJUST(OFFICE),GROUP=112,DATA=1,RJUSTOCCUPATION,GROUP=113,DATA=1EMPLOYER′S NAME,GROUP=113,DATA=1RESP.PARTY′S NAME,TYPE=A,LEN=30,GROUP=115RELATIONSHIP,GROUP=115,DATA=1BIRTHDATE,GROUP=116,DATA=1SEX,GROUP=116,DATA=1SOCIAL SEC.#,GROUP=116,DATA=1DRIVER LIC.#,GROUP=117,DATA=1CREDIT CARD#,GROUP=117,DATA=1TYPE,GROUP=117,DATA=1PHONE NO(HOME),GROUP=118,DATA=2,RJUST(OFFICE),GROUP=118,DATA=2,RJUSTADDRESS,GROUP=119,DATA=1CITY,GROUP=120,DATA=1STATE,GROUP=120,DATA=1ZIP CODE,GROUP=120,DATA=1OCCUPATION,GROUP=121,DATA=2EMPLOYER′S NAME,GROUP=121,DATA=2INSURED?,TYPE=A,LEN=1,GROUP=122限制,值Y-YES,N-NO.CARRIER CODE,GROUP=122PLAN NAME,TYPE=A,LEN=20,GROUP=123INS ID,TYPE=C,LEN=12,GROUP=123GROUP ID,TYPE=C,LEN=12,GROUP=123OTHER INSURANCE?,TYPE=A,LEN=1,GROUP=125限制,值Y-YES,N-NO.CARRIER CODE,DATA=1,GROUP=125PLAN NAME,GROUP=126,DATA=1INS ID,GROUP=126,DATA=1GROUP ID,GROUP=126,DATA=1INSURED′S NAME,TYPE=A,LEN=30,GROUP=127RELATIONSHIP,TYPE=A,LEN=1,GROUP=127,DATA=2BIRTHDATE,TYPE=D,GROUP=128,DATA=2SEX,GROUP=128,DATA=2EMPLOYER′S NAME,GROUP=128,DATA=3ACTIVE STMNT,TYPE=I,LEN=2,GROUP=130缺省值[ACTIVE STMNT]=1.BALANCE,TYPE=R,LEN=10,DEC=2,GROUP=130,FPROTOB DUE,TYPE=D,GROUP=130RECALL,TYPE=D,GROUP=130CHARGES,TYPE=R,LEN=10,DEC=2,TEMP,FHIDEPOST AMOUNTS,TYPE=R,LEN=10,DEC=2,TEMP,FHIDECREDITS,TYPE=R,LEN=10,DEC=2,TEMP,FHIDEPATIENT PORTION,TYPE=R,LEN=10,DEC=2,GROUP=131INSURANCE COVERAGE(%),TYPE=R,LEN=10,DEC=2,GROUP=131传输[PATIENT PORTION]=(100-[INSURANCE COVERAGE(%)])*.01*([BALANCE]-[DEDUCTIBLE]);[PATIENT PORTION]=[PATIENT PORTION]+[DEDUCTIBLE].DEDUCTIBLE,TYPE=R,LEN=10,DEC=2,GROUP=131BILLING DATE,TYPE=D,GROUP=132INS BILLING DATE,TYPE=D,GROUP=132PATIENT PAYMENTS,TYPE=R,LEN=10,DEC=2,GROUP=133INSURANCE PAYMENTS,TYPE=R,LEN=10,DEC=2,GROUP=133INSURANCE TYPE,TYPE=A,LEN=1,GROUP=134限制,值E-MEDICARE,D-MEDICAID,G-GROUP HEALTH PLAN.AUTHORIZATION NO,TYPE=C,LEN=12,GROUP=134MEDICAID RESUB CODE,TYPE=C,LEN=12,FHIDEORIGINAL REF NO,TYPE=C,LEN=16,FHIDEDATE OF SYMPTOM(CURRENT),TYPE=D,FHIDE(PRIOR),TYPE=D,FHIDEREFERRING PHYSICIAN,TYPE=A,LEN=20,FHIDEPHYSICIAN ID,TYPE=C,LEN=10,FHIDEFACILITY,TYPE=A,LEN=20,FHIDEHOSPITAL DATE(FROM),TYPE=D,FHIDE(TO),TYPE=D,FHIDEUNBL TO WORK(FROM),TYPE=D,GROUP=140,FHIDE(TO),DATA=1,FHIDEOUTSIDE LAB?,TYPE=A,LEN=1,FHIDE
限制,值Y-YES,NO.
LAB AMNT,TYPE=R,LEN=8,DEC=2,FHIDENICOE NAME,TYPE=A,LEN=25,GROUP=137DESCRIPTIONENTER THE NAME OF PERSON TO BE NOTIFIED IN CASE OFEMERGENCY.
NICOE PHONE NO,GROUP=137CONDITION RELATED TO JOB?,TYPE=A,LEN=Q,FHIDE限制,值Y-YES,N-NOAUTO ACCIDENT?,TYPE=A,LEN=1,FHIDE限制,值Y-YES,N-NOOTHER ACCIDENT?,TYPE=A,LEN=1,FHID限制,值Y-YES,N-NO#OBJECT BILLING DATA,PRIMITIVE,JOURNAL_RCD,HIDEACNT NO,DPROTSTMNT,DPROTTRANS DATE,TYPE=D限制,条件([TRANS DATE]LE DATE)说明当开始该过程的服务时输入日期输入,条件([TO DATE]LE DATE);([TO DATE]GE[TRANS DATE)]说明在与至/自这些日期的外科或怀孕是不同的情况下,当对该处理的服务结束时,输入日期。PS,TYPE=A,LEN=1限制,值IH-在医院,OH-外科,3-咨询,4-sray,5-实验室,8-助理外科,9-其它医疗服务,CODE,TYPE=A,LEN=4,UNIQUE说明输入四位别名码或付款/调整码付款-pac(现金),pck(支票),pin(保险),pcl(收款)付款差错调整,-cpe(同方粘贴错)或dpe(借方)付款-dop(归还),drc(返还支票),drc(返还支票费)dif(法律/法院),dfc(货方)或dda(借方)orccd(折扣)。传输[AMOUNT]=[AMNT];(IUNIT]EQUAL TO 0)[UNIT]=1.DIAG,TYPE=A,LEN=6说明输入来自icd 9码书的有效诊断码UNIT,TYPE=1,LEN=2AMOUNT,TYPE=R,LEN=8,DEC=2DESCRIPTION,TEMPAMOUNTS,FHIDE,TEMPOLD AMOUNT,TYPE=R,LEN=8,DEC=2,FHIDE,TEMPPOST AMNT,TYPE=R,LEN=8,DEC=2,FHIDE,TEMP#OBJECT BILLING DATABASE,VIEW of BIL LING DATA,DATABASE初始值SETVALUE([STMNT],[ACTIVE STMNT]).
激活传输[OLD AMOUNT]=[AMOUNT]*[UNIT]*[CDFLG],传输[POST AMNT]=[AMOUNT]*[UNIT]*[CDFLG]-[OLDAMOUNT];[POST AMOUNTS]=[POST AMOUNTS]+[POST AMNT];((ICTYPE]EQUAL TO 9)AND([POST AMNT]>0))[PATIENT PAYMENTS]=[PATIENT PAYMENTS]+[POSTAMNT];(([CTYPE]EQUAL TO 8)AND([POST AMNT]>0))[INSURANCE PAYMENTS]=[INSURANCEPAYMENTS]+[POST AMNT];[LAST]=DATE;([STMNT]>[ACTIVE STMNT])[ACTIVE STMNT]=[STMNT].
链接传输([POST AMOUNTS]!=0)[BALANCE]=[BALANCE]+[POSTAMOUNTS].DOCNAME,FHIDE,HEADER,DPROTLINE1,FHIDE,HEADER,DPROTLINE2,FHIDE,HEADER,DPROTLINE3,FHIDE,HEADER,DPROTLINE4,FHIDE,HEADER,DPROTACNT STRING,PHIDE,COL=50,GROUP=98,FPROT,DPROTPATIENT NAME,GROUP=100,FPROT,PHIDE,COL=5,DPROTACNT NO,GROUP=100,FPROT,COL=55,DPROTADDRESS,GROUP=101,FPROT,PHIDE,COL=5,DPROTSTMNT,GROUP=101,FPROT,COL=57,DPROTCITY,GROUP=102,FPROT,PHIDE,COL=5,DPROTSTATE,GROUP=102,FPROT,PHIDE,FCAT,DPROTZIP CODE,GROUP=102,FPROT,PHIDE,FCAT,DPROTBALANCE,GROUP=102,COL=55,DPROTSTMNT,GROUP=105,ENTRY=10,RSKIPTRANS DATE,GROUP=105,ENTRY=10TO DATE,GROUP=105,ENTRY=10,RSKIPCODE,GROUP=105,ENTRY=10,RSKIPAMOUNT,GROUP=105,ENTRY=10,RSKIPUNIT,GROUP=105,ENTRY=10,RSKIPPS,GROUP=105,ENTRY=10,RSKIPTS,GROUP=105,ENTRY=10,RSKIPDIAG,GROUP=105,ENTRY=10,RSKIPDESCRIPTION,GROUP=105,ENTRY=10,FPROTAMOUNTS,GROUP=105,ENTRY=10,WSKIP,RJUSTCHARGES,GROUP=106,WSKIPCREDITS,GROUP=106,WSKIPBALANCE,GROUP=106,WSKIP,DPROTTOTAL OF AMOUNT,RSKIP,TEMP限制,值[TOTAL OF AMOUNT]=COLSUM([AMOUNT]).POST AMOUNTS,FHIDEOLD AMOUNT,FHIDECDFLG,FHIDE,TEMP限制,值1-debit,-1-credit.#OBJECT REMOVE VISIT CHARGE,SYNONYM OF BILLINGDATABASE,UPDATE激活,传输=BILLING DATABASE.#OBJECT PRINT INSURANCE FORM,VIEW ofBILLING DATA,NOLINE,REPORT,GROUP=6初始值[STMNT NUMBER]=[ACTIVE STMNT];GETVALUE([STMNT NUMBER]).
激活传输[AMOUNTS]=[AMOUNT]*[UNIT];([CDFLG]EQUAL T0 1)[CHARGES]=[CHARGES]+[AMOUNTS];([CDFLG] EQUAL T0 -1)[CREDITS]=[CREDITS]+[AMOUNTS].
限制,条件(([CDFLG]EQUAL TO 1)AND([AMOUNT]>0)AND([STMNT]EQUAL TO[STMNT NUMBER])).
粘贴传输[POST AMOUNTS]=0;[CREDITS]=0;[CHARGES]=0.CARRIER NAME,PHIDE,ROW=1,COL=43(ADDRESS),PHIDE,ROW=2,COL=43(CITY),PHIDE,ROW=3,COL=43(STATE),PHIDE,ROW=3,FCAT(ZIP CODE),PHIDE,ROW=3,FCATINSURANCE TYPE,PHIDE,ROW=7,COL=2INS ID,PHIDE,ROW=7,COL=50PATIENT NAME,PHIDE,ROW=9,COL=1BIRTHDATE,PHIDE,ROW=9,COL=30SEX,PHIDE,ROW=9,COL=41,BOX=5RESP.PARTY′S NAME,PHIDE,ROW=9,COL=50ADDRESS,PHIDE,ROW=11,COL=1RELATIONSHIP,DATA=1,PHIDE,ROW=11,COL=32,BOX=5ADDRESS,DATA=1,PHIDE,ROW=11,COL=50CITY,PHIDE,ROW=13,COL=1STATE,PHIDE,ROW=13,COL=26MARITAL STATUS,PHIDE,ROW=13,COL=34,BOX=5CITY,DATA=1,PHIDE,ROW=13,COL=50STATE,DATA=1,PHIDE,ROW=13,COL=74ZIP CODE,PHIDE,ROW=15,COL=1PHONE NO(HOME),PHIDE,RJUST,COL=13EMPLOYMENT STATUS,PHIDE,COL=34,ROW=15ZIP CODE,DATA=1,PHIDE,ROW=15,COL=50PHONE NO(HOME),PHIDE,RJUST,ROW=15,COL=63INSURED′S NAME,DATA=1 ,PHIDE,ROW=17,COL=1GROUP ID,PHIDE,ROW=17,COL=50GROUP ID,DATA=1 ,PHIDE,ROW=19,COL=1CONDITION RELATED TO JOB?,PHIDE,BOX=6,ROW=19,COL=34BIRTHDATE,DATA=1,PHIDE,ROW=19,COL=53SEX,DATA=1,PHIDE,ROW=19,COL=69,BOX=5BIRTHDATE,DATA=2,PHIDE,ROW=21,COL=1SEX,DATA=2,PHIDE,ROW=21,COL=17,BOX=6AUTO ACCIDENT?,PHIDE,ROW=21,COL=34,BOX=6EMPLOYER′S NAME,DATA=2,PHIDE,ROW=21,COL=50EMPLOYER′S NAME,DATA=3,PHIDE,ROW=23,COL=1OTHER ACCIDENT?,PHIDE,ROW=23,COL=34,BOX=6PLAN NAME,PHIDE,ROW=23,COL=50PLAN NAME,DATA=1,PHIDE,ROW=25,COL=1OTHER INSURANCE?,PHIDE,ROW=25,COL=51,BOX=5DATE OF SYMPTOM(CURRENT),PHIDE,ROW=31,COL=2(PRIOR),PHIDE,ROW=31,COL=38UNBL TO WORK(FROM),PHIDE,ROW=31,COL=54(TO),DATA=1,PHIDE,ROW=31,COL=68REFERRING PHYSICIAN,PHIDE,ROW=33,COL=1PHYSICIAN ID,PHIDE,ROW=33,COL=29HOSPITAL DATE (FROM),PHIDE,ROW=33,COL=54(TO),PHIDE,ROW=33,COL=68OUTSIDE LAB?,PHIDE,ROW=35,COL=52LAB AMNT,PHIDE,ROW=35,COL=62MEDICAID RESUB CODE,PHIDE,ROW=37,COL=50ORIGINAL REF NO,PHIDE,ROW=37,00L=62AUTHORIZATION NO,PHIDE,ROW=39,COL=51,LINE=1TRANS DATE,PHIDE,ENTRY=6,ROW=45,COL=1,LINE=1TO DATE,PHIDE,ENTRY=6,ROW=43,COL=10PS,PHIDE,ENTRY=6,ROW=43,COL=19TS,PHIDE,ENTRY=6,ROW=43,COL=22CPT4 CODE,PHIDE,ENTRY=6,ROW=43,COL=25DIAG,PHIDE,ENTRY=6,ROW=43,COL=42AMOUNT,PHIDE,ENTRY=6,ROW=43,COL=48,RJUSTUNIT,PHIDE,ENTRY=6,ROW=43,COL=58FEDTAXID,PHIDE,DPROT,ROW=55,COL=2IDTYPE,PHIDE,DPROT,ROW=55,COL=16,BOX=3限制,值S-SSN,E-EINACNT NO,PHIDE,DPROT,ROW=55,COL=23ASSIGNMENT,PHIDE,DPROT,ROW=55,COL=37CHARGES,PHIDE,ROW=55,COL=50,RJUSTPATIENT PAYMENTS,PHIDE,FHIDECHARGES,PHIDE,ROW=55,COL=69,RJUSTDOCNAME,PHIDE,DPROT,ROW=57,COL=51LINE1,PHIDE,DPROT,FHIDELINE2,PHIDE,DPROT,ROW=58,COL=51UNE3,PHIDE,DPROT,ROW=59,COL=51PIN,PHIDE,DPROT,ROW=60,COL=51#OBJECT DAILY JRNL,JOURNAL OF BILUNGDATA,BROWSE,CREATE链接初始值GETVALUE([FROM DATEI,[TO DATE]).
链接限制,条件(([TRANS DATE] GE[FROM_DATE])AND([TRANS DATE]LE[TO DATE])).
链接激活传输[F]=1;[JRNL DATE]=[TRANS DATE];[PTYPE ]=[ITYPE];[POST AMNT]=[AMOUNT]*[UNIT]*[CDFLG].
链接传输[F]=1;(ACTIVE INSTANT)[F]=2;[JRNL DATE]=DATE;[PTYPE]=[ITYPE].JRNL DATE,TYPE=DACNT NOPATIENT NAMETRANS DATESTMNTCODECDFLGCTYPETYPE=N,LEN=1限制,值1-OBSTETRICS,2-SONOGRAM,3-LASER,4-MEDICAL5-GYNECOLOGY/SURGERY,6-OFFICE,7-OTHER SERVICE,8-INSURANCE PAYMENT,9-OTHER PAYMENT,10-REFUND,11-CHARGE/CREDIT ADJST,12-CHARGE/DEBIT ADJST,13-PMNT/CREDIT ADJST,14-PMNT/DEBIT ADJST.PTYPEF,TYPE=N,LEN=1POST AMNT,TYPE=R,LEN=10,DEC=2#OBJECT DAILY RECONCIUATION,VIEW OFDAILYJRNL,BROWSE,REPORT,PAGE激活,传输([CTYPE]<8)[CHARGES]=[CHARGES]+[POST AMNT];(([CTYPE] EQUAL TO 8)DR([CTYPE] EQUAL TO9))[PAYMENT]=[PAYMENT]+[POST AMNT];([CTYPE] EQUAL TO 10) [REFUND]=[REFUND]+[POSTAMNT];([CTYPE] EQUAL TO 11) [CREDITADJST]=[CREDITADJST]+[POSTAMNT];([ICTYPE]EQUAL TO 12) [DEBIT ADJST]=[DEBIT ADJST]+[POSTAMNT];([CTYPE]EQUAL TO 13)[PMNT/CDTADJST]=[PMNT/CDTADJST]+[POST AMNT];
([CTYPE]EQUAL TO 14)[PMNT/CDT ADJST]=[PMNT/DBTADJST]+[POST AMNT].JRNL DATE,ENTRY=16,GROUP=100ACNT NO,ENTRY=16,GROUP=100PATIENT NAME,ENTRY=16,GROUP=100TRANS DATE,ENTRY=16,GROUP=100,WSKIPSTMNT,ENTRY=16,GROUP=100CTYPE,ENTRY=16,GROUP=100,WSKIP,RSKIPF,ENTRY=16,GROUP=100,WSKIP,RSKIPPTYPE,ENTRY=16,GROUP=100,WSKIPCODE,ENTRY=16,GROUP=100POST AMNT,ENTRY=16,GROUP=100CHARGES,GROUP=101PAYMENT,GROUP=101REFUND,GROUP=101CREDIT ADJST,GROUP=102DEBIT ADJST,GROUP=102PMNT/CDT ADJST,GROUP=103,WSKIPPMNT/DBT ADJST,GROUP=103,WSKIP#OBJECT BILUNG/INS MNGMNT,VIEW of PATIENT CHART,UPDATE限制,条件([BALANCE]>1).ACNT NO,GROUP=133,FPROTVISIT FIRST,GROUP=133,FPROTLAST,GROUP=133,FPROTPATIENT NAME,GROUP=134,FPROTPHONE NO(HOME),GROUP=134,DATA=2,FPROT,RJUST,PHIDE(OFFICE),GROUP=134,DATA=2,FPROT,PHIDERESP.PARTY′S NAME,GROUP=136,FPROTRELATIONSHIP,GROUP=136,DATA=1,FPROTCARRIER CODE,GROUP=137CARRIER NAME,GROUP=137,FPROTPHONE NO,GROUP=138,RJUSTFAX NO,GROUP=138,RJUST(800)NO,GROUP=138,RJUSTPLAN NAME,GROUP=139INS ID,GROUP=139GROUP ID,GROUP=139DEDUCTIBLE,GROUP=141INSURANCE COVERAGE(%),GROUP=141PATIENT PORTION,GROUP=141BILLING DATE,GROUP=142INS BILLING DATE,GROUP=142PATIENT PAYMENTS,GROUP=143INSURANCE PAYMENTS,GROUP=143BALANCE,GROUP=143,FPROTAUTHORIZATION NO,GROUP=145OUTSIDE LAB?,GROUP=145LAB AMNT,GROUP=145MEDICAID RESUB CODE,GROUP=146ORIGINAL REF NO,GROUP=146DATE OF SYMPTOM(CURRENT),GROUP=147(PRIOR),GROUP=147REFERRING PHYSICIAN,GROUP=148PHYSICIAN ID,GROUP=148FACILITY,GROUP=149HOSPITAL DATE(FROM),GROUP=150(TO),GROUP=150UNBL TO WORK(FROM),GROUP=151(TO),GROUP=151,DATA=1CONDITION RELATED TO JOB?,GROUP=152AUTO ACCIDENT?,GROUP=152OTHER ACCIDENT?,GROUP=152ACTIVE STMNT,GROUP=153,FPROT#OBJECT PRINT BILL,SYNONYM OF BILLING DATABASE,REPORT初始值=PRINT INSURANCE FORM.
Constraint,condition([STMNT]EQUAL TO[STMNT NUMBER]).
限制,条件=PRINT INSURANCE FORM.#OBJECT LIST OB DUE PATIENT,VIEW OFPATIENTCHART,BROWSE,GROUP=16,REPORT,PAGE初始值GETVALUE([MONTH]).
限制,条件([MONTH]EQUAL TO MMYYYY([OB DUE])).PATIENT NAMEOB DUE#OBJECT LIST RECALL PATIENT,VIEW OFPATIENTCHART,BROWSE,GROUP=16,REPORT,PAGE初始值GETVALUE(IMONTHI).
限制,条件([MONTH]EQUAL TO MMYYYYY(IRECALL])).PATIENT NAMERECALL#OBJECT ACCOUNT BALANCE DUE,VIEW of PATIENT CHART,BROWSE,REPORT,PAGE限制,条件([BALANCE]>1).ACNT NOPATIENT NAMEBALANCELAST#OBJECT PRACTICE ANALYSIS,ATOMIC OF DAILY JRNL,ANALYSIS链接激活传输[MONTH]=MMYYYY([JRNL DATE]);([CTYPE]EQUAL TO 0)[CTYPE]=1.
链接传输SUMBY([CTYPE],[POST AMNT]);([CTYPE]<8)[CHARGES]=[CHARGES]+[POST AMNT];(([CTYPE] EQUAL TO 8) OR ([CTYPE] EQUAL TO9))[PAYMENT]=[PAYMENT]+[POST AMNT].MONTH,DPROT,GROUP=10,COL=50,XAXISOBSTETRICS,GROUP=11,INPUTSONOGRAM,GROUP=12,INPUTLASER,CSUM,GROUP=13,INPUTMEDICAL LAB,GROUP=14,INPUTGYNECOLOGY,GROUP=15,INPUTOFFICE,GROUP=16,INPUTOTHER SERVICE,GROUP=17,INPUTINSURANCE PAYMENT,GROUP=18,INPUTOTHER PAYMENT,GROUP=19,INPUTREFUND,GROUP=20,INPUTCREDIT ADJST,GROUP=21,INPUTDEBIT ADJST,GROUP=21,INPUTPMNT/CDT ADJST,GROUP=22,INPUTPMNT/DBT ADJST,GROUP=22,INPUTCHARGES,GROUP=24,SERIES,OUTPUTPAYMENT,GROUP=24,SERIES,OUTPUT#OBJECT INS CHARGES ANALYSIS,ATOMIC OF DAILY JRNL,ANALYSIS链接激活传输[MONTH]=MMYYYY([JRNL DATE]).
链接传输(([PTYPE]>0)AND([CTYPE]<8))SUMBY([PTYPE],[POSTAMNT]);(([PTYPE]EQUAL TO 0)AND([CTYPE]<8))[OTHER]=[OTHER]+[POST AMNT].
激活传输[CHARGES]=SUM([PRIMARY],[OTHER]).MONTH,DPROT,COL=50PRIMARY,GROUP=1MEDICARE/CAID,GROUP=2SANUS,GROUP=3PRUCARE,GROUP=4NORTH TX,GROUP=5DALLAS,GROUP=6AETNA,GROUP=7BLUE CHOICE,GROUP=8CHAMPUS,GROUP=9SANUS PPO,GROUP=10TRAVELERS,GROUP=11PTYPE 12,GROUP=12PTYPE 13,GROUP=13PTYPE 14,GROUP=14PTYPE 15,GROUP=15OTHER,GROUP=16CHARGES,GROUP=17,TEMP#OBJECT PROCEDURECODE,PRIMITIVE,ADD,UPDATE,REPORT,PAGECODE,PROTECTCPT4 CODE,TYPE=C,LEN=7,RSKIP说明付款同编号时输入有效cpt4码或跳过该字段MED CODE,TYPE=C,LEN=7,RSKIP说明输入医护所使用的另一过程码CDFLG,TYPE=N,LEN=1,RSKIPAMNT,TYPE=R,LEN=8,DEC=2说明费用应当是称当付该过程的费。在其他情况下为0。CTYPEDESCRIPTION#OBJECT INSURANCE COMPANY,PRIMITIVE,ADD,UPDATE,REPORT,PAGECARRIER CODE,TYPE=A,LEN=8,GROUP=100,PROTECT,UNIQUECARRIER NAME,TYPE=A,LEN=25,GROUP=101PHONE NO,TYPE=S,PTYPE=P,LEN=10,GROUP=102,RJUST(800)NO,TYPE=S,LEN=10,PTYPE=P,GROUP=102,RJUSTFAX NO,TYPE=S,LEN=10,PTYPE=P,GROUP=102,RSKIP,RJUST(ADDRESS),TYPE=A,LEN=30,GROUP=103,RSKIP(CITY),TYPE=A,LEN=15,GROUP=104,RSKIP(STATE),TYPE=A,LEN=2,GROUP=104,RSKIP(ZIP CODE),TYPE=L,PTYPE=Z,LEN=5,GROUP=104,RSKIPITYPE,TYPE=I,LEN=2,GROUP=105,RSKIP限制,值01-PRIMARY,02-MEDICARE/CAID,03-SANUS,04-PRUCARE,05-NORTH TX,06-DALLAS,07-AETNA,08-BLUECHOICE,09-CHAMPUS,10-SANUS PPO,11-TRAVELERS,12-PTYPE 12,13-PTYPE 13,14-PTYPE 14,15-PTYPE15.#OBJECT DIAGNOSIS CODE,PRIMITIVE,ADD,UPDATE,REPORT,PAGEDIAG,TYPE=C,LEN=5,UNIQUEDIAGNOSIS#OBJECT DOCTOR,TRANSIENT,HIDE初始值[DOCNAME]=″J.DOE,M.D.,P.A.″;[LINE1]=″OBSTETRICS and GYNECOLOGY″;[LINE2]=″123 ANY STREET,SUITE 100″;[LINE3]=″ANY TOWN,TEXAS 75200″;[PIN]=″1177″;[FEDTAXID]=″123456789″;[ACNT STRING]=″STATEMENT OF ACCOUNT″;[IDTYPE]=″E″.DOCNAME,TYPE=A,LEN=25LINE1,TYPE=A,LEN=25LINE2,TYPE=A,LEN=25LINE3,TYPE=A,LEN=25PIN,TYPE=C,LEN=12FEDTAXID,TYPE=N,LEN=10IDTYPE,TYPE=C,LEN=1ACNT STRING,TYPE=C,LEN=15#OBJECT POST EXPENSES,PRIMITIVE,ADD,UPDATE,GROUP=16,REPORT,PAGECHECK DATE,TYPE=DACNT CODE,TYPE=1,LEN=2限制,值1-RENT,2-TELEPHONE,3-ANSWERING SERVICE,4-UTILITIES,5-POSTAGE,6-MEDICAL LAB,7-MEDICALSUPPLY,8-OFFICE SUPPLY,9-AUTO INSURANCE,10-MALPRACTICEINSURANCE,11-HEALTH INSURANCE,12-OTHERINSURANCE,13-TRADE DUES,14-SEMINAR TRAINING,15-PROFESSIONAL SERVICE,16-ENTERTAINMENT/GIFTS,17-ACCOUNTING & LEGAL,18-CONTRACTSERVICE,19-AUTOEXPENSE,20-OSHA EXPENSE,21-REFUNDS,22-LEASEPAYMENT,23-LOAN PAYMENT,24-PAYROLL,25-TRANSFER,26-ALL OTHER.CHECK NO,TYPE=L,LEN=6CHECK AMNT,TYPE=R,LEN=10,DEC=2REFERENCE,TYPE=A,LEN=20
#OBJECT EXPENSE REPORT,SYNONYM OF POST EXPENSES,BROWSE,REPORT,PAGE初始值GETVALUE([MONTH]).
限制,条件([MONTH]EQUAL TO MMYYYY([CHECK DATE])).
#INDEX PATIENT CHART,2,PATIENT NAME#INDEX BILLING DATA,1,ACNT NO#INDEX POST EXPENSES,1,CHECK DATE#INDEX DAILY JRNL,1,JRNL DATE#END正如所看到的那样,与简单的笔记本和日历相比,医学系统要复杂得多。然而,不管信息模型自身的长度如何,应当理解该模型是用来执行业务应用所需要的所有的东西。换言之,一旦写了医学系统信息模型,则使用者无需写源码或其他的高级码来完成该模型。使用者还无需维持源码或类似的编码来实施加强或改正错误。因此,使用者需要做的只是修改信息模型(例如,加入一属性、修改或增加一目标改变目标中的一表达式等)。操作中,信息模型是直接由CSE来处理的。MICS可以包括一预处理器而按照需要处理这些表达式,并且功能可以嵌在MICS中或者可以从中区别出来,并因此用IPC设备来执行。基本(base)MICS无需改变或更换。
参照先前描述的医学系统信息模型和功能组,对于一个不使用期待的行为控制系统的系统还可以看到一个用于典型系统的CSE轨迹(trace),这将在下文中讨论状态1MICS使表达式接口初始化,并建立三个模型的链接表,即预约日历、笔记本和医学系统。
状态2CSE用表达式接口显示三个模型。假设使用者给出医学系统的条件。CSE激活医学系统模型并对医学系统设置“活动模型”属性。
状态3CSE用表达式接口向用户显示下面的目标PATIENT CHARTBILLING DATABASEPRINT BILLPRINT INSURANCE FORM
DAILY RECONCILIA TIONBILLING?INS MNGMNTLIST OB DUE PATIENTLIST RECALL PATIENTACCOUNT BALANCE DUEPRACTICE ANALYSISINS CHARGE ANALYSISPROCEDURE CODEINSURANCE DOMPANYDIAGNOSIS CODEPOST EXPENSESEXPENSE REPORT假设使用者给出PATIENT CHART目标的条件,CSE进入状态4。
状态4CSE用表达式接口显示与PATIENT CHART目标相关的如下动作(注意,显示这些动作是因为它们只是目标中的动作标志和与这些动作标志相关的动作)ADDUPDATEDELETEVIEW现在假设使用者给出UPDATE的条件。于是CSE进入状态5。
状态5CSE将PATIENT CHART目标的所有值设置为零。CSE寻找PATIENT CHART的初始值表达式。没有这样的表达式;如果存在,那么它将已经被执行。主目标没有相关的链接目标,所以对于一链接目标没有激活瞬间。接着CSE选择PATIENT CHART的数据目标。由于PATIENT CHART类型是基元的,PATIENT CHART的DATA OBJECT是PATIENT CHART本身。因为活动动作的动作瞬间类型标志是ACTIVE INSTANT并且PATIENT CHART没有约束表达式,所以CSE如下所述示例DATA OBJECT的瞬间CSE用表达式接口显示下面的两个关键词(因为PATIENT CHART实例是由在目标结尾处索引中表示的索引或关键词来访问的)
ACCOUNT NOPATIENT NAME假设使用者输入PATIENT NAME的关键词值(key value),CSE进行交互作用,直到输入了一个有效的关键词值。CSE还用数据库接口通过示例PATIENTCHART属性激活与PATIENT NAME相关的瞬间。假设激活成功,CSE寻找与PATIENT CHART目标相关的激活表达式。这里没有;如果有,则已经被执行。
状态6CSE首先确定是否存在与UPDATE动作相关的任何功能标志。在这种情况下,只有一个功能USR_INSTANTIATION,所以CSE执行USR_INSTANTIATION功能。该功能用表达式控制标志和表达式接口向使用者显示属性。使用者接着修改这些属性并返回一“事件”。如果事件不是“过程”(PROCESS或NEXT或PREV EVENT的选择),则CSE进入CSE状态6逻辑中描述的合适的状态。假设选择的事件是“过程”,则CSE执行与活动目标相关的任何传输表达式。这种情况下什么也没有。CSE接着判定与PRIMARY OBJECT相关的DATA OBJECT是基元的还是原子的。本例中,PRIMARY OBJECTPATIENT CHART的DATA OBJECT是PATENT CHART本身。由于PATIENTCHART是基元的,所以CSE判定活动动作是否具有任何瞬间传输类型标志。在该瞬间传输类型标志中是UPDATE INSTANT。由于PATIENT CHART瞬间是ACTIVE INSTANT,所以CSE用数据库接口更新PATIENT CHART瞬间。如果“过程”是PREV/NEXT事件的结果,则CSE将从数据库获取病人图的前一/下一瞬间、激活该瞬间并重复状态6,否则CSE回到状态4。本例中,假设“过程”曾经是PROCESS的结果,那么CSE回到状态4。这就完成了处理过程。
现在参照第二个日历程序信息模型,该模型不包含字典或目标。该模型也不执行期待的行为控制系统。系统学习的典型系统的CSE的轨迹也可以被找到。
状态1MICS使表达式接口初始化,并建立三个模型(即预约日历、笔记本和医学系统)的链接表。
状态2CSE如下那样激活预约日历。CSE用表达式接口显示三个模型。假设使用者给出预约日历的条件。
由于预约日历没有目标,所以CSE产生预约日历目标,并设置在等于目标的模型处定义的控制标志和控制表达式,即UPDATE ADD,SELECTEXPRESSION。CSE还将根据模型定义的所有属性设置为预约日历的属性。现在如果目标具有属性类型并选择表达式类型属性,则它用属性选择表达式扩展属性。这样,930a.m.具有等于时间的属性类型,并具有相关的属性选择表达式。CSE执行选择表达式,并产生从900a.m.到500p.m.的属性。由于DATE具有UNIQUE标志,所以CSE将DATE设置成用于“预约日历”的索引。现在建立的目标如下#OBJECT APPOINTMENT CALENDAR,PRIMITIVE UPDATE,LEARN-选择,INSTANT(NEXT INSTANT)[DATE]+=1;(PREV INSTANT)[DATE]-=1DATE,TYPE=dDATE,TYPE=d,PTYPE=d,TEMP0900 A.M.,TYPE=C,LEN=66说明打印你想要在该时隙中包括的信息1000 A.M.,TYPE=C,LEN=66说明打印你想要在该时隙中包括的信息1100 A.M.,TYPE=C,LEN=66说明打印你想要在该时隙中包括的信息1200 P.M.,TYPE=C,LEN=66说明打印你想要在该时隙中包括的信息100 P.M.,TYPE=C,LEN=66说明打印你想要在该时隙中包括的信息200 P.M.,TYPE=C,LEN=66说明打印你想要在该时隙中包括的信息300 P.M.,TYPE=C,LEN=66说明打印你想要在该时隙中包括的信息400 P.M.,TYPE=C,LEN=66说明打印你想要在该时隙中包括的信息500 P.M.,TYPE=C,LEN=66说明打印你想要在该时隙中包括的信息NOTE,LEN=134,TYPE=C说明打印两行文字作为注释TODO,LEN=134,TYPE=C说明打印两行要做事情的文字。
#Index,APPOINTMENT CALENDAR,UNIQUE.
CSE激活预约日历,并将活动模型设置成预约日历并进入状态3。
状态3现在由于只有一个目标,CSE将预约日历设置为目标并将下一个状态设置成状态4。
状态4由于只有一个与动作控制标志相关的动作,所以CSE将活动动作设置成UPDATE ADD并进入状态5。
状态5CSE将日历的所有值设置成零。因为动作瞬间类型具有一活动瞬间的动作类型标志,所以CSE从使用者处获得索引值日期,以示例预约书瞬间。由于有选择表达式,CSE执行选择表达式,并且如果事件是“下一个”或“前一个”的话选择表达式选择下一个日期,。由于事件是“过程”,所以CSE从用户处获得日期。如果日期是“下一个”或“前一个”的结果,则CSE跳过从用户获得日期的过程。在这种情况下日期没有设置,CSE用表达式接口从用户处获得日期。假设用户输入日期值。CSE获得指定日期的预约日历。如果存在日期的预约书,则进入状态6。假设预约书页不存在。由于日历具有学习标志,则CSE将活动瞬间标志设置成EMPTY(空),将动作设置成ADD,并将下一状态设置为6。这就是CSE与传统的编程系统不同的地方。由于只有一个与动作ADD相关的控制标志,所以CSE通过用户接口示例预约日历。用户接着修改预约,并且返回一事件认为用户选择事件“下一个”。由于动作是ADD,并且瞬间是EMPTY,所以所以CSE用数据库接口加入用于特定日期的日历。CSE接着进入状态6。
请注意,数据库中的日历记录看上去对用户来说对所有的日期都存在。实际上,除非对给定的日期预约日历中存在信息,否则是没有数据存在的。这是重要的,因为如果某人要用数据库管理系统,用数据库建立一个日历,那么他必须对所有年份建立空记录。这会浪费有用的磁盘空间。动作控制标志学习使得可以在示例瞬间并且没有记录存在时产生一数据库记录。
按照本发明,MICS的用户简单地写入信息模型,而不是源码等。信息模型12和功能16代替了现有技术中计算机软件系统中使用的通常的源码程序。为了修改程序的运行,用户只需改变信息模型,因此不存在传统意义上的软件维护。因此本方法与现有技术和实践是根本上不同的。
所以,要想利用本发明优点的设计者建立起与实际应用不同的模型,从而使最终用户能够从业务模型中直接产生它们自身的应用。如上所述,完整的医学系统是用不到700行的信息模型实现的,与成千上万条复杂的源程序相比简单多了。MICS的主要处理机构(engine)是CSE机器,在该机器中,每一动作产生一事件,该事件改变一状态,而该状态触发一动作。模型可以在任何状态期间终止,并且以后可以在同一状态下重新激活。按照本发明,无论何时终止一事务,这可能出现在例如调用另一模型进行处理的时候,控制机构存储前面的模型和事务的状态。当其他的处理完成时,控制机构在“动作”级别处重新进入前面的事务(与指令级相对)。从而在动作级别处重新进入控制机构。
在本较佳实施例中,信息模型是借助于BNF语法采用一编辑器来定义的。BNF语法也方便了将应用划分成一组独立的动作。采用基于BNF语法的预处理器或词汇分析器将该模型转换成信息处理目标。
通过包括一期待的行为控制系统(EBCS),在应用程序的期望行为本质上独立于应用处理系统时,用来自动检测和校正由应用程序实施的动作行为,可以大大提高如MICS的应用处理系统。这就使得在不影响应用处理系统运行的情况下能够修改该期望行为。EBCS可以以两种方式中的一种方式工作。在第一种应用中,EBCS使系统的行为与EBCS所定义的系统的期望行为一致。在第二种应用中,特定的行为可以由EBCS来加强,以所要求的方式改变应用处理系统的处理流程。
现在参照图3,图中描述了本发明的较佳实施例。应用处理系统30由一动作处理器32组成,用来通过执行应用程序所要求的一个或多个动作执行应用程序。这些动作的执行产生特定的行为。关于MICS,动作处理器将包含控制系统机构,并且应用程序将由信息模型组成。EBCS 34与动作处理器32和外界输入/输出36相连接。在大多数情况下,EBCS 34的每一应用“动作”的执行以后执行,这些动作在诸如MICS的应用处理系统32的活动瞬间(状态5)期间和处理瞬间(状态6)出现。然而在某些情况下,EBCS的执行可以在动作或表达式的执行以前出现,以检查影响特定处理流的执行的某些条件。关于EBCS,除非特指,术语“规则”、“表达式”和“动作”词义相同。
EBCS 34包含一期望行为功能(EBF)38和一校正动作功能40,前者用来响应于应用程序发出的动作产生的行为,使处理系统行为实施或与期望行为规则一致,后者用来执行一个或多个校正动作,在期望行为规则没有被满足的情况下,使之与期望行为一致或实施期望行为。期望行为功能38和校正动作功能40可以形成单独的规则或用作单个规则,而不影响本发明的整体运行。期望行为功能38由一组确定是否出现执行的应用程序动作的期望行为的规则组成。该规则可以使系统的行为与一期望行为一致,或以所要求的方式强制执行过程的处理流程。如果在EBF 38中的规则设置的条件没有被满足,则返回一个校正ID号,校正动作功能40用此来使能执行动作的相关响应,以实现应用处理系统的期望行为。
EBF的期望行为规则验证应用程序发出的特定动作行为,并且在必要时实施协调或强制使系统的期望行为符合的校正动作。期望行为规则分成两组,丢失(missing)动作规则和无效动作规则。丢失动作规则寻找应当对特定的动作作出响应的特定行为。无效动作规则检测和校正不应当发生但却发生了的的行为。协调系统行为规则的一例如下所述丢失动作规则1.如果丢失索引键属性值(index key attribute value),则执行动作“校正说明参数,以赋给索引关键属性值”。
2.如果瞬间(instant)包含相互参考(cross reference),而在数据库中没有加入相互参考,则执行动作校正说明参数以产生相互参考。
无效动作规则
1.如果是用户瞬间而用户没有改变属性值,也没有出现数据库更新,则执行动作“校正无效传输表达式”。
2.如果是属性值赋值的循环状态,则执行动作“终止赋值循环状态”。
并非意味着只有上述规则,实际上可以使用任意个数的规则来协调和校正系统的期望行为的。
下面的例子是与前述MICS系统的信息模型相应的应用程序。该信息模型将用来示例EBCS及其功能性。
#MODEL PAYMENT MANAGER#OBJECT BANK ACCOUNT,ADD,UPDATE,REPORTACT ID,UNIQUE,FPROTNAMEACCOUNT NOBALANCE#OBJECT TRANSACTION,ADD,UPDATE,REPORT,JOURNAL传输([ACT ID]ENQ””)[PAYEE]=[NAME]CODE传输([CODE]IS“ICR”)[REFRENCE]=999999DATEPAYEEAMOUNT传输([AMOUNT<0)[REFERENCE]=999999REFERENCE传输([RERERENCE]IS”999999”)[AMOUNT]-=[AMOUNT]ACT ID传输[PAYEE]=[NAME]STATUS#TRANSACTION JOURNAL,JOURNAL OF TRANSACTION,HIDE([AMOUNT]不是“O”){CTYPE]=[CODE]CTYPEPAYEEDATEAMOUNTACT ID#BALANCE DHECKBOOK,VIEW OFTRANSACTION,BROWSE,TEPORT选择,ALL([STATUS]是“O”)激活([LAST BALANCE]IS ZERO)[LAST BALANCE]=BALANCE];[LAST BALANCE]-=[AMOUNT]传输[BALANCE]-=[AMOUNT]CODE,ENTRY=15PAYEEDATEAMOUNTLAST BALANCE,ENTRY=1#INDEX TRANSACTION,ACT ID下面的描述示出几种情况,即可以看到运行EBCS来协调期望行为的轨迹情况1假设用户选择BANK ACCOUNT目标的ADD动作。在由CSE执行状态6时,数据库运行失败,这是因为,ACT ID索引关键属性值被标上索引,但是ACT ID的赋值由于字段被FPROT属性标志保护而不能输入数据并且没有传输表达式或“动作”来赋给属性值的缘故。在执行EBCS时,执行EBCS丢失动作规则1没有实现行为的一致性,并且校正动作功能执行“校正说明参数以赋给索引关键属性值”。这里,校正动作功能的EBCS校正动作可以自动地从BANKACCOUNT的ACT ID属性定义中去除FPROT属性,以克服这一问题,而无需用户修改信息模型,或者根据显示属性定义,通过输入/输出接口来与用户互作用,请用户变更标志或加入传输表达式,以克服这一问题,从而强制执行所期望的行为。
情况2在TRANSACTION目标中,JOURNAL标志指令CSE在数据库运行以后激活TRANSACTION的JOURNAL目标。假设用户已经选择了TRANSACTION的ADD动作。如果AMOUNT属性值没有由用户输入,CSE无法产生JOURNAL数据库记录,因为在执行JOURNAL目标时不改变属性值,其原因是仅当AMOUNT不是零时,传输表达式改变属性值,没有实现EBCS符合丢失动作规则号2,并且校正动作功能执行“校正说明参数,以产生相互参考”。通过在TRANSACTION的属性定义AMOUNT中自动加入MUST FILL标志,校正动作可以实行该行为,或者经输入/输出接口EBCS校正动作可以与用户交互作用请求用户改变MUST FILL标志,或修改JOURNAL目标的修改传输表达式来改变至少一个属性值。
情况3假设用户已经选择ADD动作,并且用户输入一等于ICR的CODE值。于是REFERENCE值改变成999999。这使得AMOUNT值变成负值,这又接着使REFERENCE值变成999999。这产生一循环状态,而与EBCS无效规则2的一致性失败,并且EBCS执行“终止循环状态”。通过自动终止循环状态或请用户通过输入/输出接口这样做,校正动作功能可以协调该行为。
重要的是要注意,在信息模型自身的任何处理部分中没有错误。错误在信息模型说明参数中。在传统的软件程序中,错误会出现在程序说明参数和处理流程程中,而不会出现在响应于程序而执行的动作中。
除了使应用处理系统与特定的行为一致以外,EBCS还可以将应用程序定义的动作的处理流强制实行到所选的行为。这可以使得应用处理系统能够以新的方式进行工作,而无需改变存在的数据库或应用程序。增加处理流的一个例子是如果两个用户在处理某一个记录的不同属性,就能使两个用户同时更新一个数据库记录。当前的现有系统是不能使两个用户同时更新相同的数据库记录的。
目前,当某一应用为了更新目的需要使用数据库记录时,该应用起动一READUPDATE动作,该动作读取数据库中的输入,并将该记录锁定成UPDATE模式。在READ UPDATE动作期间,是没有其他的用户可以访问数据库记录。这是由于这样的事实,即,由该应用程序起动的READ UPDATE动作产生仅使得一个用户能够访问所要求的数据库的处理流。采用一组与先前讨论的一致规则相似的增强规则,可以由EBCS执行一个新的类型的处理流。增强规则与一致规则的不同点在于,它们可以在动作的执行之前或之后执行。这是由于这样的事实,即,对动作的期望行为根据现有状态可以是不同的。
假设在EBCS中还包括下面的规则1.如果操作是READ UPDATE,那么获取具有READ而没有UPDATE的记录,并激活该瞬间。
2.如果动作是READ UPDATE,则等待到记录可为READ UPDATE使用,并用经用户接口或传输表达式改变的瞬间属性值更新数据库。
所以,当由应用处理系统执行READ UPDATE动作时,EBCS规则1使得可以读取该记录而不更新。这就使得网络或客户/服务器计算机系统上一个以上的用户可以同时更新相同的记录,而不会在更新期间锁住该记录。在完成每一用户对某一记录的修改以后,每一用户的更新按照规则2返回到该数据库。规则号1是一个动作执行以前执行的预执行规则,它在不改变应用程序的前提下使处理流导向所希望的方面。在这种情况下,规则仅发出READ动作。规则号2是一个在某一动作执行以后执行某一特定行为的后执行规则。在这种情况下,该规则读取用于UPDATE READ的数据库记录,并按照用户作出的变更修改该记录。
这样的规则使得多个用户能够更新某一数据库记录,只要更新的是该数据库记录的不同属性就可以了。在一普通的处理系统中,最后对记录的属性值作出变更,是最终在数据库记录中使用的变更。如果在READ UPDATE动作期间多个用户之间试图更新相同属性时有矛盾,那么可以在EBCS中包括附加的规则,以解决这一矛盾。规则可以包括在EBCS中,执行不论哪个用户输入最大数量的指定组的属性值变化,就获得对该组所有的属性值变化的优先权。所以,在第一个用户更新第一个病人记录中的一个属性和第二个病人记录中的5个属性、而第二个用户仅更新第二个病人记录中的10个属性的情况下,校正动作迫使由第一个用户作出的变更控制并输入到第一个病人记录中,而第二个用户输入的属性控制和输入到第二个病人记录中。
在前述讨论中,应当注意,没有应用程序以任何一种方式而改变。改变的只是方法,动作的过程流以该方法执行,使得新的系统行为可以实现,而无需对应用程序进行重新编程。还应当注意,对执行过程流的特定规则讨论仅是描述性的,而任意个数的规则可以用来实现任何要求的行为。
对于本领域中的技术人员应当理解的是,上述揭示的特定实施例可以用作实现本发明相同目的修改或设计其他结构或技术的基础。对于本领域中的技术人员还应当理解的是,这些等效结构不会偏离权利要求书中所揭示的本发明的精神和范围。
权利要求
1.一种自动校正一应用处理系统的行为的方法,所述系统具有至少一个包括至少一个动作的应用程序,其特征在于,所述方法包含下述步骤监视通过应用程序的动作的执行而设定的行为;将应用程序的动作被监视的行为与一期望行为规则比较;以及当被监视的行为不符合所述期望行为的时候,执行一校正动作,以设定由期望行为规则定义的行为。
2.如权利要求1所述的方法,其特征在于,所述期望行为规则定义了一个应当从动作的执行中产生的行为。
3.如权利要求1所述的方法,其特征在于,所述期望行为规则定义了一个不应当从动作的执行中产生的行为。
4.如权利要求1所述的方法,其特征在于,它还包括按照第二期望行为规则执行应用程序的动作的步骤。
5.一种自动校正一模型信息控制系统的行为的方法,所述系统具有至少一个包括至少一个动作的信息模型,其特征在于,所述方法包含下述步骤监视通过所述信息模型的动作的执行而设定的行为;将被监视的动作行为与一期望行为规则比较;以及当被监视的行为不符合所述期望行为的时候,执行一校正动作,以设定由期望行为规则定义的行为。
6.一种期望行为控制系统,用于一应用处理系统,所述应用处理系统具有包括至少一个定义的动作的至少一个应用程序,其特征在于,所述系统包含期望行为功能,用来检测一执行的动作是否提供了一期望结果;以及校正动作功能,对期望行为功能检测到的非期望结果作出响应,执行至少一个校正动作。
7.如权利要求6所述的系统,其特征在于,所述期望行为功能包括多个定义期望行为的规则。
8.如权利要求6所述的系统,其特征在于,所述期望行为功能包括执行一特定过程流的至少一个规则。
9.如权利要求7所述的系统,其特征在于,所述校正动作功能包括多个校正动作,每一校正动作与定义一期望行为的多个规则中的一个规则对应。
10.如权利要求7所述的系统,其特征在于,所述多个规则分成两组,所述组包含丢失动作规则,用来定义应当在应用程序的动作执行中找到的动作;以及无效动作规则,用来定义由于程序的动作执行而引起的无效动作。
11.如权利要求6所述的系统,其特征在于,所述应用处理系统包含一模型信息控制系统。
12.如权利要求11所述的系统,其特征在于,所述应用程序包含包括至少一个属性和一个动作的信息模型。
13.一种执行模型信息控制系统的行为的方法,所述模型信息控制系统具有包括至少一个动作的至少一个信息模型,使得多个用户能够同时更新数据库,其特征在于,所述方法包括下述步骤按照执行行为规则处理所述信息模型中的动作,由多个用户执行数据库的一个记录中属性的本地更新;以及通过将每一用户的每一本地更新加到所述数据库中来更新所述数据库中记录的属性的变更。
14.如权利要求13所述的方法,其特征在于,所述处理步骤还包括下述步骤响应于请求数据库更新的一个动作,由用户将所述数据库读到本地存储器中用于本地更新;以及等待用本地更新对数据库进行更新,直到没有用户矛盾。
15.如权利要求13所述的方法,其特征在于,它还包含下述步骤确定多个用户是否试图更新数据库中相同记录的相同属性;以及按照所述执行行为规则解决所述矛盾。
全文摘要
一种与用户定义的信息模型和一个或多个传统信息系统程序模块或“功能”一起使用来执行业务应用的模型信息控制系统(“MICS”)。根据信息模型定义的每一动作执行,一期望行为控制系统(“EBCS”34)确定产生的行为是否与期望的行为(38)一致,并在必要时使该行为与该期望行为一致(32,40)。EBCS可以通过执行应用处理系统的新的行为或应用程序而不作修改地改变应用处理系统或应用程序的行为。MICS包括事件—动作—状态机器对用户定义的信息模型和功能进行处理。
文档编号G06F7/06GK1187254SQ9619464
公开日1998年7月8日 申请日期1996年4月11日 优先权日1996年4月11日
发明者基里特·K·塔拉提 申请人:基里特·K·塔拉提
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1