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

时间:2013-04-22 09:06:01

标签: java activiti

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

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

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

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

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

2 个答案:

答案 0 :(得分:1)

首先,您要实例化此处提到的ProcessEngine类:

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

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

RuntimeService runtimeService = processEngine.getRuntimeService();

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

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

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

答案 1 :(得分: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());
}

以上代码可帮助您获取所有表单属性,例如typenamevalue等等。

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