如何通过“控制”控制用户界面(如Vaadin);卡蒙达“;或;流动的;bpms?

如何通过“控制”控制用户界面(如Vaadin);卡蒙达“;或;流动的;bpms?,vaadin,camunda,business-process-management,flowable,Vaadin,Camunda,Business Process Management,Flowable,你好 我对Camunda或FlowableBPMS有问题。我需要根据业务流程更改UI 例如: 我有一个(用户任务)和camunda(可流动)应该在Vaadin中生成一个表单。然后它应该等待用户活动并继续。。。(或者camunda只需调用vaadin表单,等待后端处理结束并获得一些响应) 如果我有另一个流程,camunda应该生成另一个表单,等等 这种方法有意义吗?或者更适合使用诸如camunda之类的BPM(而不是用户界面) 提前谢谢 流程引擎的工作原理是,只有当前任务才重要,引擎知道(通过bp

你好

我对CamundaFlowableBPMS有问题。我需要根据业务流程更改UI

例如:

  • 我有一个(用户任务)和camunda(可流动)应该在Vaadin中生成一个表单。然后它应该等待用户活动并继续。。。(或者camunda只需调用vaadin表单,等待后端处理结束并获得一些响应)
  • 如果我有另一个流程,camunda应该生成另一个表单,等等
  • 这种方法有意义吗?或者更适合使用诸如camunda之类的BPM(而不是用户界面)


    提前谢谢

    流程引擎的工作原理是,只有当前任务才重要,引擎知道(通过bpmn模型)下一步要做什么。您放弃了对流的总体控制,从而获得简化的更新和修改。 引擎异步工作,完成任务的用户不知道(也不需要知道)下一步将执行哪些活动

    也就是说,流程引擎通常不适合像“向导”一样的UI流。引擎将“TaskA”视为单个任务,将其持久化,然后在任务列表中创建一个未签名的“TaskB”,然后用户(不一定是同一用户)可以再次声明和处理该任务

    但是,如果您想坚持您的方法,请查看,这是一种行为模式,它对“向导”用户隐藏了底层异步延续


    有一个更老但仍然描述了如何使模式适应camunda过程引擎。基本上,您会在用户完成任务后阻塞并等待,如果后续任务再次需要用户处理,您会重定向到它。

    我找到了一些解决方案。只需在Camunda一侧使用“FormKey”。并在Vaadin应用程序中创建FormFactory(Factory方法模式),它按id返回所需的表单

    public CustomForm getForm(Task task) {
       String formKey = task.getFormKey();
    
       if(formKey.equalsIgnoreCase("formId1") {
          return new Form1(...);
       }
    
    
    etc
    

    这种方法将允许您使用其他按钮、自定义表单等

    如果您查看参考应用程序,例如flowable,您将看到表单仅用于指导任务。您在用户任务中描述了继续执行所需的内容,然后让其流动。用户最后会看到他们的任务列表。非常感谢您的总体回答!您是否有github中提供的演示应用程序?我很好奇你是如何实现的。