camunda - 如何以嵌入式形式访问流程变量
问题描述
我想以嵌入式形式访问流程变量,但我无法这样做。我浏览了 https://docs.camunda.org/manual/7.8/reference/embedded-forms/javascript/examples/ 上的文档以及 https://github.com/camunda/camunda-bpm-上的示例examples/tree/master/usertask/task-form-embedded-serialized-java-object我想我掌握了它,但是下面的代码不起作用,即使它看起来是 1:1 与文档。
也许问题是我试图访问的变量是 LinkedHashMap(mVariables = ['something': 'foo']
在 Groovy 中创建)
以下代码片段在 Camunda 任务列表中没有显示任何内容。
<form role="form" name="form" xmlns="http://www.w3.org/1999/html">
<script cam-script type="text/form-script">
camForm.on('form-loaded', function() {
camForm.variableManager.fetchVariable('mVariables');
});
camForm.on('variables-fetched', function() {
$scope.mVariables= camForm.variableManager.variable('mVariables').value;
});
</script>
<h1>{{mVariables.something}}</h1>
<p ng-bind="mVariables.something"></p>
<form>
任何人都可以提供一个读取 LinkedHashMap 过程变量的最小工作示例吗?
解决方案
实际上,LinkedHashMap 不能像我建议的那样通过。它写在本文档站点顶部的灰色框中:https ://docs.camunda.org/manual/7.8/reference/embedded-forms/java-objects/
我通过将 Map 拆分为单独的变量来解决我的问题,然后可以以嵌入式形式读取这些变量,如下所示:
<form role="form" name="form" xmlns="http://www.w3.org/1999/html">
<script cam-script type="text/form-script">
camForm.on('form-loaded', function() {
camForm.variableManager.fetchVariable('mVariableFoo');
camForm.variableManager.fetchVariable('mVariableBar');
});
camForm.on('variables-fetched', function() {
$scope.mVariableFoo = camForm.variableManager.variable('mVariableFoo').value;
$scope.mVariableBar = camForm.variableManager.variable('mVariableBar').value;
});
</script>
<h1>{{mVariableFoo}}</h1>
<p>{{mVariableBar}}</p>
<form>
推荐阅读
- ffmpeg - ffmpeg 输出无法在多个设备上播放
- jmeter - __FileToString 方法在请求失败的 Http 请求正文中添加一些垃圾字符串“# JMeter 生成的头文件”
- c++ - 有条件地删除 C++ 单链表中的元素
- javascript - 查找 JS 数组中的最大数并返回变量名
- swift - 添加换行符后 UITextView 高度变为可滚动
- mysql - HMAC SQL Server 转 MySQL 功能
- java - 在 java 中使用日志记录附加程序时无法查看堆栈驱动程序上的日志
- r - 寻找 R RegEx 代码以删除以 结尾的字符串中的单词:
- swift - Swift - 从 UIColor 转换为字符串时,UIColor.black 使应用程序崩溃
- c# - 如何在Unity3D中获取触摸板的绝对位置/触摸板上的触摸位置