当前位置: 首页 > 知识库问答 >
问题:

java - flowable中调用子流程(调用活动),如何给发起人生成提交表单申请的待办(目前是直接进入到审批环节了)?

长孙淳
2024-09-11

image.png
image.png

主流程中调用子流程,采用CallActivity可以实现,但子流程直接进入到了审批环节,发起人需要填写表单信息,怎么样才能给发起人创建待办,并且可以提交表单信息,然后再进入到审批环节。

参考https://juejin.cn/post/7327831782702252083,这个地址可以实现设置子流程的发起人,但是这时候子流程已经直接进入到了审批环节了,想实现给子流程的发起人创建可以提交表单信息的待办事件。

共有1个答案

隆向晨
2024-09-11

在Flowable中,如果你想要在主流程中调用子流程时,首先给发起人生成一个可以提交表单信息的待办(Task),然后再进入审批环节,你需要结合使用几个Flowable的功能点,包括用户任务(User Task)、表单(Forms)以及流程变量(Variables)。

解决方案概述

  1. 定义表单:首先,在Flowable的模型编辑器中,为子流程的开始用户任务(User Task)定义一个表单。这个表单将用于收集发起人的信息。
  2. 设置子流程的开始任务:确保子流程的第一个任务是用户任务,并且这个用户任务配置了表单。
  3. 在调用活动(Call Activity)后设置待办:在主流程中,调用子流程(Call Activity)之后,你可能需要添加一些逻辑来确保在子流程开始之前或同时,给发起人分配一个待办。然而,通常Call Activity本身不直接支持这种逻辑,因为它只是简单地调用子流程。因此,你可能需要在子流程中直接处理待办的创建。
  4. 子流程处理待办:在子流程的第一个用户任务中,使用Flowable的API(比如通过监听器或任务服务)来确保任务被分配给正确的用户(即发起人),并且该用户能够看到一个待办项。
  5. 提交表单后继续审批:一旦发起人提交了表单,用户任务完成,子流程将继续执行后续的审批流程。

细节实现

  • 表单定义:在Flowable Modeler中,为子流程的第一个用户任务添加一个表单定义,这可以通过“表单属性”来完成,并指定表单的字段和提交方式。
  • 调用活动:在主流程中,使用Call Activity来调用子流程,确保传递了所有必要的流程变量(如发起人ID)。
  • 监听器或脚本:如果需要在子流程开始之前或之后执行特定逻辑(如创建待办),可以考虑在子流程的第一个用户任务上使用监听器(Task Listener)或脚本(Script Task)。监听器可以监听任务的创建、完成等事件,并执行相应的逻辑。
  • 任务分配:确保子流程的第一个用户任务正确设置了任务的候选人或分配者(通常是流程的发起人)。

注意事项

  • 确保子流程的设计能够处理从主流程传递过来的所有必要信息。
  • 如果需要,可以使用Flowable的API(如TaskService)在流程执行期间动态地管理任务和待办项。
  • 考虑到性能和安全性,确保任何自定义脚本或监听器都经过充分测试。

通过上述步骤,你应该能够实现在Flowable中调用子流程时,首先给发起人生成一个可以提交表单信息的待办,并在提交表单后继续进入审批环节的功能。

 类似资料:
  • 问题内容: 我分叉了多个流程,我想衡量完成整个任务需要多长时间,即所有分叉的流程都完成了。请告知如何使父进程等待所有子进程终止?我想确保在正确的时间停止计时器。 这是我使用的代码: 问题答案: 我将在“ else // parent”行之后的所有内容都移到for循环之外。在分叉循环之后,使用waitpid进行另一个for循环,然后停止计时并执行其余操作: 我假设如果子进程无法正常退出且状态为0,则

  • 问题内容: 我有一个简单的表单,其中remote = true。 此表单实际上位于HTML对话框中,单击“提交”按钮后,该对话框将立即关闭。 现在,在成功提交表单之后,我需要在HTML主页面上进行一些更改。 我尝试使用jQuery。但是,这不能确保任务在表单提交的某种形式的响应之后得到执行。 如何附加回调,以便仅在成功提交表单后执行我的代码?有什么方法可以向表单添加一些.success或.comp

  • 接口说明 审核申请加入团队的人员 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 POST /permissions/api/team/user/v1.0.0/verifyApplyUser 是否需要登录 是 请求字段说明 参数 类型 请求类型 是否必须 说明 token string header 是 当前登录用户的TOKEN teamUs

  • 接口说明 审核申请加入团队的人员 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 如开启https功能,请求地址的协议应改为https,如:https://www.example.com/wish3dearth/api/access/v1.0.0/getLicenseInfo API地址 POST /permissions/api/team/user/v

  • 对于如何控制表单中的提交事件,我有点困惑,我试图在这里找到一个简单的答案。 我想在将表单数据发送到表单操作脚本之前验证表单输入。我试图通过捕获submit事件、使用Ajax调用验证脚本来解决这个问题,如果验证成功,我希望调用实际的表单过程。但我不确定该如何进行。简单地使用似乎会失败(我猜是没有发送表单值)。 下面是概念代码: null null

  • 问题内容: Python版本:2.6.7 我在for循环中有以下subprocess.call,该循环被执行18次,但是,该过程始终挂在第19个循环上: 控制台输出如下所示: 由于我对python脚本不是很熟悉,所以我只是在徘徊我是否在做错什么…我怀疑某个地方出现了死锁。 会处理这些问题吗? 在什么情况下subprocess.call会挂起任何专家答案?非常感谢 问题答案: 当使用子过程时,我倾向

  • 问题内容: 在python中,是否有一种方法可以调用一个新进程,在同一个上下文中处理它,例如标准IO流,关闭当前进程,并控制所调用的进程?这将有效地“替代”该过程。 我有一个要重复其行为的程序。但是,它使用了一个第三方库,而且看来,我真正能够杀死该库调用的线程的唯一方法是退出()我的python进程。 另外,它似乎可以帮助管理内存。 问题答案: 您可能对以下朋友感兴趣: 这些功能都执行一个新程序,

  • 问题内容: 我有以下页面: 当我单击“ gameSelector”按钮时,事件的顺序如下:1. gameBean.getGameId和gameBean.getHtmlPage被称为2. gameBean.changeGame被称为3.页面被刷新。 我的问题按1和2的顺序排列。changeGame修改了getGameId和getHtmlPage使用的gameBean变量。因此,我想先执行它,以便刷新