Easy-Flows - Java的简单愚蠢的工作流引擎

article/2025/10/24 2:49:15

The simple, stupid workflow engine for Java

  • 源代码名称:easy-flows
  • 源代码网址:http://www.github.com/j-easy/easy-flows
  • easy-flows 源代码文档
  • easy-flows 源代码下载

Git URL

git://www.github.com/j-easy/easy-flows.git

Git Clone 代码到本地

git clone http://www.github.com/j-easy/easy-flows

Subversion 代码到本地

$ svn co --depth empty http://www.github.com/j-easy/easy-flows
Checked out revision 1.
$ cd repo
$ svn up trunk

最新新闻

12/03/2020:第2个版本的新增了一个 WorkContext(工作上下文信息),类似于Bus总线思路,所有节点都可以共享 WorkContext 信息。

什么是容易流?

轻松流是Java的工作流引擎。 它提供简单的api和构建块,以方便创建和运行可以组合工作流。

简单流程中的工作单元由 Work 接口表示。 工作流由 WorkFlow 接口表示。 轻松流提供 WorkFlow 接口的4实现:

这些是你需要知道的唯一基本流,以便开始创建简单流程的工作流。 你不需要学习复杂的符号或者概念,只是一些简单易于思考的自然 api。

它是如何工作的?

首先,让我们写一些Work:

class PrintMessageWork implements Work {private String message;public PrintMessageWork(String message) {this.message = message;}public String getName() {return "print message work";}@Overridepublic WorkReport call(WorkContext workContext) {System.out.println(message);return new DefaultWorkReport(WorkStatus.COMPLETED, workContext);}
}

这里工作单元将给定消息打印到标准输出。 现在假设我们想创建以下工作流:

  • 打印"foo"三次
  • 然后并行打印"hello""world"
  • 如果"hello""world"都已经成功打印到控制台,则打印"ok",否则打印"nok"

这里工作流可以如下所示:

  • flow1 是 work1的 RepeatFlow,它打印"foo"三次
  • flow2 是 work2 和 work3 ParallelFlow,它并行地打印"hello""world"
  • flow3 是一个 ConditionalFlow,它先执行 flow2 ( 工作流也是工作),如果 flow2 完成,则执行 work4,否则将分别打印“ok”“nok”
  • flow4 是一个 SequentialFlow 它执行 flow1,然后按顺序执行 flow3

通过轻松流,可以使用以下代码段实现这里工作流:

PrintMessageWork work1 = new PrintMessageWork("foo");
PrintMessageWork work2 = new PrintMessageWork("hello");
PrintMessageWork work3 = new PrintMessageWork("world");
PrintMessageWork work4 = new PrintMessageWork("ok");
PrintMessageWork work5 = new PrintMessageWork("nok");ExecutorService executorService = Executors.newFixedThreadPool(2);
WorkFlow workflow = aNewSequentialFlow() // flow 4.execute(aNewRepeatFlow() // flow 1.named("print foo 3 times").repeat(work1).times(3).build()).then(aNewConditionalFlow() // flow 3.execute(aNewParallelFlow(executorService) // flow 2.named("print 'hello' and 'world' in parallel").execute(work2, work3).build()).when(WorkReportPredicate.COMPLETED).then(work4).otherwise(work5).build()).build();WorkFlowEngine workFlowEngine = aNewWorkFlowEngine().build();
WorkContext workContext = new WorkContext();
WorkReport workReport = workFlowEngine.run(workflow, workContext);
executorService.shutdown();

这不是一个非常有用的工作流程,但是只是为了给你一个简单的流程编写工作流。 你可以在中找到关于所有这一切的更多细节。

为什么容易流?

由于缺少一个可以编排 Callable Java对象的简单开源工作流引擎,因这里创建了简单流程。 为什么每个工作流引擎都在尝试实现 BPMN? BPMN没有什么问题,但是它并不容易( 538页规范是什么)? )。对于 BPEL插件来说,同样的东西。

目前有好的工作流引擎,但是由于它们试图实现 BPMN,它们并不容易使用,而且常常被误用。 大多数的BPMN概念对于许多应用都不是必需的,在重引擎之上构建这样的应用程序是不有效的。

简单流程尝试提供简单的自然api替代方法,以及大多数小型/中小型应用程序的基本流。 如果你的业务流程需要一个 for,那么简单的流程可以能不是你的选择。


http://chatgpt.dhexx.cn/article/XRJOn1qJ.shtml

相关文章

Flowable工作流引擎

Flowable工作流引擎 Flowable-基础篇(根据BV1Pb4y1p7Ku整理) 一、简介 Flowable是BPMN的一个基于java的软件实现,不过Flowable不仅仅包括BPMN,还有DMN决策表和CMMN Case管理引擎,并且有自己的用户管理、微服务API等一系列功能,…

Java工作流引擎

