背景

   某一天一如既往的上班”旅途“中,我的领导在开早会的时候,说我最近没啥事,于是让我研究一下Activiti工作流引擎与Drools规则引擎,当时也不知道后边具体要做什么,管它的,先看看再说。看了几天后,写了个简单的demo出来,结果发现Activiti这个东西不就是可以用来做流程审批的嘛;最后我们就开始开发基于Activiti的工作流引擎。并且部分功能与定时任务调度中心进行整合,实现了简单的流程编排任务。

因为工作流相关的东西在公司的电脑上,公司对于安全保密性十分严格,所以本文不阐述具体实现,只记录一下我当时的实现思路。

   调度中心本身有一个子任务的概念,但子任务是有先后顺序的,所以这里不太符合需求。在xxl-job的github上我看到过这样一个issue:



看来还是很多人想要这个功能呢,目前我们先自己实现一个简单的流程任务编排。

实现思路

概念描述

   因为涉及到了工作流的东西,在此处只简单介绍一下Activiti工作流引擎。

工作流(WorkFlow),就是”业务过程的部分或整体在计算机应用环境下的自动化“,它主要解决的是”使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行,从而实现某个预期的业务目标,或者促使此目标的实现“,简单的说:工作流将一套大的业务逻辑分解成业务逻辑段,并统一控制这些业务逻辑段的执行条件,执行顺序以及相互通信。实现业务逻辑的分解和解耦。

关键概念:

  • 服务节点:用户任务,服务任务,接受任务,脚本任务等
  • 网关节点:互斥网关,并行网关等
  • 逻辑判断节点:类似于if/else

   我们在工作流的开发中主要是包装了服务节点以及网关节点和逻辑节点等内容,让服务节点类似于一个http网络请求,触发微服务的接口,同时等待微服务接口返回内容,放入到流程中,执行后边的流程。

思路设计

   我在开发调度中心的工作流模式时时通过SDK的方式引入工作流模式,减少系统间的耦合,实现工作流模式后可以做一些简单的编排任务,比如多个Jobhandler的组合执行方式。

   下面是方案的设计思路:

   大致就是:调度中心与工作流系统之间通过SDK的方式进行通信,调度中心的任务和工作流的任务是相同概念的,都是一次完整的触发过程。调度中心的执行器对应于工作流的服务任务节点,在工作流节点端可以配置相应的Jobhandler,当要执行定时任务时,会首先通过SDK触发工作流任务开始执行,然后执行到调度中心端,在调度中心端去触发相应的业务端相应的Jobhandler,达到执行多任务的效果。

   当任务执行完成后我们去回调工作流获取任务状态接口以此来同步调度中心任务的执行状态。

注意点:在我们选择工作流模式配置定时任务的时候,我们不再需要填写Jobhandler参数,只需要绑定工作流的启动key即可,作图的时候直接在服务节点上填写Jobhandler参数。

说明

   大体上的思路就是这样,可能比较粗略还有点抽象...,本来想结合一些实际的页面UI以及代码来说明,但因涉及到公司安全的问题,所以只能这样了,因为如果我要本地弄这些,工程量实在有点巨大...

   本篇文章记录了一下当时的思路,大致上有这么一种方式可以来实现简单功能,但是增加了一些学习成本,比如工作流引擎相关知识

