2014-07-10 70 views
1

我想知道如何通過REST傳遞一個自定義對象來啓動JBPM 6.1.0.CR1中的進程。使用自定義參數在JBPM 6中啓動新進程

當我通過jbpm-console啓動一個進程時,會顯示錶單以輸入數據。有沒有辦法通過REST調用傳遞相同的數據?

我的最終目標是讓JMeter腳本啓動多個進程以測試系統的性能。

  • 即使通過自定義對象是不可行的,我想知道是否有可能通過基本類型(字符串,整數等) - 即使這樣,我可以燒製過程之後構建我的自定義對象。

  • 我試過JBPM文檔,但我無法理解如何使用查詢參數以及它是否適用於我的方案。

回答

1

我最後的解決方案是分析我的自定義對象到原語並將它們傳遞給REST(如map_ *查詢參數)。然後在腳本任務的流程中創建自定義對象(調用kcontext.put(「obj」,obj))。

這樣我保持簡單並避免佔用更多資源的XML/JSON編組。

當然,如果需要傳遞非常複雜的自定義對象,Kris提出的解決方案可能會更好 - 但是如果您的自定義對象很複雜,可能需要更多地重構/分析您的模型。

0

嘗試使用REST執行操作中,您可以發送XML命令,例如像StartProcessCommand,這可以包含自定義類型。這些自定義對象將使用JAXB序列化爲XML。如果您使用遠程Java REST客戶端,則它使用相同的方法。

0

您需要將您的kjar作爲maven依賴項添加到您的項目中,以創建通過jbpm-console創建的自定義對象。那麼你可以通過地圖。

爲了檢索與對象的值,你需要在地圖使用

RemoteRestRuntimeEngineFactory restSessionFactory = new RemoteRestRuntimeEngineFactory(process, 
       new URL("http://127.0.0.1:8080/business-central"), 
       "username, "pass"); 
RuntimeEngine engine = restSessionFactory.newRuntimeEngine(); 
TaskService taskService = engine.getTaskService(); 
Task task = taskService.getTaskById(taskId); 
long contentId = task.getTaskData().getDocumentContentId(); 
Content content = taskService.getContentById(contentId); 
**((Map< String,Object >) ContentMarshallerHelper.unmarshall(content.getContent(), null));** 
+0

嗨德州,感謝您的回答。我在最初的問題中並不清楚。我不想使用REST JBPM API。我想使用JBPM提供的純HTTP/REST方法,以避免加載/使用API​​。與Solr/ElasticSearch相似的功能。 – tpanagopoulos

相關問題