Java工作流引擎有很多,有免费和商业的 主流免费:Activiti和Flowable Activiti和Flowable都是来自于一个叫JBPM的开源工作流。在早期Jboss发行JBPM4的时候,因为合作伙伴关系闹的不开心。于是其中一个核心人员离职。加入了Alfresco(Activiti所…

工作流引擎技术选型

一、主流开源框架介绍 1、工作流相关文档 1.Camunda 官方文档:https://camunda.com/ 中文文档:介绍 | docs.camunda.org 2.Activiti 官方文档:https://www.activiti.org/ 中文文档:[activiti6用户手册 3.Snaker 官方文档&…

Java开源工作流引擎 介绍

Java开源工作流引擎 http://www.open-open.com/08.htm 身为拿来主义者, 很好的吸取经验才是我们的目的! Willow 由Huihoo Power开发详细可到其中文主页查看。 更多Willow信息 OpenWFE OpenWFE是一个开放源码的Java工作流引擎。它是一个完整的业务处理…

最近进行的一次技术选型(工作流引擎)及相关知识介绍

前言 最近有个新项目,需要实现类似工作流引擎的效果,如果不知道是啥,看完本文就懂了。 公司内其实也有些自研的,可能就是不像开源的这些那样,还支持这个那个规范,都是基于需求定制开发的,扩展…

java工作流引擎(j-roadflow)快速入门教程

使用j-roadflow java工作流引擎创建一个流程分为两个步骤,创建表单和创建流程。 一、创建表单。 在流程管理--表单管理下点新建表单即开始创建一个新的表单: 点击之后打开表单设计器并弹出表单属性设置: 表单名称:为您新建的表单…

为什么使用工作流引擎,什么是工作流引擎,工作流引擎选型以及如何使用

文章目录 为什么使用工作流引擎?不使用工作流存在以下问题工作流优缺点 什么是工作流引擎尝试自己构建工作流引擎有哪些选型方案呢基于bpmn标准进行流程定义国产自定义 如何使用SnakerFlow工作流以请假流程来看下数据库中数据流转情况初始状态员工发起请假申请 常见…

工作流引擎

1 绪论 【社会上的需求.】 1.1 课题的研究背景 工作流的概念起源于生产组织和办公自动化领域。它是针对日常工作中具有固定程序的活动而提出得一个概念。它的主要特点是使处理过程自动化,通过将工作分解成定义良好的任务、角色,按照一定的规则和过程来执…

LeaRun.Java工作流引擎 快速开发业务流程

工作流引擎是用来开发工作流转的框架。作为应用系统的一部分,能根据角色、分工和条件的不同决定信息传递路由、内容等级等核心解决方案,包含组织结构、流程、节点、转向规则等。 而低代码开发框架,是能够解决一个可以直接在后台配置就可以开…

IBPS java工作流引擎介绍

java工作流引擎是什么?看了这篇文章,相信80%的人都会明白的。IBPS低代码开发平台是近些年流辰信息的主打产品,实践证明,该产品推向市场后,得到了企业信息化部门、各高校、电力等企业的喜爱和支持。本文为大家着重介绍I…

Java开源工作流引擎有什么突出特点?

在高效办公需求日渐增长的当天,如何利用优质软件助力企业提升办公效率,是很多企业一直在寻觅的途径。Java开源工作流引擎可以借助其优势特点助力企业实现标准化发展,高效提高工作效率。那么,Java开源工作流引擎到底有什么用的突出…

后端web开发框架——Spring Boot

为什么使用Spring Boot 简化配置,无需编写太多的 xml 配置文件,效率很高;Spring 可以整合很多各式各样的框架,并能很好的集成;基于 Spring 构建,使开发者快速入门,门槛很低;Spring …

Web前端开发工具和框架

摘要:技术的快速发展让很多人学习起来无所适从,幸运的是,很多优秀的 Web 开发人员和设计人员在努力寻找各种有特色的解决方案。 因此,我们有了很多优秀的小工具和库,每一个都是用来解决特定的问题或维护一组特定的项目…

后端Web开发框架(Java)

本文节选自霍格沃兹测试学院内部教材 Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。讲的通俗一点就是 Spring …

Python中如何选择Web开发框架?

Python开发中Web框架可谓是百花齐放,各式各样的web框架层出不穷,那么对于需要进行Python开发的我们来说,如何选择web框架也就变成了一门学问了。本篇文章主要是介绍目前一些比较有特点受欢迎的Web框架,我们可以根据各个Web框架的特…

移动web开发框架研究

纯粹的总结一下移动web开发框架,移动web开发框架有jQuery Mobile 、Sencha Touch等等,他们都来源于web开发,是成熟的框架,jQuery Mobile出自于jQuery家族,Sencha Touch来自于ExtJS。jQuery Mobile 和Sencha Touch都是比较成熟老牌…

【Web开发】框架篇

前后端分离 为了适应技术和业务发展的需求,采用前后端分离的技术,前端应用和后端应用以JSON格式进行数据交互,采用的解决方案Spring Boot Vue。 单体——> 前端应用 后端应用 前端应用:负责数据展示和用户交互 后端应用&…

Python Web开发框架

一、WEB应用服务的认知 WEB应用服务基于HTTP协议/规范,实现静态资源和动态资源的请求与处理。 静态资源包括:html网页、图片、样式、javascript脚本、视频、音频等等。动态资源包括:通过程序(java/php/python/.net)和…

Web前端开发框架推荐

原本写这篇文章想围绕着 CSS 框架来的,但因为目前界内比较流行并遍地开花的主要还是 JSCSS 模式的框架,并且自己靠着一点 JS 功底,就想专门针对 CSS,所以最后来个大锅乱炖都大致聊聊。下面的框架也没有什么先后顺序之分&#xff0…

Java开源Web框架

URL:http://www.open-open.com/07.htm WebWork 点击次数:18070 WebWork 是由OpenSymphony组织开发的,致力于组件化和代码重用的拉出式MVC模式J2EE Web框架。WebWork目前最新版本是2.1,现在的WebWork2.x前身是Rickard Oberg开发的…