This is a modelling and execution platform for S-BPM processes, based on microservices powered by Spring Boot. The modelling platform is based on Angular 1, the frontend for the execution platform, however, is based on Angular 2. Basically, the platform consists of the following modules:
- ServiceDiscovery: Automatic detection of devices and services.
- ConfigurationService: Central repository for configuration files.
- ProcessModelStorage: This is the process repository.
- ProcessEngine: Responsible for the execution of processes, based on Akka.
- EventLogger: Logs events during execution, exports logs in CSV format, manipulates PNML files and transforms manipulated PNML files to OWL files.
- Gateway: Authentication and authorization service and handles the requests of the process execution frontend (GUI).
- Persistence: Hibernate mapping of the database tables.
- ExternalCommunicator: For the support of external projects.
- GUI-Dev: Development project for the Angular 2 execution platform frontend (With some dev tools, with node server backend).
- GUI: Production project for the Angular 2 execution platform frontend (minified, uglified, with Spring Boot backend).
- ModellingPlatform-Dev: Development project for the Angular 1 modelling platform frontend (with node server backend).
- ModellingPlatform: Production project for the Angular 1 modelling platform frontend (with Spring Boot backend).
A new version of the S-BPM modelling platform is available here.
Functionality | Implemented | Comment |
---|---|---|
Internal Subjects | Yes | - |
Multisubjects | No | - |
External Subjects | Yes | partially (Engine) |
Function States | Yes | - |
Send States | Yes | - |
Receive States | Yes | - |
Timeouts | Yes | partially (Engine) |
Refinements | Yes | partially (Engine) |
Business Objects | Yes | - |
Start Process | Yes | - |
Stop Process | Yes | - |
Nested Business Objects | Yes | partially (Engine) |
OWL-Import | Yes | standard-pass-ont v0.7.2. & v0.7.5. |
Connected Processes | Yes | partially (Engine) |
Multiprocesses | Yes | partially (Engine) |
Event logging | Yes | Json and CSV |
Functionality | Implemented | Comment |
---|---|---|
SID View | yes | - |
SBD View | yes | - |
Subjects | yes | - |
Message Connector | yes | - |
Message Types (Business Objects) | yes | - |
Send State | yes | - |
Receive State | yes | - |
Function State | yes | - |
OWL-Import | no | standard-pass-ont |
OWL-Export | yes | - |
ZoomIn/Out | no | - |
Customizability | no | - |
In this section you will find Master's theses, which provide further information about the project.
- Development of a Microservice-based Architecture for Storing and Executing Subject-oriented Processes (german) by Stefan Stani Link
- Java Platform (JDK) 8
- MySQL 5.1-5.7
Development only:
- NodeJS for Angular development in GUI-Dev and ModellingPlatform-Dev
- Gulp for Angular development in ModellingPlatform-Dev
Please execute following statements to create the schema and the db user in your MySQL database: DB_setup.sql
- Start the MySQL Service
- Go to Setup/start_windows
- Open start.bat
- Start the MySQL Service
- Go to ServiceDiscovery and run in cmd:
gradlew bootRun
- Go to ConfigurationService and run in cmd:
gradlew bootRun
- Go to ProcessModelStorage and run in cmd:
gradlew bootRun
- Go to ProcessEngine and run in cmd:
gradlew bootRun
- Go to Gateway and run in cmd:
gradlew bootRun
- Go to ExternalCommunicator and run in cmd:
gradlew bootRun
- Go to EventLogger and run in cmd:
gradlew bootRun
- Go to GUI and run in cmd:
gradlew bootRun
- Go to
http://localhost:3000
- Go to ModellingPlatform and run in cmd:
gradlew bootRun
- Go to
http://localhost:4000
If you prefer to run the jar files, without using gradlew:
- Go to builds
- run in cmd:
java -jar ModellingPlatform-0.0.1-SNAPSHOT.jar
- Go to
http://localhost:4000
Just for development purposes, not for production!
- run in cmd:
npm install
- Go to GUI-Dev and run in cmd:
npm start
- in case of any errors when starting the first time, please stick to the installation guide of ng2-admin
- Go to
http://localhost:3000
Just for development purposes, not for production!
- Run
npm install -g yo bower grunt-cli gulp && npm install && bower install
to install required dependencies. - Go to ModellingPlatform-Dev and run in cmd:
npm install && bower install
- Run in cmd:
gulp serve
- Go to
http://localhost:3000
Basically, the following ports are used:
Service | Port |
---|---|
Gateway | 10000 |
ServiceDiscovery | 8761 |
ConfigurationService | 8888 |
ProcessModelStorage | Random |
ProcessEngine | Random |
ExternalCommunicator | Random |
EventLogger | Random |
GUI | 3000 |
ModellingPlatform | 4000 |
To change the port configuration, change the server port in this file e.g. Gateway: [application.properties] (Gateway/src/main/resources/application.properties)
Note: If you change the port of the Gateway, make sure to change the restApi configuration in processes.service.ts and to rebuild the GUI-Dev and GUI project according to the guide provide below.
In general, the authentication concept ist based on RBAC. Each user can be assigned to one or more roles. Each role can be assigned to one more rules.
The current *.csv files for the user configuration:
User | Roles | Password |
---|---|---|
robert | BOSS | 1234 |
matthias | ADMIN, EMPLOYEE | 1234 |
stefan | EMPLOYEE | 1234 |
maksym | EMPLOYEE | 1234 |
marlene | TRAVEL MANAGEMENT | 1234 |
Any further development concerning the ServiceDiscovery, the ConfigurationService, the Gateway, the ProcessModelStorage, the ExternalCommunicator or the ProcessEngine can be done directly in java. For further information please use the Spring Boot Documentation
Note: If you do any changes to a module, you have to rebuild it with gradlew build
Any further development concerning the GUI has to be done in the GUI-Dev module by using typescript and Angular 2. For further information please use the Angular Documentation and the ng2-admin Documentation.
Note: If you do any changes to the GUI-Dev project, you have to update the GUI project afterwards:
- Go to GUI-Dev and run in cmd:
npm run prebuild:prod && npm run build:prod
- Go to GUI/src/main/resources/public/ and remove of all of its content.
- Go to GUI-Dev/dist and move all of its content to GUI/src/main/resources/public/.
- Go to GUI and run
gradlew build
orgradlew run
Any further development concerning the ModellingPlatform has to be done in the ModellingPlatform-Dev module by using javascript and Angular 1.
Note: If you do any changes to the ModellingPlatform-Dev project, you have to update the ModellingPlatform project afterwards:
- Go to ModellingPlatform-Dev and run in cmd:
gulp build
- Go to ModellingPlatform/src/main/resources/public/ and remove of all of its content.
- Go to ModellingPlatform-Dev/dist and move all of its content to ModellingPlatform/src/main/resources/public/.
- Go to ModellingPlatform and run
gradlew build
orgradlew run
Note: You can change the appearance of the elements by modify the following file: ui-joint-shape.template.scss