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

标签 java user-interface workflow

上下文

我必须创建创作工作流程( 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/

相关文章:

JavaFX - 如何将 IntegerProperty 中的 RGB 值绑定(bind)到 ColorPicker?

iphone - UI优先还是逻辑优先?

java - 如何在 JavaFX 中锁定按钮的位置?

java - 有人知道可缩放的 JPanel 实现吗?

java - Red Hat 上的 Wildfly 10.1 阻止 Web 请求

java - 尝试将 admob 合并到我的 android 应用程序时出错

java - 我们如何使用一元运算符计算后缀字符串?

git - 如何维护两个或多个永不 merge 的发散分支?

workflow - Windows Workflow Foundation(WF)的最佳资源是什么?

通过 Outlook 电子邮件批准 Sharepoint 工作流