发新话题
打印

[已解决] 如何 在action 中修改 默认 State 中的值?-解决( 此文章被查看:1912次,被回复:6篇!! )

如何 在action 中修改 默认 State 中的值?-解决

功能是为了实现流程在未关闭前,可以由特殊用户如配置管理员,随时修改在每个流程中,输入出错的地方?

我的实现思路:
1、创建 action "修改锁定",从当前任何状态到 暂时锁定 状态,此状态中所有字段,基本都是optional

2、在 action "修改锁定" 的 access control 中添加编码,把当前状态的值赋值到 一个新添加的字段 全文修改状态 中(已实现)

3、在 action "修改锁定" 的commit中,添加编码 把 State 赋值为 全文修改状态 的值

现在是 setfieldvalue "State",str_qwxgzt不生效,apply 后,状态还是 暂时锁定


str_qwxgzt是从字段 全文修改状态 中取得的域值,没有问题

我想知道大家有什么思路,或者知道如何给state字段赋值?

[ 本帖最后由 derd 于 2006-10-18 01:43 编辑 ]


问题已经解决 [打开主题]
本主题的最佳答案为 [ 7 楼].



© 本文为 derdSCMLife 共同所有,未经同意,请勿转载 ©如该文侵犯了您的版权,请联系管理员

TOP

State这个字段是CQ一个非常特殊得字段,你不可以像其它字段一样直接在hook中使用SetFieldValue来赋值。
要改变当前记录得State,首先要使Entity可以被编辑,然后通过在hook中执行一个预先定义得action才可以切换当前记录得状态。



© 本文为 懂你SCMLife 共同所有,未经同意,请勿转载 ©如该文侵犯了您的版权,请联系管理员
优惠购买Rational,Telelogic,Hansky产品,企业VIP服务、实施
VIP服务电话:13581809377

TOP

这样子就不能实现,我要实现的 全文修改 的功能

通过状态转换矩阵,状态是固定的,而这个需要把状态重置成原来的状态

其实在数据库中state是一个4位的整型



© 本文为 derdSCMLife 共同所有,未经同意,请勿转载 ©如该文侵犯了您的版权,请联系管理员

TOP

想实现在任一状态都可以修改任意得字段,这个不是不可能得,而是实现起来相当得麻烦。
第一点:你想通过SetFieldValue来修改状态是不可能得。
第二点:想要实现全文修改得功能,俺想你就不能用behaviors里直接设置字段属性来做,就必须通过Hook来控制。只有这样才能让部分特权用户可以全文修改。这个可以通过GloableHook来做到。
不知道你有什么新得思路?

© 本文为 懂你 所有,未经同意,请勿转载
©如该文侵犯了您的版权,请联系管理员
优惠购买Rational,Telelogic,Hansky产品,企业VIP服务、实施
VIP服务电话:13581809377

TOP

真想扣楼主的钱,给出问题 最后自己不来收尾!

鄙视一把

© 本文为 奥迪A6 所有,未经同意,请勿转载
©如该文侵犯了您的版权,请联系管理员
----
已经赚取了一个福牛乐乐,有没有可能赚到第二个呢?

TOP

还在想解决的办法,不修改state了。没有结果,怎么关闭这个帖子啊

不用鄙视,实现了变通解决办法,就发帖上来

© 本文为 derd 所有,未经同意,请勿转载
©如该文侵犯了您的版权,请联系管理员

TOP

没有找到修改state的办法,使用下面的方法可以实现全文编辑功能

1、添加 “全文修改”的action,在source state 中选择,您想在那些状态时,可以看到此 action

2、在action 全文修改 的access control中添加如下代码。做用:要求只有"CMO"组里用户才能执行此操作

dim sessionObj
dim userGroups
dim ACL
set sessionObj = GetSession

userGroups = sessionObj.GetUserGroups

ACL = FALSE

If IsEmpty(userGroups) Then

Else
For Each group in userGroups

if group = "CMO" then
ACL = TRUE
end if

Next

end if

if ACL =True then
Defect_AccessControl = TRUE
else

msgbox "您不是配置管理员,无权使用此功能!"
Defect_AccessControl = FALSE
end if

3、在action 全文修改 的Initialization中添加如下代码。功能:遍历所有字段,除了原先为 MANDATORY不改变外,其他都改变为OPTIONAL



set sessionObj = GetSession
fieldNameList = GetFieldNames

For Each fieldName in fieldNameList
fieldReq = GetFieldRequiredness(fieldName)
if fieldReq = AD_MANDATORY Then
j=j+1
else
SetFieldRequirednessForCurrentAction fieldName, AD_OPTIONAL
End If

Next

[ 本帖最后由 derd 于 2006-10-18 01:44 编辑 ]


最佳答案
该回答被楼主/管理员列为正解!
本帖最近评分记录
  • 懂你 金钱 +40 能灵活的解决问题,解决方法也很独特,加 ... 2006-10-18 11:29

© 本文为 derd 所有,未经同意,请勿转载
©如该文侵犯了您的版权,请联系管理员

TOP

发新话题