EXO: Exosculat Exoskeleton
EXO (EXOSCULAT, Latin for "account") is an automated system for service accounting, rating, and billing. EXO is a universal account manager (customer accounts) that contains a history of rated transactions. Accounts are controlled by BPMN processes whose activities are defined by Erlang functions. EXO, as an example of ERP.UNO, can be used as a prototype for building billing systems, banks, and other accounting systems.
Getting Started
BPE (Business Process Engine) defines the infrastructure for orchestrating business processes according to the BPMN standard and declarative rule-based systems. BPE transactionally stores all steps of business processes in KVS, a modern RocksDB-based database system.
$ sudo apt install erlang elixir build-essential cmake$ git clone https://github.com/erpuno/exo
$ cd exo
$ mix deps.get
$ iex -S mix
> EXO.bootIn parallel, open:
$ open http://localhost:8004/app/login.htmThis is an educational example of a preparatory course for interns, used to acquire skills in programming systems using the N2O.DEV libraries.
Project Structure
- Login Page
- Admin: BPE, FORM, KVS, N2O, MNESIA
- Back-office: Reports, Tariffs, Roles
- Consumer Panel: Profile, Consumption, Services
Static HTML Containers for Consumer
- profile.htm Consumer account
- consume.htm Service consumption
- service.htm Service settings and tariffs
Static HTML Containers for Back-Office
- reports.htm Reports
- tariffs.htm Tariff models
- domains.htm Role model
Static HTML Containers for Admin
- login.htm Login page
- bpe.htm All processes page
- form.htm All forms page
- process.htm Process history page
- kvs.htm All data chains page
- n2o.htm N2O service utility tables page
- mnesia.htm MNESIA database tables page
Core Modules
- application.ex Main Erlang/OTP application module
- schema.ex Data schema and its configuration
- routes.ex Web server HTML route configuration
- boot.ex Initial seed of test data
Form Editors
- phone_form.ex Authentication form
- process_form.ex Process creation form
- process_row.ex Table row form for process display
- hist_row.ex Table row form for process step display
Page Controllers
- adm_act.ex Process history page controller
- adm_bpe.ex BPE processes list page controller
- adm_form.ex FORM system forms page controller
- adm_kvs.ex KVS data page controller
- adm_n2o.ex N2O tables page controller
- adm_mnesia.ex MNESIA data page controller
- exo_login.ex Authentication page controller
- exo_tariffs.ex Tariff models configuration page controller
- exo_domains.ex System users administration page controller
- exo_service.ex Consumer service subscription page controller
Authentication
The authentication and authorization page, along with system sessions, is an important part of every ERP system. This example provides a PLAIN password HTML form with "1" and "3" working passwords for admin and consumer respectively.
Processes
A page listing BPE processes of the ERP system and a form to create them.
Forms
A page listing all forms of the ERP system.
Transactions
A page showing the history of BPE business process steps.
Educational Materials
Contributors
- Maxim Sokhatsky