Flowable开源版和Flowable商业版有什么区别?

Posted 大龄码农有梦想

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flowable开源版和Flowable商业版有什么区别?相关的知识,希望对你有一定的参考价值。

Flowable除了提供开源版本flowable-engine,它还提供了一系列基于Flowable引擎的快速、现代和完全可定制的企业产品(商业收费):Flowable Work、Flowable Orchestrate和Flowable Engage。Flowable的开源版本和商业版本有什么区别,如何选型?

一、flowable-engine开源版

Flowable项目提供了一组紧凑高效的核心开源业务流程引擎。它们为开发人员、系统管理员和业务用户提供了一个工作流和业务流程管理(BPM)平台。Flowable在闪电般快速、久经考验的动态BPMN、DMN和CMMN引擎上运行,这些引擎都是用Java编写的。他们是Apache 2.0授权的开源软件,拥有一个坚定的社区。Flowable有5、6、7三个系列的版本,最新版本是Flowable-7.0.0-M1,主流版本是Flowable6。

 Flowable引擎都可以嵌入Java应用程序中运行,也可以作为服务器、集群和云中的服务运行。它们可以作为独立的引擎或服务运行,也可以与Spring等应用程序集成,为业务流程管理提供丰富的套件。通过丰富的Java和RESTAPI,它们是编排人工或自动化处理的理想基础。

(1)Process Runtime流程引擎

Flowable流程引擎已经在现实世界中使用了多年,以确保快速、高效和可靠的流程执行。通过其丰富的java和RESTAPI来驱动BPMN引擎,并让它通过丰富的集成功能来驱动您的服务。

(2)Case Runtime案例引擎

Flowable案例引擎使用与流程引擎相同的健壮和久经沙场的体系结构,但有一个专门的数据模型,专门针对CMMN执行进行优化。CMMN引擎提供了丰富的REST和Java API,可在应用程序逻辑中使用。

(3)Rules Runtime规则引擎

Flowable规则或决策引擎使用与其他引擎类似的基础,但有一个专注于优化DMN执行的专用模型。DMN引擎提供了在应用程序逻辑中使用的REST和Java API。

官方网站:https://github.com/flowable/flowable-engine

二、Flowable Orchestrate

Flowable Orchestrate利用一系列一流的开源功能,帮助您的团队驾驭日益复杂的IT环境。它支持端到端的业务自动化,可以处理从直接处理到涉及人员和系统交互的长期场景的一切。Flowable Orchestrate结合了CMMN、BPMN和DMN的强大功能,使您的团队能够创建高效的工作流程,自动化复杂的任务,协调您的业务环境,并从领先的开源平台部署先进的端到端流程自动化解决方案。

Orchestrate(编排)是Flowable Orchestrate版本的核心功能和定位,支持协调多个用例中人员和服务之间的数据流,从订单管理和供应到数据管道和索赔处理。通过基于开放标准的自动化模型,Flowable Orchestrate可以使用API,并可以提供具有微服务协调的解决方案。

Flowable Orchestrate涉及到如下模型概念和功能:

(1)Process流程

使用Flowable Orchestrate,您可以将业务流程标准化、自动化和数字化,以提高生产力并增加实现价值的时间。将客户旅程和直通流程直接映射到流程模型中,根据需要与其他系统和服务集成,并通过流程流收集和连接您的业务数据。

(2)Case案例

Flowable Orchestrate的高级案例管理功能擅长于对复杂的业务场景进行建模,使团队能够以高度的灵活性轻松管理非结构化、多参与者和不可预测的情况。案例可以描述不同环境中可用的行动和活动的后果,例如处理来自物联网设备的警报以进行人工或系统调解。

(3)Decision决策

决策管理对于在流程或案例中建立业务规则至关重要。通过Flowable Orchestrate,我们为您提供了一套全面的数字工具,帮助您的团队建模动态和复杂的场景,以满足您的业务需求。

