SO deploying custom BPMN workflows with code Proposal
SO - deploying custom BPMN workflows (with code) Proposal and Po. Cs Lukasz Grech, Lukasz Muszkieta (Nokia) January 15 th, 2020 Seshu Kumar M 6/16
Primary problem How to: • deploy additional SO workflows • …along with Java code • …preferably in runtime Without a need to: • modify SO code • rebuild SO image Custom implementation BPMNs Java/Groovy code SO • restart SO application 2
Additional goals How to: • separate custom (use case specific) workflows from core SO implementations • increase SO modularity • increase SO maintainability • make integration testing of new workflows easier 3
Current SO deployment ed lat e N-r PM ff B lds stu Ho so so-bpmn-infra app. jar so-sdnc-adapter app. jar so-sdc-controller app. jar so-vfc-adapter app. jar … app. jar 4
Current SO deployment (so-bpmn-infra container) so-bpmn-infra container SO BPMNs (Practically) no way to: SO Java/Groovy code • modify SO Springboot app in run-time • introduce new BPMNs • introduce new code Embedded Camunda engine Embedded Tomcat app. jar Single Springboot app 5
Proposed SO deployment (so-bpmn-infra container) so-bpmn-infra container Java/Groovy code BPMNs Custom app (war) SO BPMNs SO Java/Groovy code • Possibility to add new applications in runtime • SO is just one of the applications • No need to modify SO codebase in order to add new workflows • Better separation between SO core implementation and custom use-cases SO app (war) Shared Camunda engine Problem to solve: Custom apps will be wiped out by Kubernetes during image reinstallation Stand-alone Tomcat 6
Proposed SO deployment in details - Guilin Persistent storage (NFS) webapp directory so-bpmn-infra container Stand-alone Tomcat BPMNs lib directory Custom app (war) s use Common Java/Groovy code SO BPMNs SO Java/Groovy code SO app (war) Shared Camunda engine 7
Guilin Scope - Proposed ü Monitoring UI to be reused for the on-boarding process. ü We will check on naming the component to better one, yet to be decided SO Monitoring UI War File Deployment Recipe update Catalog DB BPMN Infra 8
Thanks
Two Po. Cs implemented 1. Without ONAP/SO • pure Camunda/Tomcat • sample WAR-based applications used 2. Inside ONAP environment • ONAP Dublin release used • SO deployment changed to WAR-based application 10
Po. C #1 without ONAP/SO 1. Without ONAP/SO • pure Camunda/Tomcat • sample WAR-based applications used 2. Inside ONAP environment • ONAP Dublin release used • SO deployment changed to WAR-based application 11
Po. C #1 – things to check Common Spring beans Common Groovy code Common Java classes common code (lib) BPMNs x=10 z=my. Obj Spring beans Groovy code • Call common Spring beans and Groovy code • Use common Java classes local Java classes some app (war) BPMNs • Call own Spring beans and Groovy code Spring beans Groovy code • Call BPMNs from other apps… • … even if they’re using own Spring beans and Groovy code • Pass execution parameters from one BPMN to another local Java classes another app (war) 12
Po. C #1 – things checked Common Spring beans Common Groovy code Common Java classes common code (lib) BPMNs x=10 z=my. Obj Spring beans Groovy code ü Call common Spring beans and Groovy code ü Use common Java classes local Java classes some app (war) BPMNs ü Call own Spring beans and Groovy code Spring beans Groovy code ü Call BPMNs from other apps… ü … even if they’re using own Spring beans and Groovy code ü Pass execution parameters from one BPMN to another local Java classes another app (war) 13
Po. C #1 – summary 29 -May-2019 13: 19: 15. 869 INFO [Container. Background. Processor[Standard. Engine[Catalina]]] org. camunda. commons. logging. Base. Logger. log. Info ENGINE-08023 Deployment summary for process archive 'camunda_poc_app 1': app 1_groovy_process. bpmn app 1_variable_test. bpmn >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> App 1 Local. Delegate. Bean invoked App 1 Local. Component. Bean. bean. Method() invoked COMMON Delegate Bean invoked COMMON Spring. Bean. bean. Method() invoked App 2 Local. Delegate. Bean invoked App 2 Local. Component. Bean. bean. Method() invoked COMMON Delegate Bean invoked COMMON Spring. Bean. bean. Method() invoked App 2 Local. Groovy. Class. some. Method() invoked Common. Groovy. Class. some. Method() invoked https: //wiki. onap. org/display/DW/SO+-+deploying+custom+workflow+applications+-+Po. C+%231 14
Po. C #2 inside ONAP environment 1. Without ONAP/SO • pure Camunda/Tomcat • sample WAR-based applications used 2. Inside ONAP environment • ONAP Dublin release used • SO deployment changed to WAR-based application 15
Po. C #2 - goals • Deploy new Building Block in run-time (including some Java code) • Add new BB to Service Instantiation flow • Instantiate sample service instance (includes new BB execution) • Call some SO BPMN from new BB 16
Po. C #2 deployment Persistent storage (NFS) webapp directory so-bpmn-infra container Stand-alone Tomcat BPMNs lib directory Custom app (war) s use Common Java/Groovy code SO BPMNs SO Java/Groovy code SO app (war) Shared Camunda engine 17
Po. C #2 - highlights • Changed packaging of so-bpmn-infra application from JAR to WAR • New so-bpmn-infra Docker image created - Image of Tomcat with integrated Camunda used as a base (provided by Camunda) • Tomcat webapps directory mounted on ONAP NFS 18
Po. C #2 demo
Thank you
- Slides: 20