关于生命周期
生命周期是一个对象实例在它的存在期内所经历的一系列状态。多数业务流程定义了高级阶段以跟踪对象在生命周期中的发展。下面是一个供应商生命周期的实例:
生命周期由状态和状态转变组成,状态主要是一系列的动作和步骤,状态转变主要是介于不同状态之间的路径。让我们一起来执行这个生命周期,以获得一些基本的理解。当一个命名为PartsVendor1的供应商类的对象实例被创建之后,它立即被置为Preliminary状态。通常,为了取得核准供应商的资格,供应商必须符合公司的某些特殊标准,或者经过一个特殊的审核过程。当这些条件满足,一个具有Component Engineering身份的成员可以将该供应商提升到已核准状态。如果这个PartsVendor1满足更严格的标准(通常是更严格的交货日期,或批量折扣),然后一个具有Component Engineering身份的成员可以将该供应商提升到首选状态。当然,如果供应商在某些方面变弱,再根据公司设定的标准,那么供应商可以转变到非活动状态。通常,每个状态内部,也有步骤,或是需要由明确身份的成员进行的一系列动作。这些通常是描述并分配给一个工作流,它可以在一个对象进入一个特定的生命周期状态时自动激活。
作为一个非常强大的工具,可以根据对象的状态变化触发各种各样的主动的或被动的设置。例如,一个设置可能是在采购时,特定身份的人为特定的零部件选择供应商,只有状态为首选的供应商被列入可用的供应商名单。另一个特色是,当一个对象进入生命周期的任何状态,可以设置自动电子邮件,通知到指定的人员针对该对象状态变化的结果采取必要的行动。
不同的生命周期图可以被分派到不同的类。参见类结构。
创建生命周期
生命周期图可以不依赖于任何一个对象类而创建,可以在创建完成后与对象类建立关系。事实上,多个对象类可以共用同一个生命周期图。此外,一个对象类可以依据类结构而包含若干个生命周期图。当一个对象类的实例被创建后,Innovator会根据该对象的类结构为其选择一个适当的生命周期图。当一个对象类的实例被更新后,Innovator会对类结构属性的变化进行检查。如果对象被改变为新的类,新的类具有不同的生命周期图并且对象的当前生命周期状态仍在‘起始状态’,那么Innovator会将对象的生命周期设置为新的类结构所对应的生命周期。如果发生类结构更改的是一个生命周期状态不在‘起始状态’的对象,那么Innovator会拒绝此次更改,以避免与生命周期的正常进展干扰。如果有必要,生命周期图可以设置为允许将状态转变回‘起始状态’,这样,一般的用户就可以执行类结构的变更。
To create a Life Cycle Map:
创建一个生命周期图:
1. 点击TOC的系统管理文件夹,选择生命周期图, 点击新建图标 .一个生命周期图的窗体显示如下:
2. 填写生命周期图属性:
a. 名称-生命周期图的名称
b. 描述-生命周期图的描述
3. 创建一个新的状态,在生命周期图画板上的任何位置点击右键并在弹出菜单选择新建状态。一个新的状态被创建出来,并且默认为选中。每个生命周期状态具有以下属性:
状态属性
名称 |
状态的名称 |
图 |
点击选择图象...弹出一个图标选择对话框。为该状态选择一个图标,然后点一下绿色勾的图标来完成您的选择 |
发布 |
这个属性仅适用于可换版的对象类的生命周期图。 布尔值指定了该状态是否为发布状态。在发布状态的对象当再次被执行“锁定/解锁/编辑”动作时,版本属性会发生递增,并且生命周期状态回到“起始状态”。 每个生命周期图中只能存在一个发布状态。 |
不可锁定 |
布尔值;当设定为True时,在此状态的对象不能被编辑。一般来说,当状态为发布状态时,该属性设置为True。如需编辑该对象,必须将其提升到一个新的状态,并且一般会产生一个新版本(由生命周期决定)。 |
对象行为 |
仅适用于通过此生命周期的对象,且该对象具有一个或多个与可换版对象建立的关系。对象行为具有四种类型,描述如下。请注意,由关系类型设置的对象行为会影响到由状态设置的对象行为。要查看这些行为是如何相互合作的完整说明,参见对象行为。 > 固定-源对象(在当前状态的)关联到相关对象的指定版序 > 浮动=源对象(在当前状态的)关联到相关对象的最新版本 > 强固定-行为是固定的,如上所述,并且不会被本生命周期内的任何的后续状态所改变。 > 强浮动-行为是浮动的,如上所述,并且不会被本生命周期内的任何的后续状态所改变。 |
状态权限 |
每个状态可以定义一组权限,用来管理对当前状态的对象的访问(参见权限)。状态权限会覆盖对象类中定义的所有权限。如果没有设置状态权限,则会继承使用对象类中定义的权限。比如,你有一个零部件,当其处在Preliminary状态时,所有员工可以获取并且更新它。(这是零部件对象类中设置的权限)可是,一旦当零部件进入到Review状态,只有具有管理员身份的成员才能更新它。 |
配置E-Mail |
点击链接可以配置电子邮件,用来通知指定的人员该对象已经进入到此状态。参加配置Email。 |
工作流 |
点击工作流字段右侧的按钮 。在弹出搜索框中选择一个允许的工作流对象。当该生命周期状态被激活时会自动启动被选中的工作流。备注:允许的工作流是指与该生命周期相关的对象类所关联的工作流之一。 |
标签 |
这个字段定义了该生命周期状态在系统中显示的标签 。如果Innovator已经配置了多语言,那么这个字段也可以被定义为多种语言。 |
历史模板 |
点击历史模板字段右侧的按钮 。在弹出搜索框中选择一个历史模板。更多信息参见可配置历史帮助主题。 |
4. 创建一个状态转变:
a. 在你希望创建状态转变的状态上点击右键,在弹出菜单中选择新建状态转变
b. 一个从指定状态到鼠标指针的状态转变会被创建出来。拖动鼠标指针到你希望连接到的状态,点击即可完成状态转变的连接。
配置E-mail
Email是用来通知指定的成员某个对象已经进入到指定的生命周期状态或者发生了某种状态转变。对于这两种情况,配置Email的方式是相同的。
上半部分的对话框用来指定Email消息。如果你希望不同的成员收到不同的消息,你可以在这里选定多个消息。在下半部分的对话框中,你可以指定当前选定的消息通知给哪些成员。
配置一个Email:
1. 在下拉列表中选择新建对象,点击新建图标 。(如果你之前配置好了Email,可以在下拉列表中选择选择对象,然后选择你希望使用的Email)
2. 顶部面板中会创建出一个新行。参见下表中的解释,填写相关的属性:
属性 |
描述 |
名称 |
Email消息的名称 |
发件人 |
消息的发送者。如果此处没有指定,默认使用该Email对象的创建者。按下F2可以弹出角色搜索对话框。选定的角色必须具有有效的Email地址。 |
主题 |
Email的主题 |
消息主体 |
要发送的纯文本消息(为不能接收HTML的收件人) |
消息主体[HTML] |
要发送的HTML消息 |
查询字符串 |
如果你希望编写一个复杂的通知,并且需要Innovator中各种各样的数据,你可以写一个查询从数据库中获取数据。返回的数据可以被引用在Email消息的主体中。比如,你希望显示一个相关对象的价格,你需要编写一个查询来获取它。如需学习如何编写查询,请您查阅高级编程课程,或联系您的顾问方。 |
对象类型 |
因为相同的生命周期图可以被不同的对象类所使用,此字段用来将Email消息指定到某个对象类。如果没有指定对象类,这个消息会对所有经过此生命周期的对象类有效。 |
3.Email配置完成后,在底部面板中选择一个列表决定该Email通知到哪些成员(必须确保这些成员拥有有效的Email地址)。选择选取对象,然后点击新建图标 。在弹出的搜索框中选择成员。
在Email文本中使用变量
你可以在Email文本中使用变量来显示相关的对象及其属性值,这样可以使Email消息更加详细和明确。任何属性,包括系统属性,可以使用${属性名}这样的语法来插入到文本中。以下是几个Innovator支持的运行时变量:
变量 |
定义 |
$[USER] |
当前登录的用户名 |
$[ALIAS] |
用户的简称 |
$[DATE] |
当前的日期字符串 |
$[TIME] |
当前的时间字符串 |
例如,我们有一个对象,它具有以下几个属性:name,part_number和color。它也有系统的通用属性,所以我们使用state属性来表示该对象处在哪个生命周期状态。如下图配置一个Email消息,右键点击Email行,在弹出菜单中选择查看“Email 消息”,你会看到一个Email消息的窗体,如下图:
特别注意标题行的${name}和$1两个变量。请确认所使用的是属性名而不是标签。主体部分用到了自定义属性${part_number}。当Email消息被发送后,它在收件人的邮箱中如下图显示:
对象行为
对象行为是生命周期状态的一个属性,设置源对象(或父项)和关联对象(或子项)的连接行为。只有源对象和关联对象可换版时,这个属性才有效。请注意:关系类自身也定义了一个对象行为属性(参阅关系类型对象行为)。这两个属性-----关系类型的对象行为和生命周期状态的对象行为,它们共同控制源对象和关联对象的配置。
对关系类型行为和生命周期状态行为来说,Hard Fixed和Hard Float意味着不同的东西。下表是对这些设置的解释:
|
Hard Float |
Hard Fixed |
关系类型 |
生命周期状态设置中的”浮动”行为不能被修改。 |
生命周期状态中的”固定”行为不能被修改。 |
生命周期状态 |
“浮动”行为一直有效直到生命周期结束,它不能在生命周期状态后续中被修改。 |
“固定”行为一直有效直到生命周期结束,它不能在生命周期状态后续中被修改。 |
此外,有两种情况要考虑---如果子项(或关联对象)先换版将发生什么,相反,父项(或源对象)先换版时会发生什么。我们先看第一种情况:
当父项(或源对象)先换版时的行为:
我们先考虑当生命周期状态没有行为设置时的情况:
注意浮动关系类型行为,当Children创建时,Parent1仍指向Child1.这是因为当父项的新版本创建时,当前配置中,先前版本的配置是”Hard Fixed”.所以当Parent2创建时Parent1指向Child1.它仍然停留在以前的状态,不管之后子项换版多少次。
当生命周期行为设置为“浮动”,它迫使定义为“固定”的关系类型表现的像”浮动”,请看下图:
当生命周期行为设置为“固定”,它迫使定义为“浮动”的关系类型表现的像”固定”,请看下图:
当关系类型定义为”Hard Fixed”或”Hard Float”时,它将覆盖生命周期状态的行为设置。注意:下面两个图显示了行为由关系类型行为规则定义,即使生命周期状态中也定义了行为:
如果关系对象行为没有设置为“Hard”,它会被生命周期状态行为重写。下图显示了一个父项版本在某一状态下有一种行为类型,在下一个生命周期状态有不同的行为时所发生的事情:
到现在为止我们已经看到了当父项或源对象先换版时的所有情况。现在,我们需要验证在相同案例下,子项或关联对象先换版的情况。
当子项(或关联对象)先换版
如前所述,我们先考虑生命周期状态行为没有设置时的情况。注意:即使是Fixed行为,Parent2 还是和Child2关联。这是真实的,因为以下规则:当一个源对象换版时,它自动关联到所有子项的最新版本。在这种情况下,Child2先前已经存在,将代替Child1成为最新版本,然后Parent2指向Child2。
生命周期状态行为覆盖关系类型行为。如下表所示,在“浮动”生命周期状态下,“固定”关系类型表现的像“浮动”;在“固定”生命周期状态下,“浮动”关系类型表现的像固定。
当关系类型行为设为“Hard Fixed”或”Hard Float”,它将覆盖生命周期状态行为。下表可以看到即使生命周期状态已经设置,“Hard Fixed”行为表现像”固定”,“Hard Float”表现像“浮动”。
如果关系类型行为没有设置为”Hard”,它将被生命周期状态行为覆盖。下图显示了一个父项版本在某一状态下有一种行为类型,在下一个生命周期状态有不同的行为时所发生的事情:
记住,如果生命周期状态行为设置为”Hard Fixed”或“Hard Float”,它将覆盖过程中的所有状态行为。这有一个特殊的作用。如果有一个所有状态已经发布的生命周期图,像Obsolete,或Superseded.一旦对象到达发布状态时你想”Hard Fix”它的行为,即使对象提升到”Obsolete”或”Superseded”,仍然保持配置不变,。可采用此设置。