最近总结了一下,在Parent/Child模型中,如果所有的Child到达某一状态,则Parent
自动到达某一状态。
代码不记得来自哪了,好像是
IBM DeveloperWorks,在这里我做了修改。
以Defect为例,配置步骤如下:
1. 在Defect下建立一个
字段Parent,类型为REFERENCE_LIST,reference to:Defect,back reference:Child
2. 在Form上从控件面板中拖入2个Parent/Child控件,分别
设置属性,关联Parent,Child这两个字段
3. 新建一个Base类型的Action,名称随便,如AutoState
4. 在AutoState的Notification上添加如下代码:
复制内容到剪贴板
代码:
Dim parent_id
Dim ParentObj
Dim ChildRefList
Dim ChildArray
Dim ChildID
Dim ChildEntityObj
Dim StateStatus
Dim SameState
Dim CurrentState
Dim retvalue
Dim ActionJustPerformed
set sessionObj = GetSession
ThisID = GetDisplayName
ActionJustPerformed = GetActionName
StateStatus = LookUpStateName
SameState = 0
parent_id = GetFieldValue("Parent").GetValue()
If parent_id <> "" Then
set ParentObj = sessionobj.GetEntity("Defect", parent_id)
ChildRefList = ParentObj.GetFieldValue("Child").GetValue
ChildArray = split(ChildRefList, vbLf)
For Each ChildID In ChildArray
If ChildID <> ThisID Then
Set ChildEntityObj = sessionobj.GetEntity("Defect", ChildID)
CurrentState = ChildEntityObj.GetFieldValue("State").GetValue
If StateStatus = CurrentState then
SameState = 1
Else
SameState = 0
Exit For
End If
End If
Next
If SameState = 1 Then
sessionobj.EditEntity ParentObj, ActionJustPerformed
status = ParentObj.Validate
If status = "" Then
ParentObj.Commit
Else
ParentObj.Revert
End If
End If
End If [
本帖最后由 yunshan 于 2007-12-23 23:13 编辑 ]