You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Cameo中通过对象流传输多数据并在不透明动作/决策中访问

在Cameo Systems Modeler 2021x UAF可执行模型中实现动作间数据交互与修改的解决方案

针对你遇到的三个具体问题的解决方法:

1. Datatype实例属性提取返回Undefined

Cameo的不透明动作(JavaScript脚本)中,不能直接用input.P1的方式访问模型实例的属性,需要调用UML API的getValue()方法。修改动作体为:

x = input.getValue("P1");

同时要确认:

  • 输入引脚"input"已正确绑定到你创建的Datatype实例对象,而非Datatype类型本身;
  • Datatype的属性名称"P1"拼写完全一致(区分大小写)。

2. 数组输出被拆分、字符串类型判断失效

  • 数组输出问题:首先给输出引脚设置数组类型(比如String[*]、Integer[*]或Any[*],如果是混合类型),然后在动作体中用NativeArray创建符合类型要求的数组:
    result = new NativeArray(["Test", 1]);
    
    若输出引脚类型设为Any[*],就能完整返回混合类型数组,不会被拆分为单个输出。
  • 字符串类型判断:不要依赖传输格式,直接用模型API判断类型:
    if (input.isKindOf(String)) {
      // 处理字符串逻辑
    }
    
    或者用JavaScript原生的类型判断(针对原生值):
    if (typeof(input) === 'string') {
      // 处理字符串逻辑
    }
    

3. NativeArray访问返回对象名称首字母

NativeArray是Cameo封装的Java数组对象,不能用JS原生的input[0]语法访问元素,需要调用get()方法:

x = input.get(0);

这样就能正确获取数组的第一个元素,而非对象toString()结果的字符。

整体流程建议

  1. 先定义一个包含MissionName(String)、MissionValue(Integer)、TaskName(String)的复合Datatype,直接封装用户输入的三组值,避免用数组传输混合类型数据,降低处理复杂度;
  2. 在不透明动作中用getValue()方法提取属性值,进行决策判断;
  3. 修改数据后,同样用setValue()方法更新实例属性:
    input.setValue("MissionValue", input.getValue("MissionValue") + 50);
    

内容的提问来源于stack exchange,提问作者Tom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 09:02:32