could not find work item handler for Database
kojot Sep 11, 2014 4:16 AMHello, sorry for my english. 
I want create service task, which will sent data to database, and download data.
I use kie workbench and jbpm 6.
I created service task in WorkDefinition:
[
"name" : "Database",
"parameters" : [
"select" : new StringDataType(),
"host" : new StringDataType(),
"port" : new StringDataType(),
"dbname" : new StringDataType(),
"user" : new StringDataType(),
"pass" : new StringDataType(),
],
"displayName" : "Database",
"icon" : "defaultemailicon.gif"
],
Then, I created java file in src/main/java/com/sample/DatabaseWorkItemHandler.java
| 1. | | | package com.sample; | 
| 2. | | | |
| 3. | | | import org.jboss.solder.logging.Logger; | 
| 4. | | | import org.kie.api.runtime.process.WorkItem; | 
| 5. | | | import org.kie.api.runtime.process.WorkItemHandler; | 
| 6. | | | import org.kie.api.runtime.process.WorkItemManager; | 
| 7. | | | |
| 8. | | | import java.sql.*; | 
| 9. | | | import java.util.Map; | 
| 10. | | | |
| 11. | | | public class DatabaseWorkItemHandler implements WorkItemHandler { | 
| 12. | | | |
| 13. | | | public void executeWorkItem(WorkItem workItem, WorkItemManager manager) { | 
| 14. | | | |
| 15. | | | try { | 
| 16. | | | // extract parameters | 
| 17. | | | String select = (String) workItem.getParameter("select"); | 
| 18. | | | String host = (String) workItem.getParameter("host"); | 
| 19. | | | String port = (String) workItem.getParameter("port"); | 
| 20. | | | String dbname = (String) workItem.getParameter("dbname"); | 
| 21. | | | String user = (String) workItem.getParameter("user"); | 
| 22. | | | String pass = (String) workItem.getParameter("pass"); | 
| 23. | | | |
| 24. | | | String url = "jdbc:postgresql://" + host + ":" + port + "/" | 
| 25. | | | + dbname; | 
| 26. | | | Class.forName("org.postgresql.Driver"); | 
| 27. | | | Connection db = DriverManager.getConnection(url, user, pass); | 
| 28. | | | Statement stmt = db.createStatement(); | 
| 29. | | | |
| 30. | | | ResultSet rs = stmt.executeQuery(select); | 
| 31. | | | int count = rs.getMetaData().getColumnCount(); | 
| 32. | | | Map res = workItem.getResults(); | 
| 33. | | | res.put("columnCount", count); | 
| 34. | | | while (rs.next()) { | 
| 35. | | | for (int i = 0; i < count; i++) { | 
| 36. | | | Object ob = rs.getObject(i); | 
| 37. | | | res.put("column_" + i, ob.toString()); | 
| 38. | | | } | 
| 39. | | | } | 
| 40. | | | |
| 41. | | | // notify manager that work item has been completed | 
| 42. | | | manager.completeWorkItem(workItem.getId(), null); | 
| 43. | | | } catch (Exception ex) { | 
| 44. | | | Logger.getLogger(this.getClass().getName()).error( | 
| 45. | | | "Cos jest nie tak", ex); | 
| 46. | | | } | 
| 47. | | | } | 
| 48. | | | |
| 49. | | | public void abortWorkItem(WorkItem workItem, WorkItemManager manager) { | 
| 50. | | | |
| 51. | | | // Do nothing, notifications cannot be aborted | 
| 52. | | | |
| 53. | | | } | 
| 54. | | | |
| 55. | | | } | 
When I click play in "Process Definitions", i have got statement "could not find work item handler for Database"