An elevator is far more than a steel box going up and down a rail
For this project, we had to solve two main technical challenges:
To solve the first challenge we designed a DSL that can describe a component configuration flow in a declarative way.
A Workflow Generator service digests the component configuration to produce a JSON version of the flow. When engineers configure a new component, the User Interface (a single page app written with ReactJS) interprets the JSON tree and draws a wizard to complete the configuration. After the engineer has configured the component, the system should produce the respective bill of materials.
As for the configuration flows, material selection rules need to be updated by non-coders. To achieve this, we relied on the business automation capabilities offered by Drools and the Business Central; we laid out the rules in Guided Decision Tables, and implemented a custom Maven plugin to run them on a Kogito microservice.
The application of the microservices pattern proved to be effective for this project. We were able to choose the best technology for the task at hand:
Schindler Engineers can configure full blown elevator projects in minutes; they are much faster in producing quotations for prospective clients and bill of materials for suppliers.
The application can withstand the need for regular updates to the configurations and materials catalogue without expensive code changes.