活动图仿真中如何更新sum变量并获取动作的标签值i?
活动图仿真中更新上下文变量的建模方案
核心问题定位
你遇到的关键问题是不透明动作脚本里的this指向执行脚本本身,而非动作实例,导致无法直接获取动作的i标签值。
可行解决方案
1. 正确获取当前动作实例(Groovy示例)
在不透明动作的脚本中,通过getContext().getSelf()拿到当前执行的动作对象,再获取标签值:
def currentAction = getContext().getSelf() def iValue = ALH.getTagValue(currentAction, "i") sum = sum + iValue
2. 规范建模:用输入引脚传递参数
放弃依赖标签值,改用UML标准的输入引脚传递i值,更直观且易维护:
- 给每个动作添加类型为
int的输入引脚,命名为i - 建模时给每个动作的
i引脚直接赋值(比如action1设为2,action2设为3) - 不透明动作脚本中直接引用引脚变量:
sum = sum + i
3. 上下文变量访问确认
确保sum是上下文块的实例变量,若脚本中直接访问sum失效,可通过以下方式明确获取:
def contextObj = getContext().getContextObject() contextObj.sum = contextObj.sum + iValue
最佳实践
- 优先用引脚传递参数:标签多用于元数据描述,引脚是UML活动图传递数据的标准方式,可读性和可维护性更强
- 避免模糊的
this引用:明确通过getContext()系列方法获取目标对象 - 仿真前验证参数赋值:确认动作的
i值(标签或引脚)和上下文sum的初始化状态,避免计算异常
内容的提问来源于stack exchange,提问作者xy3333
相关产品推荐
相关产品推荐

