核心层. Semver at 1.0:没有大放送,没有突破. 见 产品级。 。 。 .
概览
@bpmnkit/feel 执行 DMN 决策表和 BPMN 条件表达式中使用的感受表达式语言,并通过 2 053 个感受中1 941个 DMN TCK 电话 (94.5%)——其余病例及其原因列于 tests/tck.test.ts它执行 Camunda 8 的扩展,也用于感觉,并匹配 Camunda 感知文件中378个可重复的例子中的375个(tests/camunda-parity.test.ts) (中文(简体) ). 它包括一个活化剂,递归-后世解析器,AST评价器,formatter,和语法亮点.
特征
- 完全感觉语法 ——算术,比较,逻辑,函数调用,路径,过滤器
- 时间类型 ——日期,时间,日期,期限(ISO 8601,全谱遵守)
- 一次性测试 —— DMN 输入表达式语法 (
> 5, (中文(简体) ),"gold", "silver", (中文(简体) ),[1..10](中文(简体) ) - 内设职能 101感函数(字符串、列表、数字、日期、上下文、范围),包括 Camunda 扩展(
assert, (中文(简体) ),partition, (中文(简体) ),to json, (中文(简体) ),fromAi, (...) (中文(简体) ) - 区域表达式 —— 说
[1..10], (中文(简体) ),(0..1), (中文(简体) ),[today..end] - 上下文文字 —— 说
{ key: value, nested: { x: 1 } } - 语法突出显示 ——编辑语义符号分类
- 零依赖关系
安装
npm install @bpmnkit/feel
快速启动
评估表达式
import { parseExpression, evaluate } from "@bpmnkit/feel"
const parsed = parseExpression("amount * 1.2 + fee")
if (!parsed.errors.length) {
// `evaluate` takes an EvalContext — variables live under `vars`.
const result = evaluate(parsed.ast!, { vars: { amount: 100, fee: 5 } })
console.log(result) // 125
}
评估无效测试( DMN 输入表达式)
import { parseUnaryTests, evaluateUnaryTests } from "@bpmnkit/feel"
// Does input value match any listed condition?
const parsed = parseUnaryTests('"gold","silver"')
const matches = evaluateUnaryTests(parsed.ast!, "gold", { vars: {} })
console.log(matches) // true
语法突出显示
import { annotate, highlightToHtml } from "@bpmnkit/feel"
// Classified tokens, for an editor to style itself.
annotate("x > 1")[0] // { kind: "variable", value: "x", start: 0, end: 1 }
// Or the same tokens already wrapped in <span class="feel-…"> elements.
highlightToHtml('if x > 10 then "high" else "low"')
API 参考
| 导出 | 说明 |
|---|---|
parseExpression(src) | 解析感觉表达式 ~ ParseResult |
parseUnaryTests(src) | 解析非常规测试 • ParseResult |
evaluate(ast, ctx) | 评估解析表达式; ctx 实值 { vars } |
evaluateUnaryTests(ast, input, ctx) | 对照非必要测试的测试输入 |
formatFeel(node, opts?) | 不错的打印 a 解析节点文本 |
highlightToHtml(src) | 包裹在纸上 <span class="feel-…"> 要素 |
highlightFeel(src) | 别名 highlightToHtml |
tokenize(src) | 原始令牌流 |
annotate(src) | 为突出显示而分类的指针(kind, (中文(简体) ), value, (中文(简体) ), start, (中文(简体) ), end(中文(简体) ) |
解析结果
interface ParseResult {
ast: FeelNode | null
errors: ParseError[] // { message, start, end }
}
相关软件包
| 软件包 | 说明 |
|---|---|
@bpmnkit/core | BPMN/DMN/Form 剖析器,构建器,布局引擎 |
@bpmnkit/canvas | 零依赖 SVG BPMN 查看器 |
@bpmnkit/editor | 全功能交互式 BPMN 编辑器 |
@bpmnkit/engine | 用于测试和演示的轻量级 BPMN 流程模拟器 |
@bpmnkit/plugins | 34个可堆肥画布插件 |
@bpmnkit/api | Camunda 8 REST API TypeScript 客户端 |
@bpmnkit/ascii | 作为 Unicode ASCII 艺术的 Render BPMN 图表 |
@bpmnkit/markdown | Markdown中的 BPMN 图表—— 注释、 标记下和 README 预发 |
@bpmnkit/docspack | 不丹 Kit Docs 作为AI 代理的离线文件包 |
@bpmnkit/camunda-docspack | Camunda 8 个文件作为AI 代理的离线文件包 |
@bpmnkit/ui | 共享设计符和UI组件 |
@bpmnkit/profiles | CLI 代理共享认证、 配置文件存储和客户端工厂 |
@bpmnkit/operate | Camunda集群的监测与业务前端 |
@bpmnkit/connector-gen | 从 OpenAPI 规格生成连接器模板 |
@bpmnkit/connectors | Camunda 8 OOTB 连接器目录和确定模板应用程序 |
@bpmnkit/cli | Camunda 8 命令行接口( casen) |
@bpmnkit/proxy | 本地 AI 桥和 Camunda API 代理服务器 |
@bpmnkit/patterns | BPMNKit AIKit 域进程模式 |
@bpmnkit/reebe-wasm | WebAssembly BPMN 浏览器模拟引擎 |
@bpmnkit/worker-client | 独立工人的Thin Zeebe REST客户端 |
@bpmnkit/flow | 源自BPMN、工作类型和工人的代码第一持久流动 |
@bpmnkit/user-tasks | Camunda 8 可嵌入的用户任务部件 |
@bpmnkit/cli-sdk | 为 casen CLI 创建 SDK 插件 |
@bpmnkit/create-casen-plugin | 脚手架, 在秒内新建一个 clin CLI 插件 |
@bpmnkit/casen-report | 来自 Camunda 8 事件的 HTML 报告和 SLA 数据 |
@bpmnkit/casen-worker-http | 示例 HTTP 工人插件 – 用活的 JSONPlaceholders API 数据完成工作 |
@bpmnkit/casen-worker-ai | AI任务工作人员——分类、总结、提取和决定使用克洛德 |
许可证
麻省理工学院 BPMN Kit—— 制片人: u11g (单位:千克)