如何从java程序启动activiti工作流

如何从java程序启动activiti工作流,java,activiti,Java,Activiti,在ui级提交表单值后,我要求启动工作流。这意味着在提交侦听器中如何调用工作流,我做了。所有表单值都存储在一个对象中。现在我如何调用工作流,如何发送这些提交的表单值(对象)发送到工作流,因为我希望在另一个表单(在UI级别)中显示这些表单值。在用户批准这些值后,它将转到下一个用户,他也被批准,然后最终完成工作流 例如:在ui级别,我创建了带有用户名、电子邮件、地址、手机等字段的表单。在我的工作流启动并通过用户(用户A、用户B)的两级验证批准数据后,最后单击提交 同时,我实现了收件箱的代码,在收件箱中

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

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

同时,我实现了收件箱的代码,在收件箱中,我想显示这些表单值。每当用户提交表单时,它就会进入收件箱,在收件箱中,我会收到审批请求,我会在那里审批该表单

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


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

首先,您要实例化ProcessEngine类,如下所述:

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

之后,获取RuntimeService的一个实例,如下所述:

RuntimeService RuntimeService=processEngine.getRuntimeService()

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

ProcessInstance ProcessInstance=
startProcessInstanceByKey(“processId”)


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

提交值后,它将进入流程图中的下一级。因此,这里将创建一个新的
任务ID
。下面是使用
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());
}
FormService FormService=processEngine.getFormService();
TaskService taskService1=processEngine.getTaskService();
TaskQuery taskQuery1=taskService1.createTaskQuery().taskAssignee(“gonzo”);
List taskList1=taskQuery1.List();
int j=0;
对于(任务:任务列表1){
j++;
TaskFormData TaskFormData=formService.getTaskFormData(task.getId());
List 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()+”类型:“+formProperty.getType().getName());
out.println(task.getId()+”:“+task.getName()+”值:“+formProperty.getValue());
}
out.println(“任务”+j+”是“+task.getId()+”:“+task.getName()+”:“+task.getAssignee()+”:“+task.getDescription());
}
上面的代码帮助您获取所有表单属性,如
类型
名称

您还可以通过Activiti提供的RESTAPI实现相同的属性。这是我的建议
.

首先感谢您的回复Joshi,不管您给出了我已经尝试过的解决方案。但是我想假设我创建了一个vaadin项目,我创建了一些注册表。我通过vaadin ok创建了一个我自己的收件箱(UI)应用程序。现在我的问题是在提交任何注册表之后,如何获取已提交的注册表单值会转到收件箱中的“我的收件箱”。我想将这些值显示到收件箱的UI中。@sai576希望有帮助