(4)Events事件

FlowableOrchestrate可以创建模型,定义如何将低级事件映射到高级业务事件。然后,这些事件可以在整个案例和流程模型中使用,因此即使需要更改小细节,您的业务自动化模型也保持一致。

官方网站:https://www.flowable.com/product/orchestrate

三、Flowable Work

Flowable Work是一个商业收费版本,定位Low-Code Intelligent Automation(低代码智能自动化),是一个云上SaaS化平台,可以开通即用。Flowable Work是一个完整的、低代码的智能自动化平台。它建立在我们引擎的开源版本上,但通过将三个开放标准BPMN、CMMN和DMN的强大功能与低代码功能相结合,将业务流程管理提升到了一个新的水平。

Flowable Work是一个功能强大的低代码自动化平台,旨在帮助您更快地构建和部署企业业务应用程序,在释放业务价值的同时节省时间和资源。Flowable Work结合了CMMN、BPMN和DMN的力量,使您的团队能够创建高级高效的工作流程  自动化业务的各个方面,从简单的重复任务到最复杂和动态的场景。 

包含的核心功能有:

(1)Flowable Design流程设计

使用易于使用的低代码设计和编辑工具,快速建模任何业务流程或案例。使用我们简单的拖放功能和动态可视化编辑器,快速创建模型和工作流,以满足您的业务自动化需求,并可在团队之间轻松共享和重用。

(2)Flowable Work流程管理

轻松管理复杂的业务工作流,并使用一个将流程和案例模型变为现实的单一平台将客户和员工连接起来。自定义应用程序UI,启动流程或案例,跟踪进度,管理任务,以及在系统和人员之间交换和控制信息流,同时保持完全安全和合规。

(3)Flowable Inspect流程仿真

在Flowable Work界面中使用独特的调试和测试工具,快速了解案例和流程的执行情况。探索现有工作的状态,以确保质量,并创建自动化和可重复的测试运行,模拟用户和系统输入,为预期行为构建验证套件。

(4)Flowable Control流程监控

监控运行时引擎的每一个细节,识别和解决流程或数据输入错误的问题,并将实例迁移到更新的模型定义中。查看使用对系统性能和恢复力的影响的全貌。

(5)Low-Code低代码

多建模,少编码。使用低代码可以更快地释放价值,提高生产力和协作能力。在不影响质量、安全性和法规遵从性标准的情况下快速开发和部署业务应用程序。

官方网站:https://www.flowable.com/product/work

四、Flowable Engage

Flowable Engage定位于消息通信和多媒体集成。Flowable Engage允许您使用客户已经熟悉和喜爱的聊天应用程序与客户进行无摩擦的对话。通过WhatsApp、微信、Line等实时提供量身定制的支持,全面了解案件管理和决策的所有渠道。与您的客户实时共享任何类型的媒体,以创造更好的体验。Flowable Engage支持使用文本消息、音频、视频以及图像、文件和文档共享。这里不展开描述,详细请看官方网站:https://www.flowable.com/product/engage

五、Flowable各版本功能差异

Flowable开源版本flowable-engine,仅仅提供了流程引擎功能,其它功能需要用户自行扩展开发。比如:高可用、水平扩展能力不支持。

Flowable Orchestrate除了支持Flowable开源版本的功能,还支持Automation Models、Case & Process Instances、High Availability & Scalability等功能。

Flowable Work是一个功能强大的低代码自动化平台。它建立在我们引擎的开源版本上,但通过将三个开放标准BPMN、CMMN和DMN的强大功能与低代码功能相结合,将业务流程管理提升到了一个新的水平。  Flowable Work是一个基于SaaS化的商业收费版本。

Flowable开源版、Flowable Orchestrate、Flowable Work商业版具体功能差异区别见下表:

 官方地址:https://www.flowable.com/pricing

flowable 新的驳回方式 ChangeActivityStateBuilder

