eae5f7dd2d
* imported patch from old message_improvements branch w/ burnettk * wip. * merging in changes from message_improvements * remove patch files that were accidendetally added. * Added a modal for editing a correlation. Added ability to delete whole correlation keys. A little css cleanup. * * Removing migration - will add back in at the end. * The Message models API should not require page and per_age parameters, it will return all. * The Message model list should return a full json description of all messages/correlations for all containing groups. * * wip * Add import, fix class name * Getting ./bin/pyl to pass * Getting ./bin/pyl to pass * Some fe lint fixes * Some ruff fixes * Commands to nuke poetry dirs * Temp skipping of a couple tests * Getting ./bin/pyl to pass * This needs to be back in * Revert back to main * Factored out data store handling * Working on factoring out collecting messages, has test failure * Formatting * Fixed up test failures * Remove commentted out lines * Adding fields * Fix merge issue * Re-enable modal * WIP * Untested relationships * Remove correlation key table * Remove retrieval expression from uniqueness * Remove commentted out lines * WIP * WIP * WIP * WIP * WIP * Make mypy pass * Getting formatters to pass * Add migration * WIP fixing tests * WIP fixing tests * WIP fixing tests * WIP fixing tests * WIP fixing tests * Getting ./bin/pyl to pass * Fix skipped test * Fix skipped test * Getting ./bin/pyl to pass * Remove unused method * Remove unused methods * Clean up unused code * Refactor to support creating single messages from the UI * Untested support for processing one process_group * WIP test * WIP test * Filled out test * Getting ./bin/pyl to pass * Message Editor Modal Work * Change migration and add in schemas. * Swtich to using the associated branch of the process BPMN.io mods * Get the backend returning messages created from the frontend to the drop down list in the BPMN.io editor. * Merge main, fix up test * Getting ./bin/pyl to pass * Show path in location * Rename var * install packages from bpmn-js-spiffworkflow as well for local development * process group api can add and update message models now w/ burnettk * backend tests are passing now w/ burnettk * the launch message edit button is loading the editor w/ burnettk * updated bpmn-js-spiffworkflow * pyl is passing w/ burnettk * updated bpmn-js-spiffworkflow w/ burnettk * updated bpmn-js-spiffworkflow w/ burnettk * fixed console errors w/ burnettk * a couple tweaks w/ burnettk * save the message json in the new format from the mform w/ burnettk * display the correlation props in the form w/ burnettk * default to empty schema so the format is obvious * allow removing correlation props from web ui w/ burnettk * added save notification when saving a message on a process model w/ burnettk * fixed broken test w/ burnettk * Updating test cases to new message format, tests are failing * support schema from messages in frontend * Fixing tests * Fixing tests * Fixing tests * removed references to correlation keys and removed unused components w/ burnettk * removed temp mesasge model edit button w/ burnettk * Make mypy pass * Fixing tests * Fixing tests * Getting ./bin/pyl to pass * save deleted messages before attempting to add new ones w/ burnettk * set state for the message id so it can be changed w/ burnettk * do not wait for the message id to be set since it is not necessary w/ burnettk * updated bpmn-js-spiffworkflow w/ burnettk * build images for this branch w/ burnettk * put location in path of message-models so we can control permissions on it w/ burnettk * fix black * some coderabbit suggestions * pull in spiff fix * Default schema to {} * Temp fix for invalid schema * updated bpmn-js-spiffworkflow * some updates for issue 1626 * minor name tweaks and attempts to update message dropdown in panel when message changes - does not work yet w/ burnettk * updated bpmn-js-spiffworkflow w/ burnettk * attempt to call add_message.returned event when message updates w/ burnettk * treat formData as a state in the MesasgeEditor so it can be updated when the form contents is modified w/ burnettk * updated bpmn-js-spiffworkflow w/ burnettk * Feature/merge correlation properties (#1693) * Merge XML Correlation properties with Process group properties * updates for messages w/ burnettk --------- Co-authored-by: theaubmov <ayoubaitlachgar98@gmail.com> Co-authored-by: jasquat <jasquat@users.noreply.github.com> * do not wait for message id state to be set to better support new messages w/ burnettk * updated SpiffWorkflow w/ burnettk * some cleanup from coderabbit and linting * added index to message tables, run typecheck in ci, and other updates while code reviewing w/ burnettk * updated bpmn-js-spiffworkflow w/ burnettk * remove branch to build --------- Co-authored-by: jasquat <jasquat@users.noreply.github.com> Co-authored-by: danfunk <daniel.h.funk@gmail.com> Co-authored-by: Jon Herron <jon.herron@yahoo.com> Co-authored-by: burnettk <burnettk@users.noreply.github.com> Co-authored-by: jasquat <2487833+jasquat@users.noreply.github.com> Co-authored-by: theaubmov <ayoubaitlachgar98@gmail.com> |
||
---|---|---|
.github | ||
bin | ||
connector-proxy-demo | ||
docs | ||
spiffworkflow-backend | ||
spiffworkflow-frontend | ||
.coderabbit.yaml | ||
.darglint | ||
.flake8 | ||
.gitignore | ||
.pre-commit-config.yaml | ||
.readthedocs.yaml | ||
.tool-versions | ||
CONTRIBUTING.rst | ||
Jenkinsfile | ||
LICENSE | ||
Makefile | ||
README.md | ||
dev.Dockerfile | ||
dev.docker-compose.yml | ||
docker-compose.yml | ||
editor.docker-compose.yml | ||
poetry.lock | ||
pyproject.toml |
README.md
spiff-arena
SpiffArena is a low(ish)-code software development platform for building, running, and monitoring executable diagrams. It is intended to support Citizen Developers and to enhance their ability to contribute to the software development process. Using tools that look a lot like flow-charts and spreadsheets, it is possible to capture complex rules in a way that everyone in your organization can see, understand, and directly execute.
Please visit the SpiffWorkflow website for a Getting Started Guide to see how to use SpiffArena and try it out. There are also additional articles, videos, and tutorials about SpiffArena and its components, including SpiffWorkflow, Service Connectors, and BPMN.js extensions.
Backend Setup, local
Remember, if you don't need a full-on native dev experience, you can run with docker (see below), which saves you from all the native setup. If you have issues with the local dev setup, please consult the troubleshooting guide.
There are three prerequisites for non-docker local development:
- python - asdf-vm works well for installing this.
- poetry -
pip install poetry
works - mysql - the app also supports postgres. and sqlite, if you are talking local dev).
When these are installed, you are ready for:
cd spiffworkflow-backend
poetry install
./bin/recreate_db clean
./bin/run_server_locally
Mac Port Errors: On a Mac, port 7000 (used by the backend) might be hijacked by Airplay. For those who upgraded to macOS 12.1 and are running everything locally, your AirPlay receiver may have started on Port 7000 and your server (which uses port 7000 by default) may fail due to this port already being used. You can disable this port in System Preferences > Sharing > AirPlay receiver.
Poetry Install Errors: If you encounter errors with the Poetry install, please note that MySQL and PostgreSQL may require certain packages exist on your system prior to installing these libraries. Please see the PyPi mysqlclient instructions and the pre-requisites for the Postgres psycopq2 adapter Following the instructions here carefully will assure your OS has the right dependencies installed. Correct these, and rerun the above commands.
Using PyCharm? If you would like to run or debug your project within an editor like PyCharm please see These directions for PyCharm Setup.
Keycloak Setup
You will want an openid server of some sort for authentication. There is one built in to the app that is used in the docker compose setup for simplicity, but this is not to be used in production, and non-compose defaults use a separate keycloak container by default. You can start it like this:
./keycloak/bin/start_keycloak
It'll be running on port 7002 If you want to log in to the keycloak admin console, it can be found at http://localhost:7002, and the creds are admin/admin (also logs you in to the app if running the frontend)
Frontend Setup, local
First install nodejs (also installable via asdf-vm), ideally the version in .tool-versions (but likely other versions will work). Then:
cd spiffworkflow-frontend
npm install
npm start
Assuming you're running Keycloak as indicated above, you can log in with admin/admin.
Run tests
./bin/run_pyl
Run cypress automated browser tests
Get the app running so you can access the frontend at http://localhost:7001 in your browser by following the frontend and backend setup steps above, and then:
./bin/run_cypress_tests_locally
Docker
For full instructions, see Running SpiffWorkflow Locally with Docker.
The docker-compose.yml
file is for running a full-fledged instance of spiff-arena while editor.docker-compose.yml
provides BPMN graphical editor capability to libraries and projects that depend on SpiffWorkflow but have no built-in BPMN edit capabilities.
Using Docker for Local Development
If you have docker
and docker compose
, as an alternative to locally installing the required dependencies, you can leverage the development docker containers and Makefile
while working locally. To use, clone the repo and run make
. This will build the required images, install all dependencies, start the servers and run the linting and tests. Once complete you can open the app and code changes will be reflected while running.
After the containers are set up, you can run make start-dev
and make stop-dev
to start and stop the servers. If the frontend or backend lock file changes, make dev-env
will recreate the containers with the new dependencies.
Please refer to the Makefile as the source of truth, but for a summary of the available make
targets:
Target | Action |
---|---|
dev-env | Builds the images, sets up the backend db and installs npm and poetry dependencies |
start-dev | Starts the frontend and backend servers, also stops them first if they were already running |
stop-dev | Stops the frontend and backend servers |
be-tests-par | Runs the backend unit tests in parallel |
fe-lint-fix | Runs npm lint:fix in the frontend container |
run-pyl | Runs all frontend and backend lints, backend unit tests |
Contributing
To start understanding the system, you might:
- Explore the demo site via the Getting Started Guide
- Clone this repo,
cd docs
, run./bin/build
, and open your browser to http://127.0.0.1:8000 to view (and ideally edit!) the docs - Check out our GitHub issues, find something you like, and ask for help on discord
Monorepo
This is a monorepo based on git subtrees that pulls together various spiffworkflow-related projects. FYI, some scripts:
ls bin | grep subtree
License
SpiffArena's main components are published under the terms of the GNU Lesser General Public License (LGPL) Version 3.
Support
You can find us on our Discord Channel. Commercial support for SpiffWorkflow is available from Sartography. Please contact us via the schedule a demo link on the SpiffWorkflow website to discuss your needs.