2013-04-22 77 views
0

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

例如:在ui级别,我使用字段username,email,address,mobile等创建表单,最终点击submit,在我的工作流启动并通过用户(用户A,用户B)的两级验证批准数据后, 。

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

目前我创建了工作流开始,用户A,用户B,结束events.Whenever我开始流程实例流开始现在我显示哪些任务正在运行,谁是受托人等任务服务,但我不知道如何将提交的表单值从ui级别传递到工作流程,并将该数据显示在收件箱中。

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

回答

1

首先,你必须实例化流程引擎类作为这里提到:

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

之后得到RuntimeService的一个实例,这里提到:

RuntimeService runtimeService = processEngine.getRuntimeService();

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

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

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

+0

第一thankx为你的回应乔希,无论你给我的解决方案,我已经try.but但我想我想创建一个vaadin项目,我创建了一些注册表单ok.I创建了一个更多我自己的收件箱(UI)应用程序通过vaadin ok.Now我的问题是在提交任何注册表后,它会批准我的收件箱中的收件箱如何获取提交的注册表单值。我想将这些值显示在我的收件箱UI中。 – sai576 2013-05-05 06:12:58

+0

@ sai576希望[回答](http://stackoverflow.com/questions//how-to-initiate-activiti-workflow-from-java-program/16392856#16392856)很有用 – Joshi 2013-05-07 11:11:57

1

一旦您提交了您的值,它就会进入流程图中的下一个级别。所以这里会创建一个新的taskId。下面是其使用Activiti 提供Java APIs得到窗体属性代码:

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