0

我要求在 ui 级别提交表单值后启动工作流。在提交侦听器中表示如何调用工作流,我将所有表单值存储在一个对象中。现在如何调用工作流,如何发送这些提交的表单值(对象)发送到工作流,因为我想在其他表单中显示这些表单值(在 UI 级别)。用户批准这些后,它会转到下一个用户,他也被批准,然后最终完成工作流。

例如:在 ui 级别中,我使用用户名、电子邮件、地址、移动设备等字段创建表单。最后单击提交,在我的工作流程启动并通过用户(用户 A、用户 B)的两级验证批准数据后。

同时我为收件箱实现代码,在该收件箱中我想显示这些表单值。每当用户提交表单时,它都会进入收件箱,在收件箱内我会收到批准请求,我会批准那个。

目前我创建了工作流启动、用户 A、用户 B、结束事件。每当我启动流程实例流程时,我都会显示正在运行的任务、任务服务中的受让人等,但我不知道如何传递提交的表单从 ui 级别到工作流的值,并在收件箱中显示该数据。

我知道通过 getVariables() 我们获得了所有属性。但是如何从 ui 到工作流以及从工作流到 ui?

4

2 回答 2

1

首先,您必须实例化 ProcessEngine 类,如此处所述:

ProcessEngine processEngine = ProcessEngineConfiguration.createProcessEngineConfigurationFromResourceDefault() .buildProcessEngine();

之后得到一个 RuntimeService 的实例,如此处所述:

RuntimeService runtimeService = processEngine.getRuntimeService();

您可以使用以下方法创建流程实例:

ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("processId");

您需要将 activiti 包中可用的所有 jars 文件附加到您的项目库中。

于 2013-05-03T12:40:13.850 回答
1

提交值后,它会进入流程图中的下一个级别。所以这里taskId将创建一个新的。这是用于获取表单属性的Java APIs代码Activiti

FormService formService = processEngine.getFormService();
TaskService taskService1 = processEngine.getTaskService();
TaskQuery taskQuery1 = taskService1.createTaskQuery().taskAssignee("gonzo");
List<Task> taskList1 = taskQuery1.list();
int j = 0;
for(Task task : taskList1){
    j++;
TaskFormData taskFormData = formService.getTaskFormData(task.getId());
List<FormProperty> listFormProperty = taskFormData.getFormProperties();
for(FormProperty formProperty : listFormProperty){
       out.println(task.getId()+":"+task.getName()+"id:"+formProperty.getId());
       out.println(task.getId()+":"+task.getName()+"name:"+formProperty.getName());
       out.println(task.getId()+":"+task.getName()+"type:"+formProperty.getType().getName());
       out.println(task.getId()+":"+task.getName()+"value:"+formProperty.getValue());

    }

    out.println("task "+j+"is "+task.getId()+":"+task.getName()+":"+task.getAssignee()+":"+task.getDescription());
}

上面的代码可帮助您获取所有表单属性,例如,type等等。namevalue

您也可以通过 Activiti 提供的 REST API 实现相同的属性。这是 表单属性 API

于 2013-05-06T06:04:55.390 回答