3.6K Star 101.1K Fork 13.9K

芋道源码 / ruoyi-vue-pro

 / 详情

工作流需求收集?「需求收集中,欢迎参与贡献」

待办的
拥有者
创建于  
2022-02-22 12:21

近期基于 Flowable 版本的工作流即将完成,所以开始收集大家对工作流的后续需求?

大家提的越多的需求,越早会得到支持!

DONE 列表

功能 开发人 预计上线时间
会签 & 或签 ke、orange_melody_moment 2022.07.08
退回 or 驳回 hai 2023.11.21
委派 hai 2023.11.21
每个任务,支持动态表单 芋道源码 2024.03.23
流程的重启:一条流程驳回以后,重新启动,表单数据复制,重新走流程 芋道源码 2024.03.23

TODO 列表

需求整理,update at 2022-07-08

功能 开发人 预计上线时间
仿“钉钉”快搭 芋道源码(艿艿) 2022 年底
基于表单字段分配审批人 等待贡献者 以贡献者为准
流程版本控制,可以切换老版本发布 等待贡献者 等待贡献者
自由流 等待贡献者 等待贡献者
权限控制用户表单字段部门内容可见 等待贡献者 等待贡献者
工作流示例,场景 等待贡献者 等待贡献者
跳转:包含单节点跳多实例节点、多实例节点跳单节点、单节点跳子流程(非启动节点)、子流程跳出到外面流程节点。 等待贡献者 等待贡献者
流程节点的表单是否可以编辑控制,也有可能是字段可编辑控制 等待贡献者
节点的流向可以通过表单字段进行计算控制(这块以前都是配置单独监听来实现),有没有可能通用化 等待贡献者
节点的候选人增加规则:例如某一个环节的已办人、某一个已办环节的办理部门 等待贡献者
流程节点表单按钮可配置,不同的节点(已办、待办、办结)可以配置不同的功能按钮 等待贡献者

工作流新增的功能,以大家主动贡献为主,咱这是开源项目哈。

我自己的精力,主要实现仿“钉钉”快搭 、Spring Cloud、UniApp、Mall 等从 0 到 0.5 的功能,已经完成 0.5 的功能,希望一起共建到 1.0 的阶段。

冲冲冲!

评论 (92)

芋道源码 创建了任务
芋道源码 负责人设置为芋道源码
芋道源码 置顶等级设置为
芋道源码 修改了描述
芋道源码 修改了标题
展开全部操作日志

多人会签 和 或签,分配规则可以选择表单字段,审批操作 转办,委派,退回,挂起,激活。流程版本控制,可以切换老版本发布。单个任务添加额外表单字段,权限控制用户表单字段部门内容可见。暂时想到这么多,感谢作者大大 :cupid:

合并到计划中。

1,指定节点回退;2,能否实现自由流

已经合并到任务列表

工作流示例,场景。如排他网关,并行网关,在实际中作用。

已经合并到任务列表

1.流程表单中的左侧增加数据模型,拖进来的组件,可以切换左侧的数据模型,双击给组件绑定上数据库中的数据表.字段名。
2.流程表单中的组件属性右侧增加每个组件相对应的事件,按钮对应的是onClick,表格对应的onInit、onBeforeIndexChanged、onAfterIndexChanged、onCellHint、onRowValueChanged、onRowClick、onRowDblClick、onRowRightClick、onRowCheck、onRowChecked
onRowCheckAll;
3.流程表单中增加翻页组件、多页签组件、对话框组件
4.表达式可以封装一些java、js表达式和事例一起供大家参考,流程流转使用

已经合并到任务列表

一个流程可以配置多个表单。申请的表单、审批的表单。

已经合并到任务列表

普通用户发起的流程,超管可以对这些流程进行一键回退,用来处理发起的错误流程功能。

已经合并到任务列表