6.4.0 新增加了驳回的方式,真是对中国式流程的一种福音呀,感谢flowable创始人。

再也不为开发驳回流程发愁了,网上那些视频和修改源码真的是demo级别的,不能商业用。

只有心如流水的学习才是永远的发电机,不要幻想别人能给把系统都给你做好了。

任何节点都可以跳转

runtimeService.createChangeActivityStateBuilder()
                .processInstanceId(processInstanceId)
                .moveActivityIdsToSingleActivityId("当前的任务的节点id", "需要跳转的目标节点")
                .changeState();

当然有很多方法,大家可以去找一下ChangeActivityStateBuilder这里类。

1. 直接上代码吧,从来都是干货,不隐藏,哈哈。

public ReturnVo<String> backToStep(BackVo backVo) throws Exception {
        ReturnVo<String> returnVo = new ReturnVo<>(FlowConstant.SUCCESS, "OK");
        Task task = taskService.createTaskQuery().taskId(backVo.getTaskId()).singleResult();
        String processInstanceId = task.getProcessInstanceId();
        FlowElement distActivity = processDefinitionUtils.findFlowElementById(task.getProcessDefinitionId(), backVo.getDistFlowElementId());
        //1. 保存任务信息
        task.setAssignee(backVo.getUserCode());
        taskService.saveTask(task);
        //2. 如果上一个节点是提交者的话要处理一下
        if (FlowConstant.FLOW_SUBMITTER.equals(distActivity.getName())) {
            //查找发起人 设置到变量中,以便驳回到提起人的时候能留在提交人这个节点
            ExtendProcinst extendProcinst = this.extendProcinstService.findExtendProcinstByProcessInstanceId(processInstanceId);
            String creator = null;
            if (extendProcinst != null) {
                creator = extendProcinst.getCreator();
                if (StringUtils.isBlank(creator)) {
                    creator = extendProcinst.getCurrentUserCode();
                }
            } else {
                ExtendHisprocinst extendHisprocinst = extendHisprocinstService.getExtendHisprocinstByProcessInstanceId(processInstanceId);
                creator = extendHisprocinst.getCreator();
                if (StringUtils.isBlank(creator)) {
                    creator = extendHisprocinst.getCurrentUserCode();
                }
            }
            if (StringUtils.isNotBlank(creator)) {
                runtimeService.setVariable(processInstanceId, FlowConstant.FLOW_SUBMITTER_VAR, creator);
            }
        }
        List<Task> tasks = taskService.createTaskQuery().processInstanceId(processInstanceId).list();
        List<String> currentActivityIds = new ArrayList<>();
        tasks.forEach(t -> currentActivityIds.add(t.getTaskDefinitionKey()));
        //3. 删除节点信息
        if (!(distActivity instanceof EndEvent)) {
            this.deleteHisActivities((Activity) distActivity, processInstanceId);
        }
        //4. 添加审批意见和修改流程状态
        this.addCommentAndUpdateProcessStatus(backVo, processInstanceId);
        //5.执行驳回操作
        runtimeService.createChangeActivityStateBuilder()
                .processInstanceId(processInstanceId)
                .moveActivityIdsToSingleActivityId(currentActivityIds, backVo.getDistFlowElementId())
                .changeState();
        return returnVo;
    }

2. 经测试  多实例节点,并行网关,判断网关都没有问题,甚至是子流程的一种节点跳转都有相应的方法

具体怎么使用可以去看官方的测试用例

技术分享图片

 

以上是关于Flowable开源版和Flowable商业版有什么区别?的主要内容,如果未能解决你的问题,请参考以下文章

Flowable入门系列文章18 - 部署Flowable

camunda区分不同类型待办

一文看懂开源工作流引擎 Flowable

Flowable 实战

[1]工作流框架:Flowable基本安装

哪个开源工作流引擎更好?Flowable or Camunda ?