xxl-job之实现流程任务编排思路的更多相关文章

  1. 2.WF 4.5 流程引擎设计思路

    本文主要给大家分享下基于WF 4.5框架的流程引擎设计思路 1.流程启动时的数据写入EventMsgPP对象中,ObjectAssemblyType记录流程启动时需要的类型,ObjectContent ...

  2. 小结MapReduce 程序的流程及设计思路

    简单回顾一下,目前系统是WCF三层C/S插件系统.服务器端是WCF程序寄宿在IIS中,其中我的配置设计是长连接,客户端支持多线程,一个volatile的实例对象.客户端用Winform,其中客户端框架 ...

  3. GWAS分析基本流程及分析思路

    数据预处理(DNA genotyping.Quality control.Imputation) QC的工作可以做PLINK上完成Imputation的工作用IMPUTE2完成 2. 表型数据统计分析 ...

  4. Django问卷调查项目思路流程

    Django问卷调查项目思路流程: 1 后端思路 : 需求分析 ---- 找出各实体对应关系 ---- 设计model架构 ---- 统一资源封装 --- 提供资源API入口 ---- 设计项目实体功 ...

  5. activiti自定义流程之自定义表单(一):环境配置

    先补充说一下自定义流程整个的思路,自定义流程的目的就是为了让一套代码解决多种业务流程,比如请假单.报销单.采购单.协作单等等,用户自己来设计流程图. 这里要涉及到这样几个基本问题,一是不同的业务需求, ...

  6. 前端代码组织优化--小demo(进阶你的思路)

    事出必有因 最近在看老项目的代码,一个富客户端的js代码,几千行的代码,全是function(){} var...的垂直布局,真的是要感动的哭了. 一开始都是这样,想实现什么功能,不管三七二十一,fu ...

  7. 使用Application Loader上传APP流程解读[APP公布]

    本文仅仅是提供一个公布流程的总体思路.假设没有公布经验.建议阅读苹果官方公布文档或者Google搜索具体教程. 1.申请开发人员账号:99美金的(须要信用卡支付),详细流程网上有非常多样例.自行搜索. ...

  8. activiti自己定义流程之自己定义表单(一):环境配置

    先补充说一下自己定义流程整个的思路,自己定义流程的目的就是为了让一套代码解决多种业务流程.比方请假单.报销单.採购单.协作单等等.用户自己来设计流程图. 这里要涉及到这样几个基本问题,一是不同的业务需 ...

  9. 架构设计 | 基于电商交易流程,图解TCC事务分段提交

    本文源码:GitHub·点这里 || GitEE·点这里 一.场景案例简介 1.场景描述 分布式事务在业务系统中是十分常见的,最经典的场景就是电商架构中的交易业务,如图: 客户端通过请求订单服务,执行 ...

随机推荐

  1. WPF DataGrid与ListView性能对比与场景选择

    开门见山的说 性能对比: 在Demo中,DataGrid与ListView默认开启虚拟化(可以理解为动态渲染,类似懒加载只渲染屏幕可以看见的地方) DataGrid渲染10列50行随机字符280ms ...

  2. 这么优雅的Java ORM没见过吧!

      Java的ORM框架有很多,但由于Java语言的限制大部分都不够优雅也不够简单,所以作者只能另辟蹊径造轮子了.照旧先看示例代码了解个大概,然后再解释实现原理. 一.ORM示例 1. Insert ...

  3. Redis 5 配置 Redis sentinel(哨兵模式)

    先了解一下哨兵都 做了什么工作:Redis 的 Sentinel 系统用于管理多个 Redis 服务器(instance), 该系统执行以下三个任务: * 监控(Monitoring): Sentin ...

  4. 九:APP及其他资产

    APP提取一键反编译提取 APP抓数据包进行工具配合 各种第三方应用相关探针技术 各种服务器接口相关探针技术 APP提取及抓包及后续配合 某APK一键提取反编译 利用burp历史抓更多URL 某IP无 ...

  5. MyBatis 查询的时候属性名和字段名不一致的问题

    目录 问题 解决方案:resultMap 问题 当我们数据库中的字段和实体类中的字段不一致的时候,查询会出问题 数据库字段是 pwd id name pwd 1 张三 123456 2 李四 1234 ...

  6. vagrant up报错【io.rb:32:in `encode': "\x95" followed by "\"" on GBK (Encoding::InvalidByteSequenceError)】

    vagrant up报错[io.rb:32:in `encode': "\x95" followed by """ on GBK (Encoding: ...

  7. oracle 12C单实例打PSU

    前提: oracle不管打什么样的补丁,readme都是很好的参考资料. Oracle每季度都会更新一个最新的PSU,现在12.1.0.2.0的最新的PSU是Patch 26925311. 由于今天白 ...

  8. v-model语法糖

    其实v-model就是一个结合了v-bind和v-on的语法糖,实现了双向数据绑定. 举个(栗子):

  9. Ice系列--强大如我IceGrid

    前言 IceGrid是一个提供服务定位和服务激活的组件,但它的功能远不止于此.从它的命名可以看出它的设计理念-网格计算(grid computing).网格计算被定义为由一系列关联的廉价计算机组成的计 ...

  10. java进阶(33)--IO流

    一.IO流概念:1.基本概念2.IO流分类3.java.io流的四大家族4.流的close和flush方法5.java.id下常用的16个流 二.FileInputStream字节输入流1.FileI ...