1、跳转:包含单节点跳多实例节点、多实例节点跳单节点、单节点跳子流程(非启动节点)、子流程跳出到外面流程节点。flowable有提供api支持,activiti7未知;
2、多实例加签,flowable有提供api支持
3、bpmnjs扩展,不同流程节点支持不同的表单配置,因为不同节点有时候要显示的内容会有差异(这块也可以前端增加字段显示隐藏,不过排版会不好看)
4、流程节点的表单是否可以编辑控制,也有可能是字段可编辑控制
5、节点的流向可以通过表单字段进行计算控制(这块以前都是配置单独监听来实现),有没有可能通用化
6、节点的候选人增加规则:例如某一个环节的已办人、某一个已办环节的办理部门
7、流程节点表单按钮可配置,不同的节点(已办、待办、办结)可以配置不同的功能按钮
8、流程的重启:一条流程驳回以后,重新启动,表单数据复制,重新走流程

不错哈,已经合并到任务列表

已经合并到任务列表

没想到在这看到自己的项目 :sweat_smile:

希望可以实现对表单的某个 组件的授权 ,分配给不同的节点,类似OA系统,流程上所有人看到的表单都是一样的吗, 不同节点的用户可以处理的区域不同 ,希望大佬考虑

相当于表单的可见配置、编辑配置、摘要配置

已经合并到任务列表

芋道源码 修改了标题

BpmTaskEventListener分配任务后 会触发两次,导致通知触发两次

已经合并到任务中

希望申请中的数据能和具体业务表关联,并同步审核工程中的状态到对应的业务表中

这个最好自己监听哈,成本不高的。

请问你实现了吗?我也有这方面的需求,可以交流一下 :smile:

能否形成这样xml

