@bpmn-io/可变反应器
扩展名 日记 使图表的数据模型可供其他组件使用.
[注] 截至版本
v3此库既会显示书面变量, 也会显示所消耗的变量, 您可以通过选项过滤它们 .
使用量
要将变量解析器添加到您的应用程序中, 请添加到您的 bpmn- js 配置中 :
import BpmnModeler from 'bpmn-js/lib/Modeler';
import ZeebeModdle from 'zeebe-bpmn-moddle/resources/zeebe.json';
import {
ZeebeVariableResolverModule, // For Camunda 8 diagrams
// CamundaVariableResolverModule // for Camunda 7 diagrams
} from '@bpmn-io/variable-resolver';
const modeler = new BpmnModeler({
container: '#canvas',
additionalModules: [
ZeebeVariableResolverModule
],
moddleExtensions = {
zeebe: ZeebeModdle
}
});
获取变量
使用 variableResolver 服务 :
const variableResolver = modeler.get('variableResolver');
const elementRegistry = modeler.get('elementRegistry');
// retrieve variables relevant to an element
const task = elementRegistry.get('Task_1');
// default: variables relevant to <task> in its visible scopes
await variableResolver.getVariablesForElement(task);
// variables read by <task> only
await variableResolver.getVariablesForElement(task, {
read: true,
written: false
});
// all variables written by <task>
await variableResolver.getVariablesForElement(task, { written: true, read: false });
// local variables only (scope === queried element)
await variableResolver.getVariablesForElement(task, {
local: true,
external: false
});
// non-local variables only (scope !== queried element)
await variableResolver.getVariablesForElement(task, {
local: false,
external: true
});
// retrieve all variables defined in a process
const processElement = elementRegistry.get('Process_1');
// returns all variables for the process (unfiltered), for local processing
await variableResolver.getProcessVariables(processElement);
getVariablesForElement(element, options) 支持五个过滤开关:
| 选项 | 默认 | 说明 |
|---|---|---|
read | true | 包含被询问元素所消耗的变量 |
written | true | 包含被询问元素写入/创建的变量 |
local | true | 包含本地变量到被询问元素范围 |
external | true | 包含被询问元素范围以外的变量 |
outputMappings | true | 计算输出映射为已读 |
添加可变提取器
要添加自己的变量,请扩展 variableProvider 课在您的扩展。 它只需要执行 getVariables 方法,它以一个元素为参数,并返回要添加到元素范围的变量。 该函数可以是同步的.
// MyExtension.js
import VariableProvider from '@bpmn-io/variable-resolver/lib/VariableProvider';
class MyCustomProvider extends VariableProvider {
getVariables(element) {
const variables = [
{
name: 'myVariable',
type: 'String',
info: 'This is a global variable'
}
];
if (is(element, 'bpmn:Process')) {
return variables;
}
}
}
export const MyExtension = {
__init__: [
'myCustomProvider',
],
myCustomProvider: [ 'type', MyCustomProvider ],
};
高级使用大小写
默认, getVariablesForElement 财务报告和审定财务报表 getProcessVariables 将同名和同范围的变量合并成一个——条目结构和类型在合并代表中混合.
合并变量额外曝光 variants,每个写入元素一个。 每一个变体的形状都像一个变量,只描述其单子贡献的价值 origin数字 :
/**
* variable = {
* name: 'myVariable',
* type: 'Number|String',
* origin: [ 'Task_1', 'Task_2' ],
* variants: [
* { name: 'myVariable', type: 'String', origin: [ 'Task_1' ], ... },
* { name: 'myVariable', type: 'Number', origin: [ 'Task_2' ], ... }
* ],
* ...
* }
*/
在某些情况下,您可能想要访问原始数据,例如运行 Lint 规则以检测提供者之间潜在的计划不匹配. 你用这个就可以了 getRawVariables数字 :
const variableResolver = modeler.get('variableResolver');
const raw = await variableResolver.getRawVariables();
/**
* raw = {
* 'Process_1': [
* {
* name: 'myVariable',
* type: 'String',
* scope: 'Process_1',
* origin: [ 'Task_1' ]
* },
* {
* name: 'myVariable',
* type: 'Number', // Same Variable with different types
* scope: 'Process_1',
* origin: [ 'Task_2' ]
* }
* ]
* }
*/
发展
通过安装所有依赖来准备工程 :
npm install
然后,以下列例子起首:
npm start
许可证
麻省理工学院