Initiate a process
I would like to start a process using webservice call. Is it possible in Bonita Soft. Appreciate if anyone can help with some example.
Also is there anyway a Message Event can start a process without depending on any other process. Is there any example of how to do it.
I have seen this video but the message event (Pool 2) is derived from the first pool.
Here is the video link: https://www.youtube.com/watch?v=Sbi_BrRWBY0
Would be grateful if someone can help with these.
Thanks in Advance
2 answers
To start a process from a webservice, in my case, i have create one in my own WS API, the code look lioke that:
public ProcessInstance startProcessByName(String processName, Map initailContractValue, String initiator, APISession session) { ProcessAPI processAPI; try { IdentityAPI identityAPI = TenantAPIAccessor.getIdentityAPI(session); log.info("-- Recherche de l'utilisateur bonita [" + initiator + "]"); User user = identityAPI.getUserByUserName(initiator); log.info("-- lancement du processus bonita [" + processName + "]"); processAPI = TenantAPIAccessor.getProcessAPI(session); ProcessInstance processInstance; long processDefinitionId = processAPI.getLatestProcessDefinitionId(processName); ProcessDeploymentInfo infos = processAPI.getProcessDeploymentInfo(processDefinitionId); log.info("-- process [" + processName + "], processDefinition ID :[" + processDefinitionId + "]"); if (initailContractValue != null && !initailContractValue.isEmpty()) { if (initailContractValue != null) { String result = initailContractValue.entrySet().stream() .map(entry -> entry.getKey() + " - " + entry.getValue()).collect(Collectors.joining(", ")); log.info("-- param du processus :[" + result + "]"); } processInstance = processAPI.startProcessWithInputs(user.getId(), infos.getProcessId(), initailContractValue); } else { processInstance = processAPI.startProcess(user.getId(), infos.getProcessId()); } log.info("-- lancement du processus bonita [" + processName + "] -- DONE"); return processInstance; } catch (BonitaHomeNotSetException | ServerAPIException | UnknownAPITypeException | ProcessDefinitionNotFoundException | ProcessActivationException | ProcessExecutionException | UserNotFoundException | ContractViolationException ex) { log.error("Impossible de lancer le process avec pour id : " + processName, ex); } log.info("-- lancement du processus bonita [" + processName + "] -- FAIL"); return null; }
Hope it's will help,
Regards,
Comments
Hi bastien,
Thanks a lot for the code.
I will have a look and let you know how I get on.
Regards
Muhammad
So this is what I am trying now but can't move forward due to some error. Any idea what's happening.
I used Maven based project using Bonita 7.10.0
LoginAPI loginAPI = TenantAPIAccessor.getLoginAPI();
APISession session = loginAPI.login("walter.bates", "bpm");
ProcessAPI processapi = TenantAPIAccessor.getProcessAPI(session);
//When the application has finished processing, log out to delete the session:
loginAPI.logout(session);
---------------------------------Here is the error------------------------------------------------
The error is pointing at "TenantAPIAccessor.getLoginAPI(); "
java.lang.ClassNotFoundException: org.bonitasoft.engine.api.impl.ServerAPIFactory
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at org.bonitasoft.engine.api.impl.LocalServerAPIFactory.(LocalServerAPIFactory.java:34)
at org.bonitasoft.engine.api.PlatformAPIAccessor.getServerAPI(PlatformAPIAccessor.java:50)
at org.bonitasoft.engine.api.TenantAPIAccessor.getServerAPI(TenantAPIAccessor.java:41)
at org.bonitasoft.engine.api.TenantAPIAccessor.getAPI(TenantAPIAccessor.java:61)
at org.bonitasoft.engine.api.TenantAPIAccessor.getLoginAPI(TenantAPIAccessor.java:67)
at bonitaSoftTest.Main.main(Main.java:37)
Exception in thread "main" java.lang.ExceptionInInitializerError
at org.bonitasoft.engine.api.impl.LocalServerAPIFactory.(LocalServerAPIFactory.java:37)
at org.bonitasoft.engine.api.PlatformAPIAccessor.getServerAPI(PlatformAPIAccessor.java:50)
at org.bonitasoft.engine.api.TenantAPIAccessor.getServerAPI(TenantAPIAccessor.java:41)
at org.bonitasoft.engine.api.TenantAPIAccessor.getAPI(TenantAPIAccessor.java:61)
at org.bonitasoft.engine.api.TenantAPIAccessor.getLoginAPI(TenantAPIAccessor.java:67)
at bonitaSoftTest.Main.main(Main.java:37)
Caused by: java.lang.ClassNotFoundException: org.bonitasoft.engine.api.impl.ServerAPIFactory
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at org.bonitasoft.engine.api.impl.LocalServerAPIFactory.(LocalServerAPIFactory.java:34)
... 5 more