bptlab / scylla

Extensible BPMN process simulator
MIT License
19 stars 9 forks source link

Containerizing application & creating web application #47

Open hpl002 opened 3 years ago

hpl002 commented 3 years ago

For my master thesis i creating a simple web application intended to be used to enhance existing business processes and patient careflows at a local hospital.

My goal being to make it easy to go from process log(.xes) to simulation model. The tool should be usable by stakeholders who are not experts in simulation, but rather their respective domain.

After reading some works regarding the current state of BPS this project seems as a viable alternative as a simulation engine, as much of the heavy lifting is done. A crucial criteria for me being that its open source and not simply a black box, e.g., bimp.

I intend to containerize scylla in a docker container and make its core functionality available through web endpoints. From what i have seen on current issues and project boards, this is seemingly something that you are already planning on doing.

Ref. the project about Create Scylla Web Application https://github.com/bptlab/scylla/projects/14 by @LeonBein

I would be happy to get started on this effort and of course share my work once this is completed.

But before i can start this i need some more information on the project itself and its functionality, this is already something that i have mentioned in issue #46. The wiki should be enhanced with the following:

  1. The wiki should be populated with any and all works that are directly affiliated with this project.
  2. A section about how to get started should also be added. This should include a guide that provides all the necessary details and files required for a user to perform a simple simulation.

Looking forward to hearing from you!

BR,

Herman

LeonBein commented 3 years ago

I like the idea of a "how to get started" or quickstart section. Potentially it should even be put it into the root readme? I opened a new branch for now, feel free to contribute which information you find most helpful (linking to the simulation input wiki pages is a good starting point).

Regarding the web application: There exist two interesting branches. The WebSwing branch uses WebSwing to make the Java desktop application accessible via browser (which is referenced in project 14). The dev_newUi branch explores using the camunda bpmn-js bpmn modeler, which is originally meant for web apps, as means for simulation configuration. Both branches are discontinued, but the approaches might be interesting. If you want to integrate the existing Java UI into your application, WebSwing (which I think has made advances over the years) might be a technlogy to choose. If you want to write a new web UI, and basing the simulation configuration it on a bpmn modeler is a favourable approach for you, bpmn-js might be worth looking at.

How did you plan to integrate? Integrate the existing UI or just use the "backend" and write a new UI?

hpl002 commented 3 years ago

I agree regarding the documentation. A getting started section with some minimal examples would be very useful. I can contribute some as i discover them myself.

Regarding the containerization. The java app will be exposed via a web server which then exposes endpoints that pertain to core functionality. The app itself will be wrapped in a docker container. The API will be well documented and evolve as i move along. Documentation will be written in accordance with the Open API specification (swagger 3.0).

The front end can then be built using any modern framework as all communication is via the REST API. The plan being to incorporate the bpmn-js modeler

LeonBein commented 3 years ago

For a (a bit chaotic) set of example files, you can have a look at the samples folder. For instance, the most simple configuration is probably p0_globalconf.xml as global configuration, p2_normal.bpmn as model, and p2_normal_sim.xml as simulation configuration. Also src\test\resources\BatchPlugin might be interesting, these are the models and configurations we use to test the batch plugin, and they contain a small set of bpmn elements.

Regarding the application, I'm looking forward to the results. A UI for setting the simulation files and running the simulation should be easy to design. A new UI for creating the configurations might be a bit trickier, but in general the GlobalConfigurationCreator and SimulationConfigurationCreator classes should work independent of the UI.

hpl002 commented 3 years ago

Have you had a look at the bpSIM specification? Thinking that might be a good way of making the simulator configurable.

The simulator input would then be a file conforming to the bpSIM specification. This file can then be created by a UI, a external system, etc.

The simulator would then parse the file into its own internal configuration.

Have not researched the extensibility of the specification yet. Assuming it is up to date with the latest BPMN release as it was published in 2014 and bpSIM was published in 2016.

LeonBein commented 3 years ago

No, I was not aware of this standard. Looking at Tsun's thesis, he mentions it, but only regarding another BPS tool, so I assume he knew it, but didn't build Scylla to conform (EDIT: Looks like the thesis references an older version). It might be interesting to build a translator for bpSIM configurations to Scylla configurations. However, because of the plugin orientation, I am not sure how well Scylla would work with an external input format. Do you know (web) tools that can create bpSIM specifications?

hpl002 commented 3 years ago

Provided that bpSIM is a extension of BPMN then it should be possible to use the bpmn-js. I am also fairly certain that the editor can be extended with custom elements.

The translator function that converts the diagram into a XML file will have to be altered to support any of these custom elements.

Provided that its a pretty popular project then i assume that adding custom elements is a feature that the community has already addressed.