问题标签 [workflow-engine]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
68 浏览

java - java - 除了switch case和if/else之外,如何在java中实现许多条件?

需要实现一个要求,如果使用 switch case 或很多 if/else 实现,代码流将根据很多情况来决定!

要实现的示例代码:

除了 if/else 语句或 switch 案例之外,还有更好的方法来编写此类案例吗?

类似于工作流引擎的内部实现的东西,jBPM但我实际上不能包含工作流引擎,因为它使应用程序变得繁重!

任何建议表示赞赏!

0 投票
1 回答
217 浏览

c# - 如何修复 Autofac - 需要装配资格(我的类型。我的装配)

我使用 Autofac 3.5.with 3 个独立的项目(WorkFlowApp(MVC ASP.Net)、WorkFlowAppBusiness、WorkFlowAppData)进行了依赖反转,但我发生了“找不到类型‘WorkFlowAppData.samplecontext.SampleContext,WorkFlowAppData’。它可能需要组装资格,例如“MyType,MyAssembly”。我该如何解决?] 3 ] 4全球.asaxAutofacConfig[![webconfig[![sampleContext

示例上下文

WorkFlowData 的项目结构

0 投票
0 回答
152 浏览

apache - 如何将 activiti 工作流引擎与 Vertx 集成?

在我们的项目中,我们使用 Vertx并希望使用工作流引擎处理我们的请求,因为我们的请求中有不同的任务。

我浏览了activiti WFE,但只找到了 spring 集成示例。

如何将它与 Vertx 集成?

0 投票
1 回答
517 浏览

json - 具有 React 或 Angular 8 和 typescript 的集成 Rest API (json) BPMN

我需要一个带有 typescript 的 angular 或 react bpmn 库,而 rest api 服务不是 xml 或其他任何东西。也不想将 xml 解析为 json。

对此进行了很多搜索,但我看到了很多限制并且找不到带有 json 服务的 bpmn 库。

我需要通过 json 与后端和 typescript 进行通信的 react 或 angular来制作这样的工作流。

有没有人有这方面的经验? 在此处输入图像描述

0 投票
1 回答
1050 浏览

recommendation-engine - 规则引擎 VS 工作流引擎

我想知道规则引擎和工作流引擎有什么区别。就我而言,我必须自动化票务系统的一些规则。事实上,每张工单都有一个工作流程(打开 -> 进行中 -> 已解决 -> 已关闭)。

0 投票
1 回答
470 浏览

python - 使用 XCOM 中任务的 JSON 表示在 Airflow 中运行时/动态生成任务

我正在评估像 Airflow 这样的框架,它能够在运行工作流时在运行时构建任务的动态图,即在开始工作流之前我不具体了解任务及其依赖关系,我只知道图的级别数。

我开始使用 Airflow,我正在使用 XCom 来保持图表的状态,如下所述: Proper way to create dynamic workflows in Airflow

我还通过在 XCom 行中存储包含任务依赖关系描述的 JSON 片段来扩展这种方法,例如:

请注意,我真的不需要重新运行我的 DAG:我的 DAG 是要在外部安排的,一旦我的第一个 DagRun 完成,之后将不会删除/删除/修改任何新任务。如果需要重新运行,我将创建一个新的 DAG。

我使用的技术如下:我用两个任务创建 DAG,一个是传感器(这保证了 DagRun 始终处于运行状态直到结束)

当传感器推送代表任务及其依赖项的 JSON 文件(这些文件不断出现在一个文件夹中)时,我尝试在 DAG 代码中从 XCom 中提取任务。

我的问题是:Airflow 是这种用例的有效工具吗?或者我是否将其与主要用例相距甚远(即在运行时未生成静态任务的固定工作流)?

这种方法是否可以扩展到数万个 DAG 和数十万个任务?或者是否有任何其他类似的工具可以以更简单的方式实现这一目标?

0 投票
1 回答
128 浏览

java - Java 用户定义流工作流引擎

我试图为用户提供一种方法来生成他们自己的工作流程作为系统的一部分。这些工作流程将是订单将根据客户要求采用的自定义路径。例如:如果客户要求我们签署一组条款和条件,则除非已上传 T&C 文件,否则订单将无法获得批准。

我一直在研究将bpmn-js用于前端并在每次与工作流相关的某些更改时执行输出 BPMN2.0 文件(即,在这种情况下,当文件上传时挂钩)但它看起来不像用户将能够使用该库开箱即用地选择实际的系统功能。我应该尝试扩展该库还是可以使用其他东西来代替?

我也一直在考虑使用Camunda,但最好不要指望用户使用第二个应用程序。

0 投票
0 回答
147 浏览

automation - 什么是协调长时间运行的部署窗口工作流的最佳工具,重点是人工任务

简短的

我期待有关有助于管理主要维护窗口的工具集的建议和经验分享。这个问题的具体内容是关注人工任务(而不是完全自动化的流程)以及拥有丰富 UI 的需求。

问题陈述

如果您通过关键字“BPMN”、“工作流引擎”、“编排”、“任务管理”来搜索软件,您会发现许多解决方案,其中大多数都集中在自动化、编排、业务编排、IT 流程、通常与网络(SDN/VNF 域)和微服务世界中的编排有关,kubernetes/openshift。

但是,如果您想扮演一个“乐队大师”,一个以人为中心的人工任务编排的促进者,以应对长期运行和复杂流程的所有挑战,该怎么办?而且你的团队真的很大,而且路很长。这没有很好地涵盖,或者我正在努力寻找最匹配的内容。

寻求有关此主题的建议。

简化示例

假设我是一名主持人,有一个步骤列表,它可能是纯文本清单或类似 Excel 的形式,甚至是 Microsoft Project 计划。我有一个 100 人的团队,正在等待我的直接指示,例如“嘿,尼克,根据我的任务清单,你的步骤的所有前辈都已完成,现在你可以开始你的任务#xyz,请继续报告对我来说一旦完成”。然后尼克开始做他的工作 - 可能是手动步骤,或者可能开始一些自动化任务,如脚本。与此同时,Mary 可以尽自己的一份力,而其他人则按计划加入。

我需要控制面板或仪表板(监控、日志记录、跟踪)+ Cockpit(操作、干预)之类的东西,所以我清楚地了解谁在做什么,并确保事情按正确的顺序进行,我们都在轨道上. 有什么我不知道的,可能像 Jira + Kanban + Jenkins + "Living MS Project" 这样可以满足下面指定的所有要求?

挑战

我需要执行一个长时间运行(长达 24 小时)的部署窗口(软件维护/交付/推出),并面临以下挑战:

  • 涉及许多不同的团队(IT、DBA、网络等);
  • 可能来自不同的组织(供应商、客户、承包商等……);
  • 通常整个窗口总共有 50-100 多人,轮班工作;
  • 多种通信渠道(电子邮件、即时消息、短信、电话、作战室)
  • 交付包本身的复杂结构(许多模块、依赖项、正确的安装顺序是关键任务),需要不同的程序
  • 总体计划非常庞大 - 500 多个原子步骤,混合了人工任务和自动操作
  • 任务可以按顺序进行,也可以并行进行,具有复杂的依赖关系和限制
  • 任务可以分组,所以流程应该支持子流程模型
  • 支持重试/回滚/故障转移过程
  • 等等……</li>

关于 UI/可视化的一些额外的好功能

  • 进度的可视化(“我们现在在哪里”),直到预测剩余时间,等等……很好的浇头;
  • 临时报告(到目前为止观察到的问题列表,以及解决方案(如果有)或与票务系统的链接,我们是提前还是落后于计划,其他一些指标),导出;
  • 漂亮而丰富的 UI 将非常受欢迎和有用:放大/缩小/概览、折叠/扩展部分;
  • 导航和搜索、标记和标签;
  • 状态,针对就地任务的行动;
  • 不同的表示类型:树、表格、甘特图、普通模式。

目前我在网上找到的解决方案和建议:

  1. 企业级平台:

    • Windows 工作流基础
    • IBM 云编排
    • 谷歌云工作流
    • ...
  2. 开源(免费和付费)+ 他们的扩展(附加组件):

    • 阿帕奇气流;
    • 优步节奏/时间;
    • Camunda/Zeebe(Camunda 的“人工工作流用例”);
    • Pegasus、Prefect、StackStorm 和许多其他通过关键字“BPMN”、“工作流引擎”、“编排”、“任务管理”甚至“以人为本”(imixs-workflow)找到的;
    • ...
  3. 考虑内部工具开发的建议,可能基于开源,可能使用分叉,但最好选择那些允许扩展/插件,可定制架构的工具

0 投票
1 回答
125 浏览

python - 任务不运行 Luigi

我编写了一段简单的代码来运行 Luigi 中的任务。代码如下:

期望:我想运行TaskA,但TaskA需要TaskB和TaskC - > TaskB和TaskC应该在两个任务B,C完成之前和首先运行,然后TaskA可以运行

实际:仅 TaskA 运行。其他任务没有。登录控制台:

我曾经运行的命令

python first_luigi_app.py --local-scheduler TaskA

我不知道我是否错过了一些东西!如果有人可以提供帮助将不胜感激:)

0 投票
0 回答
24 浏览

bpmn - 在 Camunda 上下文中存储和访问嵌套结构

我们当前存储在 Camunda 上下文中的数据由嵌套的 java.util.Maps 组成。以下是我们如何将消息关联到引擎,以及传递上下文:

我们目前面临的问题是如何只更新部分上下文。假设在一个正在运行的进程中,我们有以下上下文:

[:]语法意味着地图。根据我们阅读的内容,库存将作为 LOB 存储在数据库中。有没有办法只更新这个 LOB 的一部分?例如,通过将消息与变量相关联,将百事可乐的数量减少到 1 inventory: [pepsi: ["quantity": 1]]。有效地执行合并而不是替换。有没有办法自定义上下文的更新方式?

我们发现的一种解决方案 1) 或解决方法是展平地图,以便上下文如下所示:

在这种情况下,我们只能直接替换inventory.pepsi.quantity。但是,这带来了以下缺点:

  • 每个正在运行的进程的数据库负载更多,因为每个变量都是单独的行
  • BPMN 中变量的使用更加笨拙,因为我们不能再直接使用inventory.pepsi.price,而必须调用execution.getVariable('inventory.pepsi.price')。

作为一种改进,我们可以引入一个自定义函数,比如说 c,并在表达式中调用它 - ${c('inventory').pepsi.price > 10。这样我们可以保持一个扁平化的上下文,就像在解决方案 1) 中一样,但至少使 bpmn 的使用稍微容易一些。当然,所需的表达式只是${inventory.pepsi.price}.

PS。从 Camunda论坛回复,希望能获得更多关于这个问题的知名度。