gpt4 book ai didi

java - 我可以使用哪个 Java 工作流框架将其与 gui 绑定(bind)

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:38:46 27 4
gpt4 key购买 nike

上下文

我必须创建创作工作流程( checkin 、 checkout 、验证...)。

对于某些状态转换,用户必须填写报告。当用户将对象 O 的状态从状态 S1 更改为状态 S2 时,他必须填写报告。

  1. 用户可以取消上报,O保持状态S1。
  2. 用户可以关闭浏览器,O保持状态S1。
  3. 如果他验证了报告,O 将进入状态 S2。

我正在尝试找到一个可以实现这些约束的框架。

jBPM/流口水

我可以通过 S1 和 S2 之间的“人工任务”来实现 1 和 3,但对于简单的报告来说,这有点矫枉过正。要实现 1,我必须在 S1 和“人工任务”之间建立双向关系。第 2 点我做不到:如果用户关闭浏览器,O 仍处于“人工任务”状态。

另一种方式?

另一种方法是使用外部文件。该文件将为给定的转换 S1->S2 提供要显示的报告。

还有别的办法吗?您认为最佳用例是什么?

感谢您的帮助。

最佳答案

我会这样做:

将自定义 boolean 属性 commitState(默认为 true)添加到进程中的所有节点。

所以有3个节点: S1 - commitState=true, 报告 - commitState=false, S2 - commitState=true

当执行从之前的任何内容继续到 S1 时,引擎将状态提交给数据库并向用户显示 S1 中的内容。然后用户做某事,执行到节点 Report,向用户显示“SubmitReport”屏幕,但数据库事务仍未提交。

此时用户关闭浏览器,最终会出现session超时,抛出异常,在db状态回滚到S1。

当用户取消报告时,我们也可以抛出异常并回滚到 S1,但我更喜欢这样的转换通过流程图显式化,并且只接受这种转换。

当用户提交报告时,我们进入S2,状态为commited。

这要求数据库事务可以在向用户显示屏幕之间保持 - 例如在 StatefulBean 中(当从 StatefulBean 使用时,jbpm 3 中存在一些错误,我不知道在新版本的jbpm 来执行此操作)。

关于java - 我可以使用哪个 Java 工作流框架将其与 gui 绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5102731/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com