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

如何将Camunda服务任务结果传入表单及camForm.variableManager未定义问题咨询

问题修复与实现方案

1. camForm.variableManager返回undefined的根因

你在事件回调外部直接获取camForm.variableManager时,camForm实例还未完成初始化,变量管理器尚未挂载,所以返回undefined,所有变量操作都要放到对应的生命周期回调中执行。

2. 修正后的表单脚本

<script cam-script type="text/form-script">
    var jobRequestInfo = $scope.jobRequestInfo = {};
    // 表单加载完成后先声明要拉取的变量,避免默认只拉取表单直接绑定的变量
    camForm.on('form-loaded', function() {
        camForm.variableManager.fetchVariable('a');
        // 如果是多值服务结果变量,也在这里提前声明拉取
        camForm.variableManager.fetchVariable('serviceResultList');
    });
    camForm.on('variables-fetched', function() {
        // 此时变量已拉取完成,可正常读取
        const variableA = camForm.variableManager.variableValue('a');
        console.log('变量a的值:', variableA);
        // 读取多值服务结果绑定到scope,供表单选择
        $scope.serviceResultList = camForm.variableManager.variableValue('serviceResultList');
        // 绑定用户选择的最优值变量
        $scope.selectedBestValue = null;
        // 表单提交时把选中值写回流程变量
        camForm.on('submit', function() {
            camForm.variableManager.variable('selectedBestValue', $scope.selectedBestValue);
        });
    });
</script>

3. 跨池消息传递变量注意事项

你当前的消息关联表达式已经正确设置了变量a,只需确认两个点:

  • 消息名称changerequirement和池B的消息启动事件/消息接收事件的名称完全匹配
  • 如果要传递多值服务结果,直接在setVariable里传入数组/对象即可,Camunda支持自动序列化复杂类型为流程变量
${execution.getProcessEngineServices().getRuntimeService()
  .createMessageCorrelation("changerequirement")
  .setVariable("a", 1)
  // 示例:传递多值服务结果
  .setVariable("serviceResultList", 执行服务返回的多值结果对象)
  .correlateWithResult()}

4. 最优值选择表单示例

在表单HTML部分添加选择组件,绑定scope变量即可实现用户选择能力:

<div class="form-group">
  <label>请选择最优结果</label>
  <select class="form-control" ng-model="selectedBestValue" 
          ng-options="item.value as item.desc for item in serviceResultList" required>
    <option value="">请选择</option>
  </select>
</div>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 01:15:04