<?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:activiti="http://activiti.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.activiti.org/processdef">
  <process id="GATEWAY" name="GATEWAY" isExecutable="true">
    <documentation>GATEWAY</documentation>
    <startEvent id="startEvent1" name="Start"></startEvent>
    <userTask id="sid-08A2CA54-0D5A-4950-94FC-D836A27DD29F" name="Apply" activiti:assignee="#{user}">
      <extensionElements>
        <modeler:initiator-can-complete xmlns:modeler="http://activiti.com/modeler"><![CDATA[false]]></modeler:initiator-can-complete>
      </extensionElements>
    </userTask>
    <sequenceFlow id="sid-CDC76AE0-652C-49AB-B535-2E9A72010C22" sourceRef="startEvent1" targetRef="sid-08A2CA54-0D5A-4950-94FC-D836A27DD29F"></sequenceFlow>
    <userTask id="sid-4CDDFFD1-77B2-400E-B51C-1E5AD8F9FDC7" name="Manager" activiti:assignee="manager">
      <extensionElements>
        <modeler:initiator-can-complete xmlns:modeler="http://activiti.com/modeler"><![CDATA[false]]></modeler:initiator-can-complete>
      </extensionElements>
    </userTask>
    <sequenceFlow id="sid-BADD4792-A5AF-4FF4-A3CA-7F348CE3BE17" sourceRef="sid-08A2CA54-0D5A-4950-94FC-D836A27DD29F" targetRef="sid-4CDDFFD1-77B2-400E-B51C-1E5AD8F9FDC7"></sequenceFlow>
    <sequenceFlow id="sid-E4E6380D-4D4F-4857-ADCE-1EDA31AD5F30" sourceRef="sid-4CDDFFD1-77B2-400E-B51C-1E5AD8F9FDC7" targetRef="sid-273E7D4C-6940-418E-91F4-9EAF7723A772"></sequenceFlow>
    <userTask id="sid-F1212178-E5AA-497B-B1C8-C0BB56F5DF3A" name="Leader" activiti:assignee="#{leader}">
      <extensionElements>
        <modeler:initiator-can-complete xmlns:modeler="http://activiti.com/modeler"><![CDATA[false]]></modeler:initiator-can-complete>
      </extensionElements>
    </userTask>
    <endEvent id="sid-F6A5A485-22AF-479E-B979-49EEF5FD51D4" name="Finish"></endEvent>
    <exclusiveGateway id="sid-273E7D4C-6940-418E-91F4-9EAF7723A772" name="Gateway GT 3 Days"></exclusiveGateway>
    <sequenceFlow id="sid-A2E72959-46B9-455D-9483-CC22F548A73F" sourceRef="sid-F1212178-E5AA-497B-B1C8-C0BB56F5DF3A" targetRef="sid-F6A5A485-22AF-479E-B979-49EEF5FD51D4"></sequenceFlow>
    <sequenceFlow id="sid-227C2BAE-1236-40D7-B6E2-AEBCD15FB5ED" name="GT 3 Days" sourceRef="sid-273E7D4C-6940-418E-91F4-9EAF7723A772" targetRef="sid-F6A5A485-22AF-479E-B979-49EEF5FD51D4">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[#{day<=3}]]></conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="sid-4EB73190-7808-4E46-8537-774DC5C63A10" name="LT 3 Days" sourceRef="sid-273E7D4C-6940-418E-91F4-9EAF7723A772" targetRef="sid-F1212178-E5AA-497B-B1C8-C0BB56F5DF3A">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[#{day>3}]]></conditionExpression>
    </sequenceFlow>
  </process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_GATEWAY">
    <bpmndi:BPMNPlane bpmnElement="GATEWAY" id="BPMNPlane_GATEWAY">
      <bpmndi:BPMNShape bpmnElement="startEvent1" id="BPMNShape_startEvent1">
        <omgdc:Bounds height="30.0" width="30.0" x="100.0" y="163.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="sid-08A2CA54-0D5A-4950-94FC-D836A27DD29F" id="BPMNShape_sid-08A2CA54-0D5A-4950-94FC-D836A27DD29F">
        <omgdc:Bounds height="80.0" width="100.0" x="175.0" y="138.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="sid-4CDDFFD1-77B2-400E-B51C-1E5AD8F9FDC7" id="BPMNShape_sid-4CDDFFD1-77B2-400E-B51C-1E5AD8F9FDC7">
        <omgdc:Bounds height="80.0" width="100.0" x="340.0" y="138.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="sid-F1212178-E5AA-497B-B1C8-C0BB56F5DF3A" id="BPMNShape_sid-F1212178-E5AA-497B-B1C8-C0BB56F5DF3A">
        <omgdc:Bounds height="80.0" width="100.0" x="600.0" y="60.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="sid-F6A5A485-22AF-479E-B979-49EEF5FD51D4" id="BPMNShape_sid-F6A5A485-22AF-479E-B979-49EEF5FD51D4">
        <omgdc:Bounds height="28.0" width="28.0" x="810.0" y="164.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="sid-273E7D4C-6940-418E-91F4-9EAF7723A772" id="BPMNShape_sid-273E7D4C-6940-418E-91F4-9EAF7723A772">
        <omgdc:Bounds height="40.0" width="40.0" x="465.0" y="158.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge bpmnElement="sid-A2E72959-46B9-455D-9483-CC22F548A73F" id="BPMNEdge_sid-A2E72959-46B9-455D-9483-CC22F548A73F">
        <omgdi:waypoint x="700.0" y="100.624"></omgdi:waypoint>
        <omgdi:waypoint x="812.1226886987874" y="170.58855774804337"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-BADD4792-A5AF-4FF4-A3CA-7F348CE3BE17" id="BPMNEdge_sid-BADD4792-A5AF-4FF4-A3CA-7F348CE3BE17">
        <omgdi:waypoint x="275.0" y="178.0"></omgdi:waypoint>
        <omgdi:waypoint x="340.0" y="178.0"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-227C2BAE-1236-40D7-B6E2-AEBCD15FB5ED" id="BPMNEdge_sid-227C2BAE-1236-40D7-B6E2-AEBCD15FB5ED">
        <omgdi:waypoint x="504.52810650887574" y="178.47189349112426"></omgdi:waypoint>
        <omgdi:waypoint x="810.0000152728467" y="178.02067944568267"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-4EB73190-7808-4E46-8537-774DC5C63A10" id="BPMNEdge_sid-4EB73190-7808-4E46-8537-774DC5C63A10">
        <omgdi:waypoint x="485.5" y="158.5"></omgdi:waypoint>
        <omgdi:waypoint x="485.5" y="98.0"></omgdi:waypoint>
        <omgdi:waypoint x="600.0" y="99.3920972644377"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-CDC76AE0-652C-49AB-B535-2E9A72010C22" id="BPMNEdge_sid-CDC76AE0-652C-49AB-B535-2E9A72010C22">
        <omgdi:waypoint x="130.0" y="178.0"></omgdi:waypoint>
        <omgdi:waypoint x="175.0" y="178.0"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-E4E6380D-4D4F-4857-ADCE-1EDA31AD5F30" id="BPMNEdge_sid-E4E6380D-4D4F-4857-ADCE-1EDA31AD5F30">
        <omgdi:waypoint x="440.0" y="178.26178010471205"></omgdi:waypoint>
        <omgdi:waypoint x="465.39473684210526" y="178.39473684210526"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</definitions>

没明白,是支持这样的 XML 的 bpmn 流程么?

流程的审批, 当拒绝后 并不是流程停止.

而是能根据后续的网关节点进行分支.

输入图片说明

已经合并到任务列表

这个只需要在流程线上写好表达式就可以了 :flushed:

芋道源码 修改了描述
芋道源码 修改了描述
芋道源码 修改了描述
芋道源码 修改了描述
芋道源码 修改了描述
芋道源码 修改了描述
芋道源码 修改了描述
芋道源码 修改了描述
芋道源码 修改了描述
芋道源码 修改了描述
芋道源码 修改了描述
芋道源码 修改了描述

移动端表单支持

节点按钮动态配置。如配置A节点有 审批通过、驳回、转办、抄送按钮,B节点只有通过、抄送按钮。

流程的重启投一票,等上线体验

有考虑支持camunda引擎吗?

芋道源码 置顶等级 修改为

流程结束后,回调其他应用的接口,推送流程信息
流程状态变更后,回调其他应用接口,推送流程状态,做通知等
可以获取流程的审批节点信息,方便其他应用对接

搞了一天了本来弄起来很开心,结果发现没有 驳回到上一级,也没有跳过。做流程驳回是最难的,希望你们抓紧实现,要不然不好用到实际项目里面。感谢付出。

是flowable引擎本身不支持吗?

是否可以考虑将流程设置条件跳转至上一节点。

同一个流程节点实现批量审批功能

建议增加oracle数据源支持

云表单+工作流 流程结合的

是否考虑工作流模块中,集成office办公类软件在线协同编辑

审批节点中,可动态指定下一节点审批人

芋道源码 修改了标题

能否有上传附件,下载附件功能。

中止、终止,中止恢复,终止恢复。希望能包含这四个选项

审批人支持多个。只要符合设定规则的所有,都可以审批

你这不是group就能实现么。。。

工作流自动跳过节点,比如 申请人就是审核人需要跳过自己的审核节点,又或者,申请人职级大于审批人节点职级也需要跳过。

希望加入每个审批节点都能指定表单填写的功能,因为经常会有一张大的表单里面,除了拟写内容,其他各层审批亦要加批注和其他字段、附件、图片等。。。

芋道源码 修改了描述

希望能加入抄送功能

数据一定要租户隔离啊大佬

我发现在现在的工作流中,在指定小组或者岗位或者其他类型的多用户的任务节点时,会先将这个任务的用户们都获取出来,再随机设置一个人作为任务负责人。那么只有该用户才能在待办列表中看见该任务,其他的用户们虽然是配置的小组或者岗位下的人,其实是在自己的待办中看不见这个任务的,是吧?
所以是否场景应该有如下这几种可能的场景:

  1. 配置的小组或者岗位下的用户们都能看见这个任务的待办,当某一个人审批了之后,这个任务节点就算结束了。
  2. 预先在配置处就定义好小组的负责人(可以保存在业务表中),同样小组下的用户们都能看得见任务但是只有负责人能指派给某位小组成员或者自己直接审批。

如有说的不对之处,麻烦指正,相互学习,非常感谢!

昨天也发现这个问题了,个人也觉得逻辑是用户组的用户都能在代办中看到任务,有一个人审批就通过。

对的。这个是或签的逻辑

在 feature/bpm-back 分支里,我们处理了这个逻辑。

好的,谢谢了,明天再试一下。

请问或签你测成功了吗,怎么测得

已经实现。

目前flowable有或签处理的实现,请问activiti7是否也支持或签的处理?

抱歉,公司采用其他方案实现了,我就没继续研究了。

流程表单中,表格的组件此版本能完成吗?

感兴趣可以 pr 贡献下。

希望大佬可以新增流程撤回和重新发起、流程抄送的功能

可以在某个大节点下动态创建流程/子流程吗,可以理解为在处理节点,需要有多个事项需要单独启流程,但是这个流程个数是不一定的,然后等这些流程/子流程过完了,这个处理节点才算完成,才能到下个节点。

定时边界事件如何添加超时条件?

请问有抄送功能吗?

activiti比较熟,
1、会签 & 或签
2、退回 or 驳回
3、自由流
但是Flowable 还没去研究。。。苦瓜脸

工作流希望能支持多租户隔离

会签,或签之类的功能, 工作流引擎应该本身就支持吧?

我们自定义了任务的分配规则哈。

已支持

多租户的啥时候能支持啊

希望添加【手工任务派发选择方式】,具体说明如下:
用户前台提交任务时,提前预获取下一步需要在前台选择用户的节点及用户,如果下一步存在提前预获取任务用户的节点必须在前台罗列出来并选择节点用户才能提交,如果下一步是自动提交不需要前台选择用户则直接同意提交即可。

实现注意点:需要考虑提前预获取下一步需要在前台选择用户的节点及用户遇到并行网关、包容网关怎样处理,遇到这种网关要如何实现到底要不要汇聚走下一步

芋道源码 修改了描述

希望出抄送功能,还有任务提醒功能邮件、短信、站内通知可配置

可以在表单设计流程前加上连接数据库的功能,然后在表单设计时可以选择对应的数据库表的字段进行绑定,因为很多表单的某些输入框是默认后端传过来的数据,不需要用户输入,这个还是很常用的

输入图片说明
仿钉钉显示流程信息概览,并支持查询。

flowable中会签按比例通过,但是本身没有任务不通过的实现,都是complete,怎么扩展呢?

任务催办,定时任务

流程嵌套,层数当然是越多越好,可以先实现两三层。

@芋道源码 感谢作者开源,我这里遇到一个问题在设计流程图的时候如果在流程中添加了会签节点,在读取分配规则列表的时候没有读取道会签以后的节点。输入图片说明

节点可以绑定表单吗

分配规则怎么创建呢,我流程设计好之后,点击分配规则报系统异常

申请流程发起后,申请人一键追回申请,取消申请

想问一下,现在驳回、退回有人做嘛?

vue3.0版本什么时候实现工作流设计,等着抄作业呢输入图片说明

根据流程节点,配置相应表单(字段)权限,实现根据配置动态显示表单(字段)
输入图片说明

基于flowable实现流程的合并汇聚

流程的转办(转本部门内的人,转组织架构中任意一人,转多人处理),协办,超期处理

用户具有多部门,在任意部门下处理所有待办

求个问,目前是不是还不能够实现发起人环节修改表单操作?我尝试在解锁了表单详情里的提交和重置按钮,并将提交按钮连接后端传回更新的表单信息和流程实例ID,在后端用ID找到对应的流程实例后调用setFormVariable方法将更新的表单信息传入,但刷新后更改的信息又全部丢失了,变回了原本的信息。 :scream:

表单字段权限控制(实际中提交的审批流程实例审批人对某些表单字段做编辑操作)

希望实现下uniapp版本的基本流程业务

芋道源码 修改了描述
芋道源码 修改了描述

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(68)
7699437 zhuqi7 1605750620 4909904 cksspk 1602463946 1941792 lijiajiaxiongni 1578962816 586909 barry200890 1598576716 1236427 aqie 1578947067
加载更多
Java
1
https://gitee.com/zhijiantianya/ruoyi-vue-pro.git
git@gitee.com:zhijiantianya/ruoyi-vue-pro.git
zhijiantianya
ruoyi-vue-pro
ruoyi-vue-pro

搜索帮助