精华内容
下载资源
问答
  • 最近在写Flowable实战一书,刚好写到了在userTask上加任务监听器,然而通常情况下实现类注入的bean一直为null,解决方案如下: 1、流程定义xml中的任务监听器,使用delegateExpression表达式将所使用的任务监听器...

    最近在写Flowable实战一书,刚好写到了在userTask上加任务监听器,然而通常情况下实现类注入的bean一直为null,解决方案如下:

     

    1、流程定义xml中的任务监听器,使用delegateExpression表达式将所使用的任务监听器关联起来

    <userTask id="test" name="测试" flowable:assignee="${applyUserId}" flowable:formKey="testForm">
          <extensionElements>
            <!-- <flowable:taskListener event="create" class="cn.flowable.listener.MyListener"></flowable:taskListener> -->
            <flowable:taskListener event="create" delegateExpression="${myListener}"></flowable:taskListener>
            <modeler:initiator-can-complete xmlns:modeler="http://flowable.org/modeler"><![CDATA[false]]></modeler:initiator-can-complete>
          </extensionElements>
        </userTask>

    2、自己的任务监听器实现类需要实现org.flowable.engine.delegate.TaskListener类,通过   @Component(value="myListener")  注解将我的监听器交给spring管理,其中value的值和xml中delegateExpression表达式中变量的值保持一致

    @Component(value="myListener"

    public class MyListener implements TaskListener {


    @Autowired
    private BusLineService busLineService;
      
    @Override
    public void notify(DelegateTask delegateTask) {
    //写自己具体的逻辑

    }

    }
     

    展开全文
  • Flowable实战7-Flowable Modeler集成

    万次阅读 2019-03-10 14:47:52
    Flowable完整源码编译 解压源代码,结果如下 启动idea,配置好maven的路径。单击File->Open,选择上面的根目录打开工程,结果如下: 打开后,按下快捷键Alt+F12,启动Terminal终端,输入命令mvn clean ...

    Flowable完整源码编译
    解压源代码,结果如下

     

    启动idea,配置好maven的路径。单击File->Open,选择上面的根目录打开工程,结果如下:

     

    打开后,按下快捷键Alt+F12,启动Terminal终端,输入命令mvn clean package -DskipTests -Pdeploy -Dmaven.javadoc.skip=true,将会启动编译,根据机器不同一共146个工程,约需要5~10min左右编译时间,编译成功的结果如下图所示:

     

    Flowable编译结果查看
    编译成功后的war包位于app的target目录下面,如modeler的如下图所示:


    Flowable编译结果验证
    简单期间,我们只验证modeler,将idm和modeler的war拷贝到某个目录下面:

     

    然后启动命令行,进入该目录,输入java -jar flowable-idm.war启动flowable-idm.war,idm如下图所示:

     

    modeler如下图所示,输入java -jar flowable-modeler.war完成启动:

    打开chrome浏览器,输入地址http://localhost:8888/flowable-modeler,进入idm的验证页面输入默认密码admin/test就可以进入modeler的验证页面了,如下图所示:

     

    Flowable源码编译的意义
    提供了一个修改的机会,对源码进行一定的定制,满足自己的业务或者别的需求,这个是全部编译,即需要BPM引擎,DMN引擎,TASK服务,CMMN引擎的时候建议采用的方案,后面我们会单独介绍modeler的编译,不依赖idm其他信息
     

    展开全文
  • Flowable实战系列文章

    万次阅读 2018-04-10 12:48:16
  • Flowable实战-Camel使用

    万次阅读 2019-02-20 21:51:02
    本博客将讨论了如何在Flowable 6.4.1中安装和使用Camel。 希望在阅读此博客后,您将能够设置Flowable Task应用程序,以允许用户运行可以通过Camel路由与其他应用程序集成Flowable。 此博客使用Flowable Camel模块中...

        本博客将讨论了如何在Flowable 6.4.1中安装和使用Camel。 希望在阅读此博客后,您将能够设置Flowable Task应用程序,以允许用户运行可以通过Camel路由与其他应用程序集成Flowable。 此博客使用Flowable Camel模块中的示例。

     

    Camel

    Camel是一个apache项目,它是为了让Java应用程序之间提供标准化的集成平台。 它以组件的形式提供传输(端点 endpoints)和企业集成模式(EIPS)的具体实现,以解决集成问题。 然后使用域特定语言(DSL)来创建将传输和EIP连接在一起的路由。 将文件从/ tmp目录加载到内存中,然后将其内容传递到JMS队列。该实例如下所示。

    from (“file:/tmp”).to(“jms:aQueue”)

    Flowable提供了一个Camel Task,当实例到达Camel Task时会调用定义的camel路由。 因此,Camel路由负责执行应用程序集成和处理,而Camel Task实际上只是一种连接到Camel路由或从Camel接收信息的机制。

    Flowable Camel使用

          接下来我要做的事情就是将Camel嵌入到Flowable Task应用程序中。 由于Flowable Task应用程序现在是一个Spring Boot应用程序,我将Camel Spring Starter安装到Flowable Task应用程序中。 我还需要将Flowable Camel模块安装到Flowable Task应用程序中。 Flowable Camel模块为Camel Task提供实现类和配置,以连接到Flowable任务应用程序中。 然后,路由包含与其集成的外部应用程序的端点。 注意:本博客假定您已经在tomcat容器中下载并安装了所有Flowable的应用程序。 下图给出了这种架构的可视化:

    安装Camel

    1. 下载并解压 6.4.1程序包
    2. 在我的例子中,进入到到Flowable UI Task App模块(〜/ workspace / flowable-engine-flowable-6.4.1 / modules / flowable-ui-task / flowable-ui-task-app)。 打开pom.xml并将以下内容添加到依赖项部分。 如下所示:
    <dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-spring-boot-starter</artifactId>
    <version>2.23.0</version>
    </dependency>
    <dependency>
    <groupId>org.flowable</groupId>
    <artifactId>flowable-camel</artifactId>
    </dependency>

    3、从flowable-ui-task-app的根目录使用以下命令构建mvn项目:mvn package install -DskipTests。 我发现我必须跳过测试,因为主应用程序未通过多项测试。

    4、构建成功后,Task应用程序将被打包为target / flowable-task.war。 将新war复制到tomcat webapps目录中(例如cp target / flowable-task.war / opt / tomcat / webapps /。)。 从webapps目录中删除现有的任务app目录(/ opt / tomcat $ rm -Rf webapps / flowable-task)并重启tomcat。

    5、验证您是否可以访问http:// localhost:8080 / flowable-task上的任务应用程序。

    同步方式使用Camel Task

        现在您已经设置好了运行所需的环境,您可以开始在工作流程中使用Camel Task。 当在执行实例到达Camel任务时,Camel Task将自动运行并调用camel路由。 运行的路由是通过将camel任务ID与路由器规则的from元素匹配来确定的。 例如route:from(“flowable:asyncPingProcess:serviceAsyncPing”)。to(“seda:continueAsync”); 匹配名为asycnPingProcess的流程,该流程具有id为serviceAsyncPing的camel任务。 此工作流程和任务如下所示:

    流程定义如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:flowable="http://flowable.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.flowable.org/processdef">
    <process id="CamelVariableTransmission" name="CamelVariableTransmission" isExecutable="true">
    <startEvent id="startEvent1"></startEvent>
    <serviceTask id="ping" name="Send Variable" flowable:type="camel"></serviceTask>
    <sequenceFlow id="sid-5D4FCE03-981A-4E93-91A1-02ECD6046D41" sourceRef="startEvent1" targetRef="sid-79D5FE99-60CA-424F-AAD3-7ABBA577BCBB"></sequenceFlow>
    <sequenceFlow id="sid-F08E2B38-EC21-478A-ACAF-938027455F6D" sourceRef="ping" targetRef="saveOutput"></sequenceFlow>
    <serviceTask id="saveOutput" name="Save Variable Output" flowable:class="camel.examples.pingpong.SaveOutput"></serviceTask>
    <endEvent id="sid-490A8527-1FAD-4E60-B2CB-F395781A048D"></endEvent>
    <sequenceFlow id="sid-D7FEDCBA-C1BE-4FC0-9C4F-CF1642C3D2CF" sourceRef="saveOutput" targetRef="sid-490A8527-1FAD-4E60-B2CB-F395781A048D"></sequenceFlow>
    <serviceTask id="sid-79D5FE99-60CA-424F-AAD3-7ABBA577BCBB" name="Initialise Variables" flowable:class="com.shareniu.InitialiseVariables"></serviceTask>
    <sequenceFlow id="sid-2B35BD26-8861-45FC-9A19-B83F5D4A72F2" sourceRef="sid-79D5FE99-60CA-424F-AAD3-7ABBA577BCBB" targetRef="ping"></sequenceFlow>
    </process></definitions>

    默认情况下,当camel运行规则时,camel任务将立即(同步)接收响应,然后流程执行实例转到下一个任务。 响应包括运行时由camel路由设置的任何变量值。

    异步方式使用Camel Task

        在我们创建的示例中,camel任务被设置为异步。 这意味着camel任务将由异步的Flowable定时器运行,并直接进入接收任务,等待信号。 此方案实现了集成用例,其中camel路由无法立即返回。

         例如,如果camel路由正在执行某些外部应用程序处理并需要等待结果,然后让Flowable流程知道它已完成。 在我们的示例中,我们使用了Receive Task,但您也可以使用设置了triggerable标志的Service Task作为返回路由,基本上将触发器发送到流程/任务实例。 from和to端点的完整camel路由如下所示。

    from("flowable:asyncPingProcess:serviceAsyncPing").to("seda:continueAsync");
    from("seda:continueAsync").to("flowable:asyncPingProcess:receiveAsyncPing");

    有一件事情要特别注意。如果将camel任务设置为异步,那么如果camel立即响应,则流程实例可能失败。根据我们的分析,这是因为当camel试图响应并找到任务时,接收任务还没有被创建。

    设置Camel Route

    Camel的一个很好的特点是DSL特性意味着我们可以将CAMEL路由定义为Java类。我们已经将camel-spring-starter设置为Flowable任务应用程序的一部分,因此,我们可以将camel路由定义为与Flowable任务应用程序位于同一类路径中的Spring组件,这些组件将被默认camel上下文作为路由获取。这样做:

       将可流动任务应用程序导入Eclipse(即从Eclipse导入MVN项目,从~/workspace/flowable-engine-flowable-6.4.1/modules/flowable-ui-task/flowable-ui-task-app)。

       定位到org.flowable.ui.task.application包并创建一个名为AsyncPingRoute的类,该类扩展了RouteBuilder。实现类如下:

    Camel变量

    我们在工作流中定义了一个服务任务,用于在流程中设置一些变量,这些变量将由camel任务发送到camel路由。任务和实现类如下所示。如您所见,通过设置一个变量(在我们的例子中称为“input”)将变量传入流程实例。然后将每个过程变量传递给camel路由,并可以在路由中访问(例如显示如何在路由中使用“input”变量)。

    from("flowable:PingPongProcess:ping").transform().simple("${property.input} World");

    来自camel路由的返回变量与正在运行的流程实例进行关联,并且在名为“camelbody”的变量中是可用的。

    保存变量输出服务任务的代码如下所示:

    public class SaveOutput implements JavaDelegate {
    
    @SuppressWarnings("unchecked")
    @Override
    public void execute(DelegateExecution execution) {
    Map<String, String> outputMap = (Map<String, String>) execution.getVariable("outputMap");
    outputMap.put("outputValue", (String) execution.getVariable("camelBody"));
    System.out.println("CamelBody: " + (String) execution.getVariable("camelBody"));
    }
    }
    

     

    展开全文
  • Flowable实战课程-Flowable源码启动

    千次阅读 2020-01-05 20:53:51
    本文重点讲解一下Flowable部署包分析 核心的代码在webapps下面,其中flowable的相关的代码包如下: flowable-idm.war :该服务主要集成了用户管理、权限管理、组管理、单点登录功能,是modeler等依赖的一个基础...
  • flowable实战(1)

    2020-07-25 20:36:03
    flowable是从activiti5拉出的分支,很多方面和activiti的使用方式是相同的,做了功能强化。 官网:https://flowable.com/open-source/docs/bpmn/ch04-API/ 各个组件通过processEngin进行初始化: ProcessEngine ...
  • 文章目录一、添加依赖pom.xml二、关掉认证和Mapper接口的扫描三、添加数据库连接池 一、添加依赖pom.xml ...org.flowable</groupId> <artifactId>flowable-spring-boot-starter</artifac...
  • 一、流程实例的管理接口常见功能: 1.启动一个流程(即创建一个流程实例) 2.本人发起的流程实例 3.本人参与的流程实例 4.挂起/激活流程实例 5.提前终止流程实例(或又叫撤销流程) ...public ProcessInstance ...
  • 工作流Flowable实战

    千次阅读 2020-09-01 12:33:04
    文章目录1. 流程Demo案例2. 流程模板导入3. 流程模板部署4. 流程的模板的图片和xml显示5. 流程定义的挂起与激活6. 流程定义的删除7. 流程定义查看流程图和xml8. 流程实例的启动9. 流程实例挂起与激活10....
  • 工作流基本介绍,介绍 Flowable 的兄弟姊妹。 Spring 集成 Flowable,常见 Service 介绍。 流程部署、获取流程定义图片、用户系统改造 流程定义挂起和激活,流程实例的挂起和激活,流程实例启动。 流程追踪、终止...
  •  用flowable Modeler设计好的流程图后,有多种资源部署方式,分别是(1)导出xml,然后部署到flowable数据库中 (2)多个流程模型定义文件,即xml打包成zip/bar,多个资源文件一起部署。(3)Model方式部署,设计器...
  • 一、任务的管理功能主要有: 1.任务办理模式分两种(一家公司最好约定好需要不要签收模式,统一操作模式),一种直接办理模式,一种需要签收后再办理,所以分为: 候选人的任务签收/候选组的任务签收/完成任务 ...
  • flowable的办理方式,分为两种:签收模式办理和直接办理。 术语: Assignee: 任务的受理人,即执行人。它有两种情况(有值,NULL) Owner: 任务的委托人。 CandidateGroup: 候选用户组 CandidateUser: 候选人 ...
  • 官网 flowable核心数据库表详细表字段说明
  • 一.工作流部署—RepositoryService 1.流程定义数据表:act_re_procdef 2.流程设计模型部署:act_re_model 3.部署信息表:act_re_deployment 二....1.运行时流程人员表:act_ru_identitylink ...2.Event时间监听信息表...
  • 用户或组权限关系表(flowable)-- ACT_ID_PROPERTY 属性表(flowable)-- ACT_ID_TOKEN 系统登录日志表(flowable)-- 运行时流程数据表 ...
  • flowable实战(五)flowable驳回/退回上一步/退回到

    万次阅读 热门讨论 2019-06-02 17:05:31
    二、flowable实现: 1.普通串行路线上的退回(此流程中没有并行网关的退回时),此方法支持普通串行节点/会签多实例节点/排他网关节点: runtimeService.createChangeActivityStateBuilder() ....

空空如也

空空如也

1 2 3 4 5 ... 17
收藏数 338
精华内容 135
关键字:

flowable实战