2013-04-22 78 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