This commit is contained in:
burnettk 2024-07-03 10:12:52 -04:00
parent 23c97d6417
commit f3b01db966
No known key found for this signature in database
30 changed files with 343 additions and 339 deletions

View File

@ -3,25 +3,25 @@ title: "How We Compare to the Competition"
subtitle: "See how we measure up, feature by feature, to other leading business workflow engines."
date: 2023-09-27T12:20:00-05:00
draft: false
description: SpiffWorkflow is a feature rich implementation of the BPMN standard, with years of development and testing behind it. See how we compare to other workflow engines.
description: SpiffWorkflow is a feature-rich implementation of the BPMN standard, with years of development and testing behind it. See how we compare to other workflow engines.
images: ["/images/opengraph/compare.png"]
cssClass: "section-compare"
---
## How do you compare to Camunda?
Camunda is a leading open source workflow engine, and is based on the same core platform as offerings from IBM, Flowable, Appian and others.
Camunda is a leading open-source workflow engine and is based on the same core platform as offerings from IBM, Flowable, Appian, and others.
Many of the comparisons here are also applicable to these other systems.
{{< tiles class="compare">}}
{{< tile title="Camunda" icon="java" >}}
**Java Developer Friendly**
<p>Camunda focuses on supporting professional software engineers, allowing them to use their development environments of choice to write the code behind a BPMN Diagram. It provides introspection and analytics tools for decision makers within a company.
**Java Developer Friendly**
<p>Camunda focuses on supporting professional software engineers, allowing them to use their development environments of choice to write the code behind a BPMN Diagram. It provides introspection and analytics tools for decision-makers within a company.
{{< /tile >}}
{{< tile title="SpiffWorkflow" icon="citizen" class="highlighted">}}
**Citizen Developer Friendly**
<p>We focus on putting automation tools in the hands of decision makers throughout the company. We use BPMN as a tool for collaboration in an interdisciplinary effort of streamlining your internal processes, engaging everyone in making things work better.
<p>We focus on putting automation tools in the hands of decision-makers throughout the company. We use BPMN as a tool for collaboration in an interdisciplinary effort of streamlining your internal processes, engaging everyone in making things work better.
{{< /tile >}}
{{< /tiles >}}
@ -38,104 +38,98 @@ See how we compare to Camunda v8 on a number of key elements of a workflow engin
### End To End Process Orchestration
Both Camunda and SpiffWorkflow provide full end to end process orchestration - we don't solve a small specific problem. We help you improve your overall process.
Both Camunda and SpiffWorkflow provide full end-to-end process orchestration - we don't solve a small specific problem. We help you improve your overall process.
{{< compare_table >}}
{{< compare_row title="Human Tasks" sw="true" cm="true">}}
Ability to create web forms that can be completed by end users. SpiffWorkflow uses an open standard (Json Schema) Camunda uses a proprietary Form Builder.
Ability to create web forms that can be completed by end users. SpiffWorkflow uses an open standard (JSON Schema); Camunda uses a proprietary Form Builder.
{{</compare_row>}}
{{< compare_row title="Automated Tasks" sw="true" cm="true">}}
Script, Service, Decision Tables - the ability to define end execute tasks automatically.
Script, Service, Decision Tables - the ability to define and execute tasks automatically.
{{</compare_row>}}
{{< compare_row title="APIs & MicroServices" sw="true" cm="true">}}
Create and expose new APIs and Micro Services from BPMN Diagrams
Create and expose new APIs and Micro Services from BPMN Diagrams.
{{</compare_row>}}
{{< compare_row title="External Applications" sw="true" cm="true">}}
Connect with external applications through a standard protocol. SpiffWorkflow users REST based APIs and Json Schemas, Camunda8 users gRPC
{{</compare_row>}}
Connect with external applications through a standard protocol. SpiffWorkflow uses REST-based APIs and JSON Schemas; Camunda8 uses gRPC.
{{</compare_table>}}
### Open Standards
Both systems are founded on open standards that have seen substantial research, are backed by well respected international organizations, and are widely across the industry.
Both systems are founded on open standards that have seen substantial research, are backed by well-respected international organizations, and are widely used across the industry.
{{< compare_table >}}
{{< compare_row title="BPMN 2.0" sw="true" cm="true">}}
BPMN is a flow chart like notation that models the tasks and events within a complete business process. BPMN 2.0 is maintained by the [OMG](https://www.omg.org/) an international standards body.
BPMN is a flowchart-like notation that models the tasks and events within a complete business process. BPMN 2.0 is maintained by the [OMG](https://www.omg.org/), an international standards body.
{{</compare_row>}}
{{< compare_row title="DMN" sw="true" cm="true">}}
A spreadsheet like notation that describes repeatable business decisions concisely and comprehensively. DMN is also maintained by the [OMG](https://www.omg.org/).
A spreadsheet-like notation that describes repeatable business decisions concisely and comprehensively. DMN is also maintained by the [OMG](https://www.omg.org/).
{{</compare_row>}}
{{< compare_row title="CMMN" sw="" cm="true">}}
Case Management - for describing processes that intrinsically unpredictable, not repeatable, weekly structured. CMMN is also maintained by the [OMG](https://www.omg.org/).
{{</compare_row>}}
{{< compare_row title="JSon Schema" sw="true" cm="true">}}
SpiffWorkflow users Json Schemas to describe web forms, data stores and other internally modeled systems according to a well established standard.
Case Management - for describing processes that are intrinsically unpredictable, not repeatable, and weakly structured. CMMN is also maintained by the [OMG](https://www.omg.org/).
{{</compare_row>}}
{{< compare_row title="JSON Schema" sw="true" cm="true">}}
SpiffWorkflow uses JSON Schemas to describe web forms, data stores, and other internally modeled systems according to a well-established standard.
{{</compare_table>}}
### Analytics and Optimization
The ability to track workflow processes as they execute, and to use that information to improve the process over time.
The ability to track workflow processes as they execute, and to use that information to improve the process over time.
{{< compare_table >}}
{{< compare_row title="Deep Analytics" sw="true" cm="true">}}
Highly detailed logging of the execution of workflows
Highly detailed logging of the execution of workflows.
{{</compare_row>}}
{{< compare_row title="Data Extraction" sw="true" cm="true">}}
Ability to query and report on details collected within a workflow process
Ability to query and report on details collected within a workflow process.
{{</compare_row>}}
{{< compare_row title="Heat Maps" sw="" cm="true">}}
Heatmaps allow you to view all running processes as a single diagram, allow you to quickly pinpoint areas that need improvement. Heatmaps are a top level item on SpiffWorkflows Roadmap but are not yet available.
Heatmaps allow you to view all running processes as a single diagram, allowing you to quickly pinpoint areas that need improvement. Heatmaps are a top-level item on SpiffWorkflow's Roadmap but are not yet available.
{{</compare_row>}}
{{< compare_row title="Issue Resolution" sw="true" cm="true">}}
The ability to suspend, modify, and resume a running process when something going wrong.
The ability to suspend, modify, and resume a running process when something goes wrong.
{{</compare_row>}}
{{< compare_row title="Long Running Processes" sw="true" cm="true">}}
Ability to execute workflow processes over days, weeks and months.
{{</compare_row>}}
Ability to execute workflow processes over days, weeks, and months.
{{</compare_table>}}
### Flexible Architecture
Both software applications are designed for integration into your organizations infrastructure.
Both software applications are designed for integration into your organization's infrastructure.
{{< compare_table >}}
{{< compare_row title="Self Hosted" sw="true" cm="">}}
While some aspects of Camunda's infrastructure can be deployed in-house, Camunda 8's offering requires that much of the execution happens remotely on their SAAS Platform.
{{</compare_row>}}
{{< compare_row title="Embeddable" sw="true" cm="true">}}
The core SpiffWorkflow library is designed specifically for embedding in any Python based application in any framework. Some aspects of Camunda are embeddable in Java frameworks, such as Spring.
{{</compare_row>}}
The core SpiffWorkflow library is designed specifically for embedding in any Python-based application in any framework. Some aspects of Camunda are embeddable in Java frameworks, such as Spring.
{{</compare_table>}}
### Open Source
Open Source Software is software that is provided along with its source code, with license that permits users to study, change, and improve its design.
Open Source Software is software that is provided along with its source code, with a license that permits users to study, change, and improve its design.
{{< compare_table >}}
{{< compare_row title="Open Source" sw="true" cm="">}}
SpiffWorkflow provides its core source code under an open source license. While some extensions and plugins are proprietary, the core library, editor extensions, and user interface are released on the LGPL license.
SpiffWorkflow provides its core source code under an open-source license. While some extensions and plugins are proprietary, the core library, editor extensions, and user interface are released under the LGPL license.
{{</compare_row>}}
{{< compare_row title="Source Available" sw="true" cm="true">}}
"Source Available" licenses permit users to view the source code, but additional restrictions may prevent you from modifying it or using it without permission. Camunda's core Zeeby engine is released under a restricted license that prohibits use as a 'process automation service', but it does provide the source code for examination.
"Source Available" licenses permit users to view the source code, but additional restrictions may prevent you from modifying it or using it without permission. Camunda's core Zeebe engine is released under a restricted license that prohibits use as a 'process automation service', but it does provide the source code for examination.
{{</compare_row>}}
{{< compare_row title="Open Source Contributions" sw="true" cm="true">}}
Both organizations make substantial contributions to the open source community.
{{</compare_row>}}
Both organizations make substantial contributions to the open-source community.
{{</compare_table>}}
### Low Cost of Ownership
{{< compare_table >}}
{{< compare_row title="Early Assessment" sw="true" cm="true">}}
SpiffWorkflow and Camunda both provide demo sites that allows people to immediately try out the project with freely available videos and documentation. We encourage you to make a comparison!
SpiffWorkflow and Camunda both provide demo sites that allow people to immediately try out the project with freely available videos and documentation. We encourage you to make a comparison!
{{</compare_row>}}
{{< compare_row title="Low sloped learning curve" sw="true" cm="">}}
SpiffWorkflow allows a novice user to build and execute a diagram within minutes. While it can take years to master everything, the basics are easy to learn. Camunda's structure is more complex, and requires software engineers to create and deploy even a simple diagram.
{{< compare_row title="Low Sloped Learning Curve" sw="true" cm="">}}
SpiffWorkflow allows a novice user to build and execute a diagram within minutes. While it can take years to master everything, the basics are easy to learn. Camunda's structure is more complex and requires software engineers to create and deploy even a simple diagram.
{{</compare_row>}}
{{< compare_row title="Simple Pricing Model" sw="true" cm="">}}
SpiffWorkflow commercial pricing models are based on features and support contracts, we don't set our prices based on intrusive details about your business, such as the number of processes you execute.
{{</compare_row>}}
SpiffWorkflow's commercial pricing models are based on features and support contracts. We don't set our prices based on intrusive details about your business, such as the number of processes you execute.
{{</compare_table>}}
## See SpiffWorkflow for yourself
## See SpiffWorkflow for yourself
Schedule a demo with a member of our core team, and we can demonstrate these capabilities live on our demo site.
{{< calendly >}}

View File

@ -3,7 +3,7 @@ title: "Thank you"
subtitle: "Thank you for contacting us!"
date: 2024-04-01T10:05:00-05:00
draft: false
escription: We are building a series of Enterprise level integrations and extensions to assure that SpiffWorkflow can meet the needs of large scale organizations.
description: We are building a series of Enterprise level integrations and extensions to assure that SpiffWorkflow can meet the needs of large scale organizations.
images: ["/images/opengraph/enterprise.png"]
cssClass: "section-support"
cssSubClass: "enterprise"
@ -15,15 +15,15 @@ Thank you for your interest {{< url_param firstname />}} {{< url_param lastname
### We will be in touch shortly!
We will reach back out to you soon, and schedule a time for us to talk.
We will reach back out to you soon and schedule a time for us to talk.
We're looking forward to meeting you.
### While you wait ...
You might want to checkout our demo site at [SpiffDemo.org](https://SpiffDemo.org).
You can visit the site right now and create an account using your Google, Linked In or GitHub account where you will be able to see many examples of the types of workflows that are possible.
You might want to check out our demo site at [SpiffDemo.org](https://SpiffDemo.org).
You can visit the site right now and create an account using your Google, LinkedIn, or GitHub account where you will be able to see many examples of the types of workflows that are possible.
### Free PDF CheatSheet
### Free PDF Cheat Sheet
As a small thank you for getting in contact with us, here is a link to our SpiffWorkflow Cheat Sheet - a PDF with hints and tips on how to get the most out of SpiffWorkflow.
Click on the image below to download.

View File

@ -4,7 +4,7 @@ subtitle: "Try out a working instance of SpiffWorkflow right now."
date: 2024-06-27T12:05:00-05:00
author: Dan Funk
draft: false
description: Sign up to gt access to our demo web site.
description: Sign up to get access to our demo website.
images: ["/images/opengraph/enterprise.png"]
cssClass: "section-support"
cssSubClass: "enterprise"

View File

@ -43,32 +43,35 @@ These Terms shall be governed by and construed in accordance with the laws of th
Sartography reserves the right to modify these Terms at any time without prior notice.
By continuing to access or use the Website after any revisions become effective, you agree to be bound by the revised Terms.
## 8. Your Conduct
You understand that all information, data, text, software, graphics or other materials (“Content”), whether publicly posted or privately transmitted, are the sole responsibility of the person from whom such Content originated.
This means that you, and not Sartography, are entirely responsible for all Content that you upload, post, email, transmit or otherwise make available via this Website.
You understand that all information, data, text, software, graphics, or other materials (“Content”), whether publicly posted or privately transmitted, are the sole responsibility of the person from whom such Content originated.
This means that you, and not Sartography, are entirely responsible for all Content that you upload, post, email, transmit, or otherwise make available via this Website.
Sartography does not control the Content you post and, as such, does not guarantee the accuracy, integrity or quality of such Content.
Under no circumstances will Sartography be liable in any way for any Content, including, but not limited to, any errors or omissions in any Content, or any loss or damage of any kind incurred as a result of the use of any Content posted, emailed, transmitted or otherwise made available via the Website.
Sartography does not control the Content you post and, as such, does not guarantee the accuracy, integrity, or quality of such Content.
Under no circumstances will Sartography be liable in any way for any Content, including, but not limited to, any errors or omissions in any Content, or any loss or damage of any kind incurred as a result of the use of any Content posted, emailed, transmitted, or otherwise made available via the Website.
You agree to not use the Website to:
1. upload, post, email, transmit or otherwise make available any Content that is unlawful, harmful, threatening, abusive, harassing, tortuous, defamatory, vulgar, obscene, libelous, invasive of anothers privacy, hateful, or racially, ethnically or otherwise objectionable or harm minors;
You agree not to use the Website to:
1. upload, post, email, transmit, or otherwise make available any Content that is unlawful, harmful, threatening, abusive, harassing, tortuous, defamatory, vulgar, obscene, libelous, invasive of anothers privacy, hateful, or racially, ethnically, or otherwise objectionable or harm minors;
1. impersonate any person or entity or falsely state or otherwise misrepresent your affiliation with a person or entity;
1. forge headers or otherwise manipulate identifiers in order to disguise the origin of any Content transmitted through This Website;
1. upload, post, email, transmit or otherwise make available any Content that you do not have a right to make available under any law or under contractual or other relationships;
1. upload, post, email, transmit or otherwise make available any Content that infringes any patent, trademark, trade secret, copyright or other proprietary rights of any party;
1. upload, post, email, transmit or otherwise make available any unsolicited or unauthorized advertising, promotional materials, “junk mail,” “spam,” or any other form of solicitation;
1. upload, post, email, transmit or otherwise make available any material that contains software viruses or any other computer code, files or programs designed to interrupt, destroy or limit the functionality of any computer software or hardware or telecommunications equipment;
1. upload, post, email, transmit, or otherwise make available any Content that you do not have a right to make available under any law or under contractual or other relationships;
1. upload, post, email, transmit, or otherwise make available any Content that infringes any patent, trademark, trade secret, copyright, or other proprietary rights of any party;
1. upload, post, email, transmit, or otherwise make available any unsolicited or unauthorized advertising, promotional materials, “junk mail,” “spam,” or any other form of solicitation;
1. upload, post, email, transmit, or otherwise make available any material that contains software viruses or any other computer code, files, or programs designed to interrupt, destroy, or limit the functionality of any computer software or hardware or telecommunications equipment;
1. disrupt the normal flow of dialogue, or otherwise act in a manner that negatively affects other users ability to engage in discussions or exchanges;
1. interfere with or disrupt this Website or servers or networks connected to this Website, or disobey any requirements, procedures, policies or regulations of networks connected to this Website;
1. intentionally or unintentionally violate any applicable local, state, national or international law,
1. interfere with or disrupt this Website or servers or networks connected to this Website, or disobey any requirements, procedures, policies, or regulations of networks connected to this Website;
1. intentionally or unintentionally violate any applicable local, state, national, or international law,
1. “stalk” or otherwise harass another; and/or
1. collect or store personal data about other users in connection with the prohibited conduct and activities set forth in paragraphs above. You acknowledge that Sartography may or may not pre-screen Content, but that Sartography and its designees shall have the right (but not the obligation) in their sole discretion to pre-screen, refuse, move, or remove any Content that is available via this Website and which violates the TOS. You agree that you must evaluate, and bear all risks associated with, the use of any Content, including any reliance on the accuracy, completeness, or usefulness of such Content. You acknowledge, consent and agree that Sartography may access, preserve and disclose your account information and Content if required to do so by law or in a good faith belief that such access preservation or disclosure is reasonably necessary to:
1. collect or store personal data about other users in connection with the prohibited conduct and activities set forth in paragraphs above.
You acknowledge that Sartography may or may not pre-screen Content, but that Sartography and its designees shall have the right (but not the obligation) in their sole discretion to pre-screen, refuse, move, or remove any Content that is available via this Website and which violates the TOS.
You agree that you must evaluate, and bear all risks associated with, the use of any Content, including any reliance on the accuracy, completeness, or usefulness of such Content.
You acknowledge, consent, and agree that Sartography may access, preserve, and disclose your account information and Content if required to do so by law or in a good faith belief that such access, preservation, or disclosure is reasonably necessary to:
* comply with legal process;
* enforce the TOS;
* respond to claims that any Content violates the rights of third parties;
* respond to your requests for customer service; or (e) protect the rights, property or personal safety of SpiffWorkflow its users and the public.
* respond to claims that any Content violates the rights of third parties;
* respond to your requests for customer service; or
* protect the rights, property, or personal safety of SpiffWorkflow, its users, and the public.
## 9. Contact Information

View File

@ -10,14 +10,15 @@ cssClass: "section-compare"
## Documentation
We continuously update and maintain [our documentation](https://spiff-arena.readthedocs.io/en/latest/index.html) Our docs include a quick start guide and a reference guide for building diagrams, and support section that covers how to modify running processes in production.
We also cover more technical details, such as how to contribute to this open source project, and provide a dedicated dev/ops section that covers complex installation and integration concerns.
We continuously update and maintain [our documentation](https://spiff-arena.readthedocs.io/en/latest/index.html).
Our docs include a quick start guide and a reference guide for building diagrams, and a support section that covers how to modify running processes in production.
We also cover more technical details, such as how to contribute to this open-source project, and provide a dedicated dev/ops section that covers complex installation and integration concerns.
## Core Python Library Documentation
We maintain a separate Read The Docs page for [our SpiffWorkflow Python Library](https://spiffworkflow.readthedocs.io/en/latest/index.html).
This is for poeple who want to develop their own BPMN Orchestration Engine from the ground up.
Our core library contains few dependencies, and is focused on serializing and executing BPMN diagrams.
This is for people who want to develop their own BPMN Orchestration Engine from the ground up.
Our core library contains few dependencies and is focused on serializing and executing BPMN diagrams.
## Videos
@ -25,5 +26,5 @@ You can find a number of our videos on our [SpiffWorkflow Channel](https://www.y
## Articles
Checkout our [Roadmap for 2024](https://medium.com/spiffworkflow/spiffworkflow-roadmap-2024-b4194f86cbb8), and how we are working to [maintain this open source project](https://medium.com/spiffworkflow/how-we-maintain-a-healthy-open-source-project-2e6d7115f668), along with many other articles that we publish to our [Medium SpiffWorkflow Channel](https://medium.com/spiffworkflow).
Check out our [Roadmap for 2024](https://medium.com/spiffworkflow/spiffworkflow-roadmap-2024-b4194f86cbb8), and how we are working to [maintain this open-source project](https://medium.com/spiffworkflow/how-we-maintain-a-healthy-open-source-project-2e6d7115f668), along with many other articles that we publish to our [Medium SpiffWorkflow Channel](https://medium.com/spiffworkflow).
We have a number of [introductory articles](/posts/articles/) and [Deep Dives](https://www.spiffworkflow.org/posts/deep_dives/) into advanced topics here.

View File

@ -3,7 +3,7 @@ title: "Thank you"
subtitle: "Redirecting to our Demo Site ..."
date: 2023-01-02T10:05:00-05:00
draft: false
escription: We are building a series of Enterprise level integrations and extensions to assure that SpiffWorkflow can meet the needs of large scale organizations.
description: We are building a series of Enterprise level integrations and extensions to assure that SpiffWorkflow can meet the needs of large scale organizations.
images: ["/images/opengraph/enterprise.png"]
cssClass: "section-support"
cssSubClass: "enterprise"
@ -13,10 +13,8 @@ cssSubClass: "enterprise"
Thank you for your interest {{< url_param firstname />}} {{< url_param lastname />}}!
Our demo site is hosted on [SpiffDemo.org](https://spiffdemo.org).
You will be redirected to the site in 10 seconds where you can create a new account through popular single sign on systems such as Google, Linked In or GitHub.
We will keep you posted on updates and changes to our Demo site via email to {{< url_param email />}}.
You will be redirected to the site in 10 seconds where you can create a new account through popular single sign-on systems such as Google, LinkedIn, or GitHub.
We will keep you posted on updates and changes to our demo site via email to {{< url_param email />}}.
{{< redirect "https://spiffdemo.org" 10000 />}}

View File

@ -1,52 +1,53 @@
---
title: "Features"
subtitle: "SpiffWorkflow is a powerful workflow execution engine that is rich with built in features and designed for easy extension."
subtitle: "SpiffWorkflow is a powerful workflow execution engine that is rich with built-in features and designed for easy extension."
date: 2022-12-27T16:05:00-05:00
draft: false
description: A list of the major features of SpiffArena and it's components. SpiffWorkflow, BPMN Diagram Editor, form editors, service connectors and more...
description: A list of the major features of SpiffArena and its components. SpiffWorkflow, BPMN Diagram Editor, form editors, service connectors, and more...
images: ["/images/opengraph/features.png"]
cssClass: "section-features"
---
{{< tiles>}}
{{< tiles >}}
{{< tile title="Low Code" icon="low_code" >}}
Get started quickly, but without painting yourself into a corner
Get started quickly, but without painting yourself into a corner.
{{< /tile >}}
{{< tile title="Powerful Form Building" icon="form" >}}
Build detailed forms with validation, conditions, type aheads, and more
Build detailed forms with validation, conditions, type-aheads, and more.
{{< /tile >}}
{{< tile title="Decision Modeling" icon="table" >}}
Transparent and easy to understand spreadsheets capture business rules concisely
Transparent and easy-to-understand spreadsheets capture business rules concisely.
{{< /tile >}}
{{< tile title="Collaboration" icon="approval" >}}
Manage the handoff of tasks between individuals and teams
Manage the handoff of tasks between individuals and teams.
{{< /tile >}}
{{< tile title="Timers" icon="timer" >}}
Send reminders after a period of time, or kick off tasks on a schedule
Send reminders after a period of time, or kick off tasks on a schedule.
{{< /tile >}}
{{< tile title="Events" icon="event" >}}
Respond to external events via api call
Respond to external events via API call.
{{< /tile >}}
{{< tile title="Parallel Execution" icon="parallel" >}}
Distribute a workload across a number of external services simultaneously
Distribute a workload across a number of external services simultaneously.
{{< /tile >}}
{{< tile title="Real Time Administration" icon="admin" >}}
Pause, Edit, and Resume running workflows
Pause, Edit, and Resume running workflows.
{{< /tile >}}
{{< tile title="Unit Testing Tools" icon="test" >}}
Create automatic tests for your workflows, call activities, and scripts
Create automatic tests for your workflows, call activities, and scripts.
{{< /tile >}}
{{< tile title="Reports/ Perspectives" icon="report" >}}
Data Extraction from workflows to generate detailed custom reports
Data extraction from workflows to generate detailed custom reports.
{{< /tile >}}
{{< tile title="Spiff Extensions" icon="extend" >}}
Extend the functionality of the application itself with BPMN
Extend the functionality of the application itself with BPMN.
{{< /tile >}}
{{< tile title="Connectors" icon="connection" >}}
Send and receive information from other applications. Use our connectors or build your own!
Send and receive information from other applications.
Use our connectors or build your own!
{{< /tile >}}
{{< /tiles >}}
## See these features in action
You can schedule a demo with one of our core team members and we can demonstrate these features live on our demo site.
You can schedule a demo with one of our core team members and we can demonstrate these features live on our demo site.
We can also answer any questions you may have about SpiffWorkflow and how it can help your organization.
{{< calendly >}}

View File

@ -3,35 +3,34 @@ title: "Features"
subtitle: "These are just a handful of the major features available"
date: 2022-12-27T16:05:00-05:00
draft: false
description: A list of the major features of SpiffArena and it's components. SpiffWorkflow, BPMN Diagram Editor, form editors, service connectors and more...
description: A list of the major features of SpiffArena and its components. SpiffWorkflow, BPMN Diagram Editor, form editors, service connectors, and more...
---
### User Tasks -- Gather information from people
You can create highly complex web forms to gather information from end users - injecting this information into your workflow process.
We are using the excellent and feature complete open source [React Json Form Schema](https://react-jsonschema-form.readthedocs.io/en/latest/) with features such as nested sections, validation, and custom components.
We are using the excellent and feature-complete open-source [React Json Form Schema](https://react-jsonschema-form.readthedocs.io/en/latest/) with features such as nested sections, validation, and custom components.
A new form builder is in the works to make getting started easy, while expert users can take full control of all this tool has to offer.
### Service Tasks -- Send and retrieve information from other software
### Service Tasks -- Send and retrieve information from other software
Service Tasks allow you to configure connections to third party applications.
Service Tasks allow you to configure connections to third-party applications.
You can pull live data from an AWS DynamoDB Server, or push a message out to a Slack channel.
Following a basic pattern, you can add new connectors to your own software services by writing a small bit of Python code.
Many connectors are in the works (AWS services, Postgres) and new ones are easy to create.
![Services Video](../../images/features/services.gif)
![Services Video](../../images/features/services.gif)
### Pools and Lanes -- Who is in charge right now?
Pools and Lanes clearly and accurately describe the handoff of authority between groups of people, making it crystal clear who is responsible for each task.
This is great for approval processes.
For example ...
For example...
> "Does Jason deserve that Heavy Metal Cruise Ship vacation in February?"
(He definitely does)
Or the hand off of a complex job from one team to the text
Or the handoff of a complex job from one team to the next
> The field crew is done.
It's time for Steve to do the computations.
@ -39,7 +38,7 @@ It's time for Steve to do the computations.
### Timer Events - Watching the clock
Computers watch clocks.
On the average, one could say it is pretty much all they do.
On average, one could say it is pretty much all they do.
Rather than have the computers constantly remind us of what time it is, perhaps they could just deal with the problem, kick off the process, make the request, check the feedback, send the reminder.
> "The Field Crew completed the survey.
@ -55,7 +54,7 @@ Message Events allow you to start new processes, cancel existing processes, or p
Learn more in [our article on Messages](/posts/deep_dives/messages).
> "We told our finance software to fire off an API call to SpiffWorkflow whenever a payment is processed.
Then SpiffWorkflow does all the legwork of communicating to people via their preferred system -- email, phone, Slack, text -- and it creates the paper trail so there is a record of what went down ..."
Then SpiffWorkflow does all the legwork of communicating to people via their preferred system -- email, phone, Slack, text -- and it creates the paper trail so there is a record of what went down..."
### Perspectives -- Custom Reporting Tools
@ -67,7 +66,6 @@ Now you can easily find which tasks you should pick up next.
![Timer Video](../../images/features/perspectives.gif)
### Decision Tables
Decision tables (DMN / Decision Model Notation) look a bit like spreadsheets and allow you to articulate core business rules in ways that are easy to understand, update, and maintain.
@ -75,27 +73,24 @@ These tables can be directly embedded and referenced from your diagrams.
![Markdown Video](../../images/features/decisions.gif)
### Granular Permissions
### Granular Permissions
SpiffArena can be connected to any OpenID system.
It is possible to manage user authentication outside SpiffWorkflow using public systems like Google and Facebook or private systems with products like KeyCloak.
At the same time, SpiffArena comes with a permission system that can grow with you.
You can use the same diagram tools described above to control permissions for all of your users - setting up permission tables that can be simple (everyone can start any process) to very specific ("This API endpoint is only accessible to the accounting department lead").
You can use the same diagram tools described above to control permissions for all of your users - setting up permission tables that can be simple (everyone can start any process) to very specific ("This API endpoint is only accessible to the accounting department lead").
### Built-in Editors
With editors for Python, Markdown, and JSON, you can quickly jump from drawing the diagram to incorporating the small bits of code, documentation, and end user instructions in a way that is fast, simple and intuitive.
With editors for Python, Markdown, and JSON, you can quickly jump from drawing the diagram to incorporating the small bits of code, documentation, and end-user instructions in a way that is fast, simple, and intuitive.
![Markdown Video](../../images/features/markdown.gif)
### Data Encapsulation
SpiffWorkflow supports BPMN's Data Objects, Data Inputs and Data Outputs, allowing you to visually control what data is accessible.
SpiffWorkflow supports BPMN's Data Objects, Data Inputs, and Data Outputs, allowing you to visually control what data is accessible.
When composing diagrams within diagrams, you can declare the expected variables that will be provided and the ones that will be returned, keeping your workflows clean, consistent, and easy to understand.
Learn more in [our article on Data Objects](/posts/deep_dives/data_objects)
Learn more in [our article on Data Objects](/posts/deep_dives/data_objects).
### Python Editor and Unit Tests

View File

@ -1,9 +1,9 @@
---
title: "Get Started"
subtitle: "A demo website running SpiffWorkflow is available for you to try immediately, but we also offer docker containers and local development setups. "
subtitle: "A demo website running SpiffWorkflow is available for you to try immediately, but we also offer docker containers and local development setups."
date: 2023-09-27T12:20:00-05:00
draft: false
description: A demo of spiffWorkflow is available for you to try immediately, but we also offer docker containers and local development setups. Read more below.
description: A demo of SpiffWorkflow is available for you to try immediately, but we also offer docker containers and local development setups. Read more below.
images: ["/images/opengraph/compare.png"]
cssClass: "section-compare"
---
@ -12,17 +12,13 @@ cssClass: "section-compare"
{{< flex-container >}}
<div>
<p>SpiffWorkflow is a platform for building, running, and monitoring executable diagrams. It is a great way
to build transparent processes within your organization that foster continuous improvement, shared understanding, and
persistence of a collective vision.</p>
<p>SpiffWorkflow is a platform for building, running, and monitoring executable diagrams. It is a great way to build transparent processes within your organization that foster continuous improvement, shared understanding, and persistence of a collective vision.</p>
<p>If you have never used SpiffWorkflow, then we highly recommend checking out this short video, which will walk you through
building and running a simple process diagram.</p>
<p>If you have never used SpiffWorkflow, then we highly recommend checking out this short video, which will walk you through building and running a simple process diagram.</p>
</div>
{{< video "/videos/getting_started.mp4" "my-5" >}}
{{< /flex-container >}}
## Try the Live Demo
View and execute example process models on our live demo site.
@ -35,10 +31,10 @@ Start up a [local docker container](https://www.spiffworkflow.org/posts/articles
## Set up a Development Environment
Download the source code and contribute to the project, by [following these directions](https://spiff-arena.readthedocs.io/en/latest/dev/setup.html).
Download the source code and contribute to the project by [following these directions](https://spiff-arena.readthedocs.io/en/latest/dev/setup.html).
## Learn More
SpiffWorkflow is a powerful system.
There is a lot to learn.
Please checkout our [Documentation](/pages/docs) for more information.
Please check out our [Documentation](/pages/docs) for more information.

View File

@ -7,7 +7,7 @@ draft: false
description: We offer professional hosting packages for SpiffWorkflow
---
We can give you a private cloud hosted instance of SpiffWorkflow that is monitored and maintained by our team of experts.
We can give you a private cloud-hosted instance of SpiffWorkflow that is monitored and maintained by our team of experts.
We can also provide you with a dedicated support team to help you get the most out of your investment in SpiffWorkflow.
## Let's Talk

View File

@ -1,9 +1,9 @@
---
title: "Thank you"
subtitle: "Thank you for signing up for our news letter!"
subtitle: "Thank you for signing up for our newsletter!"
date: 2024-04-01T10:05:00-05:00
draft: false
escription: We are building a series of Enterprise level integrations and extensions to assure that SpiffWorkflow can meet the needs of large scale organizations.
description: We are building a series of Enterprise level integrations and extensions to assure that SpiffWorkflow can meet the needs of large-scale organizations.
images: ["/images/opengraph/enterprise.png"]
cssClass: "section-support"
cssSubClass: "enterprise"
@ -13,17 +13,16 @@ cssSubClass: "enterprise"
Thank you for your interest {{< url_param firstname />}} {{< url_param lastname />}}!
We will keep you posted on updates and changes to our Application via email to {{< url_param email />}}.
We will keep you posted on updates and changes to our application via email to {{< url_param email />}}.
### Free PDF CheatSheet
### Free PDF Cheat Sheet
As a small thank you, here is a link to our SpiffWorkflow Cheat Sheet - a PDF with hints and tips on how to get the most out of SpiffWorkflow.
As a small thank you, here is a link to our SpiffWorkflow Cheat Sheet - a PDF with hints and tips on how to get the most out of SpiffWorkflow.
Click on the image below to download.
[![Free Poster](/images/poster_small.png)](/spiffworkflow_poster.pdf)
### What's next?
Now that you are signed up for our mailing list you might want to checkout our demo site and [SpiffDemo.org](https://SpiffDemo.org).
You can visit the site right now and create an account using your Google, Linked In or GitHub account.
Now that you are signed up for our mailing list, you might want to check out our demo site at [SpiffDemo.org](https://SpiffDemo.org).
You can visit the site right now and create an account using your Google, LinkedIn, or GitHub account.

View File

@ -4,14 +4,14 @@ subtitle: "Join our community and help us build the future of workflow automatio
date: 2023-10-02T10:00:00-05:00
author: Dan Funk
draft: false
description: SpiffWorkflow is made up of a series of open source projects that are available on GitHub. We welcome your contributions and feedback.
description: SpiffWorkflow is made up of a series of open source projects that are available on GitHub. We welcome your contributions and feedback.
---
## Get The Code and Join our Community!
## Get The Code and Join Our Community!
SpiffWorkflow is made up of several open source projects available on GitHub.
We recommend you start with [SpiffArena](https://github.com/sartography/spiff-arena), but you can also delve into the [core workflow engine](https://github.com/sartography/SpiffWorkflow), [BPMN.IO editor extensions](https://github.com/sartography/bpmn-js-spiffworkflow), and the [connector proxy](https://github.com/sartography/connector-proxy-demo).
We recommend you start with [SpiffArena](https://github.com/sartography/spiff-arena), but you can also delve into the [core workflow engine](https://github.com/sartography/SpiffWorkflow), [BPMN.IO editor extensions](https://github.com/sartography/bpmn-js-spiffworkflow), and the [connector proxy](https://github.com/sartography/connector-proxy-demo).
To stay up to date on changes and updates, Star and Follow our GitHub repos, register for our newsletter (below), and join our [Discord channel](https://discord.gg/F6Kb7HNK7B).
To stay up to date on changes and updates, star and follow our GitHub repos, register for our newsletter (below), and join our [Discord channel](https://discord.gg/F6Kb7HNK7B).
{{% newsletter %}}

View File

@ -34,13 +34,13 @@ cssClass: "section-support"
<td> {{< svg icon="check" >}}</td>
</tr>
<tr>
<td><b>Training</b> - Professional training for business analysts, citizen developers, software engineers, and devops.
<td><b>Training</b> - Professional training for business analysts, citizen developers, software engineers, and DevOps.
</td>
<td></td>
<td class="check"> {{< svg icon="check" >}}</td>
</tr>
<tr>
<td><b>Support</b> - Bronze, Silver, and Gold support plans to assure you have the support you need when you need it.
<td><b>Support</b> - Bronze, Silver, and Gold support plans to ensure you have the support you need when you need it.
</td>
<td></td>
<td class="check"> {{< svg icon="check" >}}</td>
@ -52,8 +52,7 @@ cssClass: "section-support"
<td class="check"> {{< svg icon="check" >}}</td>
</tr>
<tr>
<td><b>Featured Extensions</b> - Use our prebuilt extensions to provide detailed reports and tight integrations
within your organization.
<td><b>Featured Extensions</b> - Use our prebuilt extensions to provide detailed reports and tight integrations within your organization.
</td>
<td></td>
<td class="check"> {{< svg icon="check" >}}</td>

View File

@ -18,13 +18,16 @@ The SpiffWorkflow Terms of Service are incorporated by reference into this Polic
We collect information about you directly from you and from third parties, and automatically through your use of our Sites or Services.
**Information We Collect Directly From You.** The information we collect from you depends on how you use our Services. To create an account, you must provide us with the following personal information:
**Information We Collect Directly From You.** The information we collect from you depends on how you use our Services.
To create an account, you must provide us with the following personal information:
* Your name
* Password
* Email address
**Information We Collect Automatically.** We automatically collect information about your use of our Sites through cookies, web beacons, and other technologies. To the extent permitted by applicable law, we combine this information with other information we collect about you, including your personal information. Please see the section “Cookies and Other Tracking Mechanisms” below for more information
**Information We Collect Automatically.** We automatically collect information about your use of our Sites through cookies, web beacons, and other technologies.
To the extent permitted by applicable law, we combine this information with other information we collect about you, including your personal information.
Please see the section “Cookies and Other Tracking Mechanisms” below for more information.
We collect the following information when you visit our Sites:
@ -33,7 +36,7 @@ We collect the following information when you visit our Sites:
* Links you click on the Sites
* Your IP address
* Your geolocation
* The length of time you visit our Sites and or use our Services
* The length of time you visit our Sites and/or use our Services
* The referring URL, or the webpage that led you to our Sites
## How We Use Your Information
@ -52,7 +55,8 @@ We use your information, including your personal information, for the following
We may share your information, including personal information, as follows:
* **Service Providers.** We disclose the information we collect from you to service providers, contractors or agents who perform functions on our behalf. These service providers may include web hosting providers, database providers, and email providers.
* **Service Providers.** We disclose the information we collect from you to service providers, contractors, or agents who perform functions on our behalf.
These service providers may include web hosting providers, database providers, and email providers.
We also disclose information in the following circumstances:
@ -63,26 +67,33 @@ We also disclose information in the following circumstances:
We and our service providers use cookies and other tracking mechanisms to track information about your use of our Sites or Services.
We may combine this information with other personal information we collect from you (and our service providers may do so on our behalf).
We use cookies for functional purposes only (i.e.
to support the proper working of our Sites and Services) and do not use cookies for advertising or profiling purposes.
We use cookies for functional purposes only (i.e., to support the proper working of our Sites and Services) and do not use cookies for advertising or profiling purposes.
Cookies are alphanumeric identifiers that we transfer to your devices hard drive through your web browser for record-keeping purposes.
Some cookies allow us to make it easier for you to navigate our Sites and Services, while others are used to enable a faster log-in process or to allow us to track your activities at our Sites and Service.
Some cookies allow us to make it easier for you to navigate our Sites and Services, while others are used to enable a faster log-in process or to allow us to track your activities at our Sites and Services.
There are two types of cookies: session and persistent cookies.
* *Session cookies:* exist only during an online session. They disappear from your device when you close your browser or turn off your device. We use session cookies to allow our systems to uniquely identify you during a session or while you are logged into the Sites and Services. This allows us to process your online transactions and requests and verify your identity, after you have logged in, as you move through our Sites and Services.
* *Persistent Cookies:* Persistent cookies remain on your device after you have closed your browser or turned off your device. We use persistent cookies to track aggregate and statistical information about user activity.
* *Session cookies:* exist only during an online session.
They disappear from your device when you close your browser or turn off your device.
We use session cookies to allow our systems to uniquely identify you during a session or while you are logged into the Sites and Services.
This allows us to process your online transactions and requests and verify your identity, after you have logged in, as you move through our Sites and Services.
* *Persistent Cookies:* Persistent cookies remain on your device after you have closed your browser or turned off your device.
We use persistent cookies to track aggregate and statistical information about user activity.
**Disabling Cookies:** Most web browsers automatically accept cookies, but if you prefer, you can change your browser options to block them in the future. The Help portion of the toolbar on most browsers will tell you how to prevent your computer from accepting new cookies, how to have the browser notify you when you receive a new cookie, or how to disable cookies altogether. Visitors to our Sites and Services who disable cookies will be able to browse certain areas of the Sites, but some features may not function properly.
**Disabling Cookies:** Most web browsers automatically accept cookies, but if you prefer, you can change your browser options to block them in the future.
The Help portion of the toolbar on most browsers will tell you how to prevent your computer from accepting new cookies, how to have the browser notify you when you receive a new cookie, or how to disable cookies altogether.
Visitors to our Sites and Services who disable cookies will be able to browse certain areas of the Sites, but some features may not function properly.
**Third Party Analytics:** We use automated devices and applications, such as Google Analytics, to evaluate usage of our Sites. We use these tools to help us improve our sites performance and user experiences.
**Third Party Analytics:** We use automated devices and applications, such as Google Analytics, to evaluate usage of our Sites.
We use these tools to help us improve our sites performance and user experiences.
**Do-Not-Track.** Currently, our systems do not recognize browser “do-not-track” requests. You may, however, disable certain tracking as discussed in this section (e.g., by disabling cookies).
**Do-Not-Track.** Currently, our systems do not recognize browser “do-not-track” requests.
You may, however, disable certain tracking as discussed in this section (e.g., by disabling cookies).
## User Generated Content
We invite you to post content on our Sites and Services, including your comments, pictures, and any other information that you would like to be available on our Sites or Services.
If you post content to our Sites or Services the information that you post will be available to all visitors to our Sites.
If you post content to our Sites or Services, the information that you post will be available to all visitors to our Sites.
If you post your own content on our Sites or Services, your posting may become public and we cannot prevent such information from being used by third parties.
## Third-Party Links
@ -102,9 +113,9 @@ We are not responsible for any lost, stolen, or compromised passwords or for any
## What Choices Do I Have Regarding Use of My Personal Information?
We may send periodic promotional emails to you regarding SpiffWorkflow.
You may opt-out of promotional emails by following the opt-out instructions contained in the email.
You may opt out of promotional emails by following the opt-out instructions contained in the email.
Please note that it may take up to 10 business days for us to process opt-out requests.
If you opt-out of receiving promotional emails, we may still send you emails about your account or any services you have requested or received from us.
If you opt out of receiving promotional emails, we may still send you emails about your account or any services you have requested or received from us.
## Additional Privacy Rights under GDPR
@ -118,10 +129,10 @@ Where the General Data Protection Regulation (“GDPR”) applies, in particular
* The right to receive your personal information in a usable electronic format and transmit it to a third party (also known as the right of data portability); and
* The right to lodge a complaint with your local data protection authority.
If you would like to exercise any of these rights, you may do so submitting a request to us using our Contact Us form, and including “GDPR Privacy Request” in the message box.
If you would like to exercise any of these rights, you may do so by submitting a request to us using our Contact Us form, and including “GDPR Privacy Request” in the message box.
Please understand, however, the rights enumerated above are not absolute in all cases.
When you submit a GDPR request to us we may request additional information from you to confirm your identity.
When you submit a GDPR request to us, we may request additional information from you to confirm your identity.
We will make best efforts to voluntarily provide the above rights to individuals outside of the EEA.
We will endeavor to comply with GDPR requests within 45 days of receipt, but if we need additional time to handle the request we will notify you.
@ -140,4 +151,4 @@ If you have questions about the privacy aspects of our Services or would like to
This Policy is current as of the Effective Date set forth above.
We may change this Policy from time to time, so please be sure to check back periodically.
We will post any changes to this Policy on our Sites.
If we make any changes to this Policy that materially affect our practices with regard to the personal information we have previously collected from you we will endeavor to provide you with notice in advance of such change by highlighting the change on our Sites.
If we make any changes to this Policy that materially affect our practices with regard to the personal information we have previously collected from you, we will endeavor to provide you with notice in advance of such change by highlighting the change on our Sites.

View File

@ -6,12 +6,13 @@ draft: false
description: We offer these Service Level Expectations to our end users, and provide paid support options for organizations that need guaranteed availability, fast response times to questions, and resources to assure their system remains stable, up to date and free of major security vulnerabilities.
---
This SLE seeks to outline the basic expectations for a Support Contract or Service Level Agreement between [Sartography](https://sartography.com) and an organization seeking to self-host the SpiffArena Application or use the SpiffWorkflow library in a production environment. It seeks to offer clarification on the following major areas:
1. **Level of support** you can expect from [Sartography](https://sartography.com). This includes but is not limited to things like availability, response time, and resolution time.
This SLE seeks to outline the basic expectations for a Support Contract or Service Level Agreement between [Sartography](https://sartography.com) and an organization seeking to self-host the SpiffArena Application or use the SpiffWorkflow library in a production environment.
It seeks to offer clarification on the following major areas:
1. **Level of support** you can expect from [Sartography](https://sartography.com).
This includes but is not limited to things like availability, response time, and resolution time.
2. **Framework for resolving disputes.** If there is a problem with the service, this can be used to determine who is responsible and how the problem will be resolved.
3. **Measure of performance.** The SLA can be used to track the Provider's performance over time.
### Terms:
| Term | Definition |
@ -20,25 +21,25 @@ This SLE seeks to outline the basic expectations for a Support Contract or Servi
| Response time | The time it takes for us to respond to a question or support request. |
| Penalty | A financial or other sanction that is imposed on a service provider for failing to meet the terms of an SLA. |
| Software release | A new version of the software application that is made available to users and that includes new features, bug fixes, or performance improvements. |
| Severe Incident | any incident that results in the unavailability of the service for more than two hours or that affects more than 10% of the users of the service. |
| Severe Incident | Any incident that results in the unavailability of the service for more than two hours or that affects more than 10% of the users of the service. |
## 1. Scope of Service
[Sartography](https://sartography.com) strives to provide all SpiffWorkflow users with the following:
* Releasing new versions of the project on a regular basis
* Creating Security updates and bug fixes for the latest version of the project
* Creating security updates and bug fixes for the latest version of the project
* Providing a public chat room for users to discuss the project
* Creating and maintaining basic documentation
### Paid Support
Commercial companies with mission-critical installations of SpiffArena and SpiffWorkflow may require enhanced Provider availability including fast response times to questions, and regular checkups to ensure their systems remain stable, up to date, and are protected against major security vulnerabilities.
For these cases [Sartography](https://sartography.com) offers paid support plans to provide these organizations and groups with priority responses via chat rooms and GitHub, and allow them direct access to [Sartography](https://sartography.com) personnel through phone, video, email, and private chat.
Commercial companies with mission-critical installations of SpiffArena and SpiffWorkflow may require enhanced Provider availability including fast response times to questions and regular checkups to ensure their systems remain stable, up to date, and are protected against major security vulnerabilities.
For these cases, [Sartography](https://sartography.com) offers paid support plans to provide these organizations and groups with priority responses via chat rooms and GitHub, and allow them direct access to [Sartography](https://sartography.com) personnel through phone, video, email, and private chat.
Please refer to the chart below for a comparison of service levels.
Paid support contracts are offered at three levels - Bronze, Silver and Gold:
Paid support contracts are offered at three levels - Bronze, Silver, and Gold:
| | Community | Bronze | Silver | Gold |
|-----------------------|-----------|----------------------|-------------------|------------|
@ -55,39 +56,42 @@ Paid support contracts are offered at three levels - Bronze, Silver and Gold:
| Monitored Upgrades | | | ✓ | ✓ |
```
* On normal business days - not counting weekends and national holidays.
** We can do video calls, phone calls, text messages, private chats, we'll even share a tmux terminal with you.
*** Ticket complexity can vary widely. We will handle as many tickets as we can - but we must limit our time to an average of one hour per ticket.
* On normal business days - not counting weekends and national holidays.
** We can do video calls, phone calls, text messages, private chats, we'll even share a tmux terminal with you.
*** Ticket complexity can vary widely. We will handle as many tickets as we can - but we must limit our time to an average of one hour per ticket.
```
# 2. Limitations
To receive support of any kind, you must remain on a supported version of the platform. Major versions will be supported for 12 months after the release of the next major version. Minor versions will be supported for 6 months after the release of the next minor version. Patch versions will be supported for 3 months after the release of the next patch version.
To receive support of any kind, you must remain on a supported version of the platform.
Major versions will be supported for 12 months after the release of the next major version.
Minor versions will be supported for 6 months after the release of the next minor version.
Patch versions will be supported for 3 months after the release of the next patch version.
# 3. Service Level Indicators
| Service Level | Availability | Response Time (chat/email) | Response Time (Phone/Text) |
| ------------- |--------------|----------------------------|--------------------------------|
| Bronze | 90% | 48 hours | 8 hour - MWF - 8am to Noon EST |
| Silver | 90% | 24 hours | 4 hour - M-F - 6am to 6pm EST |
| Bronze | 90% | 48 hours | 8 hours - MWF - 8am to Noon EST |
| Silver | 90% | 24 hours | 4 hours - M-F - 6am to 6pm EST |
| Gold | 90% | 4 hours | 1 hour - 24/7 |
### How to read this chart:
Availability is the percentage of time that [Sartography](https://sartography.com) will be available within the agreed time windows.
For example, Bronze members can expect us to respond to messages within 48 hours, and to phone calls and text messages within an hour (if the request is made within the service window) at least 90% of the time.
For example, Bronze members can expect us to respond to messages within 48 hours and to phone calls and text messages within an hour (if the request is made within the service window) at least 90% of the time.
### Limitations
* Except for Gold Members, support is not offered on weekends or national holidays in the U.S. In such a case our response times will be measured from the next business day.
* Except for Gold Members, support is not offered on weekends or national holidays in the U.S.
In such a case, our response times will be measured from the next business day.
# 4. Penalties
In the event that we fail to meet the above Service Level Indicators the following penalty will apply:
In the event that we fail to meet the above Service Level Indicators, the following penalty will apply:
* Initial Response time for support requests: If the Provider does not respond to a support ticket within the availability and time frame limits outlined in the Support Level Indicators section above, Client will be entitled to a refund of 10% of the monthly service fees.
* Disaster Recovery and Resolution time for severe incidents: If Sartography fails to resolve a severe incident within 24 hours, the Client will be entitled to a refund of 10% of the monthly service fees if the incident is related to a defect or security vulnerability in Sartographys code base. If the incident is related to a defect or security vulnerability in a third-party software package, the Client will be entitled to a refund of 5% of the monthly service fees. If the incident is related to a defect or security vulnerability in the Clients software, hardware or infrastructure, the Client will not be entitled to a refund.
* Initial Response time for support requests: If the Provider does not respond to a support ticket within the availability and time frame limits outlined in the Support Level Indicators section above, the Client will be entitled to a refund of 10% of the monthly service fees.
* Disaster Recovery and Resolution time for severe incidents: If Sartography fails to resolve a severe incident within 24 hours, the Client will be entitled to a refund of 10% of the monthly service fees if the incident is related to a defect or security vulnerability in Sartographys code base.
If the incident is related to a defect or security vulnerability in a third-party software package, the Client will be entitled to a refund of 5% of the monthly service fees.
If the incident is related to a defect or security vulnerability in the Clients software, hardware, or infrastructure, the Client will not be entitled to a refund.
**Refunds and credits**: Refunds and credits will be applied to the next monthly invoice.

View File

@ -4,11 +4,11 @@ subtitle: "A turnkey solution for managing workflows"
date: 2022-12-27T16:05:00-05:00
author: Dan Funk
draft: false
description: A brief description of SpiffArena - a combination of open source systems that creates a single web based application for creating, running and managing workflow diagrams.
description: A brief description of SpiffArena - a combination of open source systems that creates a single web-based application for creating, running, and managing workflow diagrams.
---
SpiffArena combines many tools into a single web-based application.
If you would like access to all of the [Features](/pages/features) (plus a lot more) this is the tool you want.
If you would like access to all of the [Features](/pages/features) (plus a lot more), this is the tool you want.
![SpiffArena](/images/spiffarena/spiffarena.png)

View File

@ -1,9 +1,9 @@
---
title: "SpiffEditor (and other open source projects)"
subtitle: "More tools for working with SpiffWorkfow and SpiffArena"
subtitle: "More tools for working with SpiffWorkflow and SpiffArena"
date: 2022-12-27T16:05:00-05:00
draft: false
description: A brief description of SpiffEditor - extensntions to BPMN.js that customize this popular diagram editor so it can work well with SpiffWorkflow and SpiffArena.
description: A brief description of SpiffEditor - extensions to BPMN.js that customize this popular diagram editor so it can work well with SpiffWorkflow and SpiffArena.
---
The following tools are available as a part of SpiffArena, but can also be used independently.
@ -12,16 +12,16 @@ They are all open source, and we welcome contributions.
## SpiffEditor
We've built a number of extensions to the excellent open source [BPMN.js](https://bpmn.io/toolkit/bpmn-js/) editor, specifically for SpiffWorkflow.
Here are few of the major features:
Here are a few of the major features:
* **Data Objects, Inputs and Outputs**: Improved support for adding, referencing and updating data references, providing a standards based way to manage data within a diagram.
* **Call Activities**: Offers tight integration with SpiffArena so you can quickly navigate to diagrams referenced within other diagrams.
* **Custom Properties Panel**: A new properties panel with multiple features including: custom editors for Python, Markdown and Json; the ability to add short pre- and post- scripts to any task; and a Python Unit Testing editor, among many other enhancements.
* **Data Objects, Inputs and Outputs**: Improved support for adding, referencing, and updating data references, providing a standards-based way to manage data within a diagram.
* **Call Activities**: Offers tight integration with SpiffArena so you can quickly navigate to diagrams referenced within other diagrams.
* **Custom Properties Panel**: A new properties panel with multiple features including: custom editors for Python, Markdown, and JSON; the ability to add short pre- and post- scripts to any task; and a Python Unit Testing editor, among many other enhancements.
* **Messages**: We added support for the BPMN Messaging standard to ensure you can easily create Messages and associated conversation elements (correlation properties and keys).
## Connector Proxy and Connectors
Connector Proxies provide a discoverable, plug-in style architecture for adding connections to third party applications that work seamlessly with SpiffWorkflow, SpiffArena, and the SpiffEditor.
Connector Proxies provide a discoverable, plug-in style architecture for adding connections to third-party applications that work seamlessly with SpiffWorkflow, SpiffArena, and the SpiffEditor.
We created a [Demo Connector Proxy](https://github.com/sartography/connector-proxy-demo) that you can use to get started.
Each Connector included in the Connector Proxy is itself a small standalone Python application.
@ -30,4 +30,4 @@ Adding new plugins is relatively easy, and we welcome contributions here.
## License
All of the above applications fall under the GNU LESSER GENERAL PUBLIC LICENSE.
All of the above applications fall under the GNU LESSER GENERAL PUBLIC LICENSE.

View File

@ -3,9 +3,9 @@ title: "SpiffWorkflow"
subtitle: "A Python library for adding executable diagrams into your projects"
date: 2022-12-27T16:05:00-05:00
draft: false
description: A brief introduction to SpiffWorkflow a BPMN/DMN execution library written in python.
description: A brief introduction to SpiffWorkflow, a BPMN/DMN execution library written in Python.
---
SpiffWorkflow is an open source Python library with source code available on [GitHub](https://github.com/sartography/SpiffWorkflow) and detailed documentation available on [ReadTheDocs](https://spiffworkflow.readthedocs.io/en/latest/).
SpiffWorkflow is an open-source Python library with source code available on [GitHub](https://github.com/sartography/SpiffWorkflow) and detailed documentation available on [ReadTheDocs](https://spiffworkflow.readthedocs.io/en/latest/).
It is the core library within SpiffArena.
Its target audience is Python developers who want to create custom workflow systems or embed BPMN features into existing applications.

View File

@ -12,19 +12,19 @@ cssClass: "section-support"
{{< tiles class="compare">}}
{{< tile title="" icon="sartography" class="highlighted" link="https://sartography.com">}}
<p></p>
<p>Get support from the same people who develop and maintain SpiffWorkflow. Sartography offers process integration
and consulting plans that cover training, BPMN process development and software development services.</p>
<a href="#contact-us">
<p>Get support from the same people who develop and maintain SpiffWorkflow.
Sartography offers process integration and consulting plans that cover training, BPMN process development, and software development services.</p>
<a href="#contact-us">
<span class="button signup-button rounded primary-btn raised">Contact Us</span>
</a>
<p>&nbsp;</p>
{{< /tile >}}
{{< /tiles >}}
# Community Support
1. Check our [Detailed Documentation](/pages/docs).
2. Join [our Discord channel](https://discord.gg/F6Kb7HNK7B) to ask questions of the community. Our core development team is often available to lend a quick hand.
2. Join [our Discord channel](https://discord.gg/F6Kb7HNK7B) to ask questions of the community.
Our core development team is often available to lend a quick hand.
# Contact Us
Get in touch to discuss your needs and we'll work together to find the right solution for you.

View File

@ -7,4 +7,5 @@ draft: false
![Thank you, processing ...](./thankyou.svg)
Thank you for getting in contact with us, we will be in touch soon.
Thank you for getting in contact with us.
We will be in touch soon.

View File

@ -7,7 +7,6 @@ draft: false
description: We offer training at a variety of levels to help you get the most out of your investment in SpiffWorkflow.
---
Get dedicated training from experienced professionals.
We offer training at a variety of levels to help you get the most out of your investment in SpiffWorkflow, and can tailor the training to your specific needs.
We offer training for:
@ -17,7 +16,7 @@ Please get in touch with us to discuss your needs and determine the best tier fo
### BPMN Architects
Let us show you how to get most from our BPMN system and how to design your workflows to be as efficient as possible.
Let us show you how to get the most from our BPMN system and how to design your workflows to be as efficient as possible.
* Introduction and Basic Training
* Advanced BPMN with SpiffWorkflow
* Designing Extensions to create new features for your end users.
@ -30,7 +29,7 @@ We can help orient you on how to do this efficiently and effectively.
### Software Engineering and DevOps
When it comes time to build integration points with your existing systems, we can help you get started quickly.
We can help with onsite deployments or work alongside your DevOps engineers in a cloud hosted environment.
We can help with onsite deployments or work alongside your DevOps engineers in a cloud-hosted environment.
When it comes time to build custom extensions, we can work with your team to design and implement the features you need.
## Let's Talk

View File

@ -8,13 +8,13 @@ images:
description: How to use our demonstration site to view and execute diagrams and get a basic understanding of SpiffWorkflow's features.
---
### You can try out SpiffWorkflow right now by visiting our [demo site at SpiffDemo.org](http://spiffdemo.org).
### You can try out SpiffWorkflow right now by visiting our [demo site at SpiffDemo.org](http://spiffdemo.org).
{{< admonition title="BUT WAIT!" type="note">}}
There is a lot of information on this page that will help you get the most out of your experience. So please read on!
There is a lot of information on this page that will help you get the most out of your experience.
So please read on!
{{< /admonition >}}
## Video Instructions
You can follow the directions below, or you can watch this short video where we take you step by step through how to use the site.
@ -24,7 +24,7 @@ You can follow the directions below, or you can watch this short video where we
### **Visit Spiffdemo & Login**
To begin your journey, open your web browser and navigate to the [official demo website](http://spiffdemo.org).
On the login screen, you will find the option to "Sign in with Google".
On the login screen, you will find the option to "Sign in with Google."
If you do not have a Google account, please [contact us](mailto:dan@sartography.com) and let us know what other sign-on options you would like to use.
We can also create an account for you if needed.
@ -55,7 +55,6 @@ Select one of the top-level examples, such as "Minimal Example" or "Essential Ex
![Minimal Example](image4.png "image_tooltip")
Upon clicking on a process model (such as Minimal Example), a new window will open with details and a list of associated files.
![alt_text](image8.png "image_tooltip")
@ -66,7 +65,6 @@ If you wish to view and make changes to the process diagram.
Open a .bpmn file and you will have a visual diagram representing the workflow.
Take a closer look at the diagram and familiarize yourself with the elements, such as start events, tasks, and end events.
![BPMN Editor](image9.png)
You can access detailed information and properties in the right sidebar by clicking on individual tasks.
@ -74,15 +72,15 @@ Make modifications to the diagram by adding or modifying tasks, connecting eleme
![Launch Markdown Editor](image1.png)
To modify the instructions displayed for manual tasks, navigate to the "Instructions" field.
For example, if you wish to update the information in the manual task named "Show Example Manual Task" below, click "Launch Editor."
This action will open the editor, allowing you to change the displayed content.
![Markdown Editor](image2.png)
**Note:** In order to save any changes, you must have an editor role. To acquire this role, you must request access to a playground (see below). Once you have the editor role, you can save your modifications successfully.
**Note:** In order to save any changes, you must have an editor role.
To acquire this role, you must request access to a playground (see below).
Once you have the editor role, you can save your modifications successfully.
### **Requesting a Playground**
@ -95,16 +93,12 @@ This process will guide you through the steps required to complete the request a
![Playground Form](image11.png)
### **Access the Playground**
When your account is set up, select the "**Playground**" option in the process section, and you will see that you have gained the ability to create and modify your own process models.
![alt_text](image10.png "image_tooltip")
Within the playground, you will find a container assigned to your name.
Inside this container, you will have access to multiple tasks and process models.
You can utilize this environment to create your own process models and make necessary modifications to the diagrams.

View File

@ -3,27 +3,30 @@ title: "Running SpiffWorkflow Locally with Docker"
date: 2022-12-27T13:15:00-05:00
draft: false
author: Dan Funk
images:
images:
- /images/articles/get_started_thumbnail.png
description: Detailed directions on how to install SpiffArena and create and run your first executable SpiffWorkflow diagram.
---
In this article (and accompanying video) you will create and run your first executable SpiffWorkflow diagram. We'll be using a brand new open source application called SpiffArena that wraps the SpiffWorkflow library in an easier to use interface that provides a host of important tools. Let's get started and you can see for yourself ...
---
In this article (and accompanying video), you will create and run your first executable SpiffWorkflow diagram.
We'll be using a brand new open source application called SpiffArena that wraps the SpiffWorkflow library in an easier-to-use interface that provides a host of important tools.
Let's get started and you can see for yourself...
## Video Instructions
You can follow the directions below, or you can watch this 10-minute video and follow along.
You can follow the directions below, or you can watch this 10-minute video and follow along.
{{< youtube id="Fjdqb2tdxHg" autoplay="0" rel="0" >}}
## Install and Start SpiffArena
### Prerequisites:
You will need to install Docker and Docker-Compose. Please follow [the Docker Installation instructions](https://docs.docker.com/compose/install/) if you do not have these already.
Docker is a way for you to run on your laptop what was designed to run on larger computers and be accessible to many people throughout an organization. It will not alter your computer, and you can fully remove all the files with a few commands provided at the end of this article.
You will need to install Docker and Docker-Compose.
Please follow [the Docker Installation instructions](https://docs.docker.com/compose/install/) if you do not have these already.
Docker is a way for you to run on your laptop what was designed to run on larger computers and be accessible to many people throughout an organization.
It will not alter your computer, and you can fully remove all the files with a few commands provided at the end of this article.
### Downloading and Starting SpiffArena
From Mac0S, Linux Command Line, or Windows Powershell, run the following commands:
From MacOS, Linux Command Line, or Windows Powershell, run the following commands:
{{< highlight Bash "linenos=false" >}}
mkdir spiffworkflow
cd spiffworkflow
@ -32,13 +35,12 @@ docker-compose pull
docker-compose up -d
{{< / highlight >}}
Please note that it may take a few minutes to download and install the docker images.
Please note that it may take a few minutes to download and install the Docker images.
Nothing permanent is happening here.
You can delete these images at any time using the Docker Desktop application.
Its also worth noting that subsequent starts are much faster.
**Macs**: Please note that you may need to use curl rather than wget
**Macs**: Please note that you may need to use curl rather than wget
{{< highlight Bash "linenos=false" >}}
curl -o docker-compose.yml https://raw.githubusercontent.com/sartography/spiff-arena/main/docker-compose.yml
@ -48,7 +50,7 @@ curl -o docker-compose.yml https://raw.githubusercontent.com/sartography/spiff-a
After a few minutes, all processes should be up and running, and you can view the system through your web browser.
1. Visit http://localhost:8001 in your browser.
1. Visit http://localhost:8001 in your browser.
2. Log in as admin/admin
Congratulations!
@ -69,7 +71,7 @@ Lets build and run a very simple workflow to get familiar with the interface,
![add process button](add_process.png)
**Provide the following information:**
1. Display Name: “Playground” _The identifier will automatically be set to “playground”. We will cover other fields and options at another time._
1. Display Name: “Playground” _The identifier will automatically be set to “playground”. We will cover other fields and options at another time._
2. Description: “These are my test processes.”
3. Click “Submit”
@ -81,15 +83,15 @@ Lets build and run a very simple workflow to get familiar with the interface,
**Provide the following information:**
1. Display Name: “Simple Example”
2. The identifier will automatically be set to “simple-example”. We will cover other fields and options at another time.
3. Description: “My first SpiffWorkflow Process Model”
4. Click “Submit”
1. Display Name: “Simple Example”
2. The identifier will automatically be set to “simple-example”. We will cover other fields and options at another time.
3. Description: “My first SpiffWorkflow Process Model”
4. Click “Submit”
5. Click “New BPMN File”
**Welcome to the Diagram Editor!**
**Welcome to the Diagram Editor!**
Lets draw a simple functional BPMN Diagram
Lets draw a simple functional BPMN Diagram.
Every new BPMN diagram is initially populated with a Start Event, which looks like an open circle.
Click on it and it will show a blue outline and a “context menu” find the “Task” icon in the menu (the rectangle with rounded corners) and click it to “Append Task”.
@ -101,11 +103,12 @@ Your diagram should now look like this:
![diagram 1](diagram_1.png)
Now lets turn the “Task” (the rectangle) into a Script Task, and we will add a bit of Python code to our diagram.
Click the Task, to get the context menu up again.
Click the wrench icon {{< inline_image src="wrench.png" alt="wrench icon" >}}, and select {{< inline_image src="script_task.png" alt="Script Task icon" >}}“Script Task” from the list of options.
Click the Task to get the context menu up again.
Click the wrench icon {{< inline_image src="wrench.png" alt="wrench icon" >}}, and select {{< inline_image src="script_task.png" alt="Script Task icon" >}} “Script Task” from the list of options.
At this point your cursor will be blinking inside of the Task icon, allowing you to enter the name of the Task.
For this time we will use an alternative method, described in the next step Click anywhere off the Task and your diagram should now look like this:
At this point, your cursor will be blinking inside of the Task icon, allowing you to enter the name of the Task.
For this time, we will use an alternative method, described in the next step.
Click anywhere off the Task and your diagram should now look like this:
![diagram 2](diagram_2.png)
@ -117,12 +120,12 @@ When you click on a section it will expand.
![Script Properties Panel](prop_panel_script.png)
Click General so it is expanded, we can give the Task a name.
Lets call it “Set Name”.
Lets call it “Set Name”.
Your diagram should now look like this:
![diagram 3](diagram_3.png)
For this exercise well need two Tasks, so similar to how you added the first Task after the Start Event click on the Script Task you just added, and append a second task,
For this exercise, well need two Tasks, so similar to how you added the first Task after the Start Event, click on the Script Task you just added, and append a second task,
![diagram 4](diagram_4.png)
@ -131,7 +134,7 @@ so the diagram looks like this:
![diagram 5](diagram_5.png)
Take advantage of the blinking cursor in the middle of the newly added Task and name it “Display Message”.
Next click on the wrench icon and select “Manual Task” .
Next, click on the wrench icon and select “Manual Task”.
And to complete the diagram, click on the bolded circle at the top left, it should say “Append EndEvent” as shown below.
![diagram 6](diagram_6.png)
@ -140,7 +143,9 @@ Your diagram should now look like this:
![diagram 7](diagram_7.png)
Now lets add a bit of Python code to execute. Click in the Script Task and expand the “Script” Section and click the “Launch Editor” button which will bring up a python editor. Paste in the following code, and click the Close Button.
Now lets add a bit of Python code to execute.
Click in the Script Task and expand the “Script” Section and click the “Launch Editor” button which will bring up a Python editor.
Paste in the following code, and click the Close Button.
{{< highlight Python "linenos=true" >}}
my_name = "World"
{{< / highlight >}}
@ -154,14 +159,12 @@ Hello {{my_name}}!
Welcome to SpiffWorkflow!
{{< / highlight >}}
The right hand Property Panel should look like this (you may need to grab the bottom left of the Instruction box and drag it down to see everything you pasted in there).
The right-hand Property Panel should look like this (you may need to grab the bottom left of the Instruction box and drag it down to see everything you pasted in there).
![Manual Properties Panel](prop_panel_manual.png)
Save the diagram using the save button in the upper left.
When it asks for a name call it “hello_world”
When it asks for a name call it “hello_world”.
Now click on the “Simple Example” in the breadcrumbs at the top of the page to go back to the process model.
@ -171,7 +174,6 @@ Click the Continue button to return to the Home page and then the Completed tab
![Hello World Run](final_screen.png)
### Shutting it all down
{{< highlight Bash "linenos=false" >}}
@ -179,21 +181,21 @@ $ docker-compose down
$ docker ps
{{< / highlight >}}
## What you have learned
Today you learned a great deal about SpiffWorkflow and the new SpiffArena application, but its just the tip of the iceberg. Here are few things we covered today:
1. How to get SpiffArena running locally on your computer. You can stop it using the DockerDesktop application, or by running docker container down at the command line.
Today you learned a great deal about SpiffWorkflow and the new SpiffArena application, but its just the tip of the iceberg.
Here are a few things we covered today:
1. How to get SpiffArena running locally on your computer. You can stop it using the Docker Desktop application, or by running docker container down at the command line.
2. How to create a new Process Model
3. How to create a simple executable BPMN diagram
4. How to add start events, tasks, and end events to a diagram.
5. How to create a Script Task that contains a bit of python.
5. How to create a Script Task that contains a bit of Python.
6. How to create a Manual Task with a message that people can see.
Remember that the real power of SpiffWorkflow is its ability to help create transparency around complex rules of a business, government agency, or any other organization.
This isnt just some quick and easy way to write code.
It is a tool for building consensus and for offering a guarantee that what you see is truly what you get.
Additional tutorials will cover some of the powerful ways that Spiffworkflow helps you create transparency by using seemingly simple diagrams to describe complex processes, critical decision points, and to coordinate parallel actions and the handoff of responsibility from one person or application to the next all in a way everyone can see and understand.
Additional tutorials will cover some of the powerful ways that SpiffWorkflow helps you create transparency by using seemingly simple diagrams to describe complex processes, critical decision points, and to coordinate parallel actions and the handoff of responsibility from one person or application to the next all in a way everyone can see and understand.
Dont let this simple tutorial fool you.
There is some substantial power within your reach to create change and improve the world in which you live.

View File

@ -1,22 +1,22 @@
---
title: "The Low Code Wall"
subtitle: "Citizen Developers play a critical role in modern software development, but some low-code solutions trap their potential, rather than releasing it. Well talk about how to spot low-code solutions that dont have walls."
subtitle: "Citizen Developers play a critical role in modern software development, but some low-code solutions trap their potential, rather than releasing it. Well talk about how to spot low-code solutions that dont have walls."
date: 2023-01-05T15:06:00-05:00
draft: false
author: Dan Funk
images:
- /images/articles/lowcode2_thumbnail.png
description: A business level introduction to SpiffWorkflow and why we adopted this open source platform and are building a suite of tools around it.
description: A business-level introduction to SpiffWorkflow and why we adopted this open-source platform and are building a suite of tools around it.
---
![Woman behind bars](low-code-jail.png)
## What is Low-Code / No-Code?
Low Code and No Code describe tools that allow people to create software applications (web sites, mobile apps, games, etc…) using graphical tools that dont require writing code in traditional programming languages.
There are some brilliant examples - and they arent new - the idea has been around forever.
Low Code and No Code describe tools that allow people to create software applications (websites, mobile apps, games, etc...) using graphical tools that dont require writing code in traditional programming languages.
There are some brilliant examples - and they arent new - the idea has been around forever.
Weve always been trying to make it easier to talk to computers.
Check out MITs Scratch which helps introduce software concepts to young students, or consider what anyone can do these days with WordPress.
Check out MITs Scratch, which helps introduce software concepts to young students, or consider what anyone can do these days with WordPress.
In fact, pick up any popular cross-discipline software from 3D modeling (Blender) to clinical research (the delightful R language), and you will find this idea blossoming in every corner.
## Who is this Citizen Developer?
@ -28,9 +28,9 @@ People from all walks of life are creating software these days and nearly everyo
## What is the Low-Code Wall
The Low-Code Wall is the point at which a well intentioned tool becomes a hindrance rather than an aide.
It is the moment when a Citizen Developer's aspirations, vision and abilities exceed the capabilities of the tool.
Some Low-Code tools are carefully designed to offer a clean exit, a way to move beyond their baked in limitations and assumptions.
The Low-Code Wall is the point at which a well-intentioned tool becomes a hindrance rather than an aid.
It is the moment when a Citizen Developer's aspirations, vision, and abilities exceed the capabilities of the tool.
Some Low-Code tools are carefully designed to offer a clean exit, a way to move beyond their baked-in limitations and assumptions.
In many cases, however, these tools dont offer a way out.
Maybe it's a malicious vendor lock-in, but mostly its just because offering a way out is damn hard.
Like Alice in Wonderland, Citizen Developers drink the “Low Code” potion, and it solves some of their problems they can get in that rabbit hole, it costs a lot less to fill a tea cup.
@ -40,30 +40,30 @@ But what do they do when they cant get back to normal without demolishing eve
Here are a few ways to tell if a “Low-Code” system is building you a golden walkway right into a pile of busted bricks:
1. Look out for terms like **“Build your app in minutes.”** A quick start is like a too-goodlooking and too-interested first date the faster you move in the beginning, the more quickly you may find the assumptions being made arent ones you are comfortable with long term.
2. Require direct and clear assertions of a low-code system's ability to address **security vulnerabilities**. One of the things that makes software development hard is making sure it cant get abused you dont want hackers taking over your website, or app explosions (the infamous Shadow-IT) creating security vulnerabilities in your organization.
3. **No-Code At All!** Thats not a real benefit. Sometimes the easiest and simplest way to get something done is to write a little code. Basic scripting is a skill anyone can learn, and it comes with staggering power. If you cant move the low-code / no-code tool out of the way and add your own code directly, it **is a wall by definition**.
4. **Open Standards**. Avoid proprietary languages owned and controlled by a single organization. Look for low-code tools that are built on top of existing standards that have broad support. A good low-code tool is a stepping stone to doing more things and growing. The absence of open standards is like the absence of doors and windows - you are walking into a prison cell.
5. **SAAS Only** - SAAS or Software As a Service is a wonderful business model - but if you go with a vendor that only offers their services through their website then you didnt buy a product - the product bought you. You cant control security, you will be forced into each upgrade cycle on their schedule, you will walk to the beat of their drum, and there is no way to prevent the vendor from throwing away all your efforts and leaving you behind.
6. **Trust the lessons of the industry** - There are tools no software developer can do without. Whether it is low-code or high-code, you need some basic things. A testing framework - a way to test your work and assert it meets specific expectations. A versioning system that allows you to track changes, go back three hours to when things were still working, and collaborate with others. And a debugging environment, so when you ask “Why is the damn thing not working?”, you have some way to dig in and find out. You also want a place to ask questions that aren't restricted to paying clients - like Stack Overflow, an open chat room, or a public message board of some type. Finally, you need a Staging Environment - a place where you can make mistakes and test out ideas before you show your work to the world.
1. Look out for terms like **“Build your app in minutes.”** A quick start is like a too-good-looking and too-interested first date the faster you move in the beginning, the more quickly you may find the assumptions being made arent ones you are comfortable with long term.
2. Require direct and clear assertions of a low-code system's ability to address **security vulnerabilities**. One of the things that makes software development hard is making sure it cant get abused you dont want hackers taking over your website, or app explosions (the infamous Shadow-IT) creating security vulnerabilities in your organization.
3. **No-Code At All!** Thats not a real benefit. Sometimes the easiest and simplest way to get something done is to write a little code. Basic scripting is a skill anyone can learn, and it comes with staggering power. If you cant move the low-code/no-code tool out of the way and add your own code directly, it **is a wall by definition**.
4. **Open Standards**. Avoid proprietary languages owned and controlled by a single organization. Look for low-code tools that are built on top of existing standards that have broad support. A good low-code tool is a stepping stone to doing more things and growing. The absence of open standards is like the absence of doors and windows - you are walking into a prison cell.
5. **SAAS Only** - SAAS or Software As a Service is a wonderful business model - but if you go with a vendor that only offers their services through their website then you didnt buy a product - the product bought you. You cant control security, you will be forced into each upgrade cycle on their schedule, you will walk to the beat of their drum, and there is no way to prevent the vendor from throwing away all your efforts and leaving you behind.
6. **Trust the lessons of the industry** - There are tools no software developer can do without. Whether it is low-code or high-code, you need some basic things. A testing framework - a way to test your work and assert it meets specific expectations. A versioning system that allows you to track changes, go back three hours to when things were still working, and collaborate with others. And a debugging environment, so when you ask “Why is the damn thing not working?”, you have some way to dig in and find out. You also want a place to ask questions that aren't restricted to paying clients - like Stack Overflow, an open chat room, or a public message board of some type. Finally, you need a Staging Environment - a place where you can make mistakes and test out ideas before you show your work to the world.
## An alternative to Low-Code for Citizen Developers
### (or “And now a word from our sponsors”)
Im going to switch gears here and tell you about the open source project we created that seeks to support Citizen Developers in a way that avoids the pitfalls outlined above.
Im going to switch gears here and tell you about the open-source project we created that seeks to support Citizen Developers in a way that avoids the pitfalls outlined above.
As an alternative to the largely proprietary low-code systems that exist today, perhaps we could look at ways to better include Citizen Developers in the standard software development process through tools focused on collaboration between the Citizen Developers and an IT Department.
In doing so we can naturally build on the lessons of the industry and avoid some of the common pitfalls outlined above.
And if done right, it creates wide open roads for Citizen Developers to continue to grow, innovate, and expand their contributions.
It is with this vision in mind that we developed SpiffArena - a new open source tool based on the popular SpiffWorkflow Library.
SpiffArena is a complete web based application that encourages collaboration between the IT Team and Citizen Developers.
It is with this vision in mind that we developed SpiffArena - a new open-source tool based on the popular SpiffWorkflow Library.
SpiffArena is a complete web-based application that encourages collaboration between the IT Team and Citizen Developers.
It is a low-code environment that uses visual tools (in this case Flow-Chart like diagrams) and familiar interfaces (like spreadsheets) to create applications.
Citizen Developers can use these tools directly and independently to gather information from end users, make decisions, pass information along to other systems within the organization (anything from Slack Messages to databases to custom API calls).
In the meantime, the core system can be controlled by the IT Department, which can handle critical security concerns and build integration points.
Those Flow-Chart diagrams are a well established standard called BPMN, and the spreadsheets follow another standard called DMN.
Those Flow-Chart diagrams are a well-established standard called BPMN, and the spreadsheets follow another standard called DMN.
So building skills here are useful beyond the application, and resources abound for learning how to use these tools effectively.
The rest of the system is managed through the delightfully intuitive and powerful Python programming language, which is relatively easy to learn and also exceedingly well documented (its one of the most popular programming languages in the world for doing just about anything).

View File

@ -13,7 +13,7 @@ description: A business level introduction to SpiffWorkflow and why we adopted t
(originally posted on [Medium](https://medium.com/@danfunk/a-visual-workflow-library-for-python-d19e1387653))
SpiffWorkflow allows your python application to process BPMN diagrams (think of them as very powerful flow charts) to accomplish what would otherwise require writing a lot of complex business logic in your code.
SpiffWorkflow allows your Python application to process BPMN diagrams (think of them as very powerful flow charts) to accomplish what would otherwise require writing a lot of complex business logic in your code.
You can use these diagrams to accomplish a number of tasks, such as:
* Creating an online questionnaire which changes depending on the answers to previous questions
@ -28,19 +28,19 @@ Visual software development environments are key for handling many of the busine
While there are tons of marketing sites touting “low-code” solutions of nominal value, there are a handful of elegant real-world success stories.
Ive seen them most clearly through the eyes of my son.
His introduction to programming was [Scratch](https://scratch.mit.edu/), where basic programming constructs work like building blocks you can stack together.
It feels a little like playing with legos; you can build chunks and then stick them together in different ways to see what happens.
From there my son moved on to [Blender](https://www.blender.org/), which uses visual tools for the complex process of building 3D animations, taking a multidisciplinaryproblem and providing intuitive visual representation of what is definitely programming.
It feels a little like playing with Legos; you can build chunks and then stick them together in different ways to see what happens.
From there my son moved on to [Blender](https://www.blender.org/), which uses visual tools for the complex process of building 3D animations, taking a multidisciplinary problem and providing intuitive visual representation of what is definitely programming.
Low-Code using visualization tools is very much a real thing, and it will reshape the way we work with computers in the future to solve complex problems.
## What are Workflows and BPMN
The term “Workflow” can mean many things in software.
Our focus is on Business Processes — such as the complex approval process necessary for launching a medical research study at a university (one of our core use cases at the moment).
There is a well established standard for visualizing business processes called BPMN (Business Process Modeling Notation) that looks a heck of a lot like a flow chart (see image below).
There is a well-established standard for visualizing business processes called BPMN (Business Process Modeling Notation) that looks a heck of a lot like a flow chart (see image below).
Version 2.0, published in 2010, was designed to be executable.
This is important.
{{< figure src="lowcode_diagram.png" caption="Not to delve too deeply, but the arrows in the diagram above dictate motion from one task to the next. The boxes with people are User Tasks, and are often powered by user interfaces that allow real people to provide input. The Xs are crossroads where different paths can be taken. The script tasks (with the piece of curvy paper) are where we can inject brief bits of code to make calculations and call out to other software systems and APIs. This is a very small example of all that is possible within the enormous 538 page BPMN standard, but it is a valid example, and demonstrates that powerful diagramming tools can still be intuitive." >}}
{{< figure src="lowcode_diagram.png" caption="Not to delve too deeply, but the arrows in the diagram above dictate motion from one task to the next. The boxes with people are User Tasks, and are often powered by user interfaces that allow real people to provide input. The Xs are crossroads where different paths can be taken. The script tasks (with the piece of curvy paper) are where we can inject brief bits of code to make calculations and call out to other software systems and APIs. This is a very small example of all that is possible within the enormous 538-page BPMN standard, but it is a valid example, and demonstrates that powerful diagramming tools can still be intuitive." >}}
Whats great about BPMN is that you can potentially create software even a CEO can understand.
Imagine having a board meeting where everyone around the table actually knew what they were talking about.
@ -51,7 +51,7 @@ Its a diagram that IS the software.
## What is SpiffWorkflow
BPMN diagrams dont just run.
You need an interpreter that is capable of executing the diagram, in the same way that you need to have the python interpreter to run a python program.
You need an interpreter that is capable of executing the diagram, in the same way that you need to have the Python interpreter to run a Python program.
SpiffWorkflow is an interpreter for BPMN that makes the diagram runnable as a part of your Python application.
Please check out our Features to get a better sense of what is possible with these diagrams, then head over to the Get Started Guide, which can show you how to download and test out SpiffArena (a new web application built around SpiffWorkflow) and build your first executable diagrams.

View File

@ -2,6 +2,7 @@
title: Deep Dive Articles
subtitle: These articles delve a little deeper into the BPMN Standard or provide technical details on complex implementations.
date: 2022-12-29T16:16:00-05:00
description: Detailed information about specific topics related to SpiffWorkflow - including answers to frequently asked questions, technical documentation, and articles on more complex topics.
description: Detailed information about specific topics related to SpiffWorkflow - including answers to frequently asked questions, technical documentation, and articles on more complex topics.
---
These articles are “Deep Dives” into specific areas of SpiffWorkflow that deserve some special attention. We hope these articles help spawn higher level discussions that will guide SpiffWorkflows future development.
These articles are “Deep Dives” into specific areas of SpiffWorkflow that deserve some special attention.
We hope these articles help spawn higher-level discussions that will guide SpiffWorkflows future development.

View File

@ -4,7 +4,7 @@ subtitle: "How to create a multi-person approval process"
date: 2023-01-02T14:09:00-05:00
draft: false
author: Alex Herron & Dan Funk
images:
images:
- /images/articles/parallel_approval_thumbnail.png
description: Detailed instructions for building a parallel approval process in BPMN for SpiffWorkflow.
---
@ -15,19 +15,26 @@ Felix on the [SpiffWorkflow Discord Channel](https://discord.gg/F6Kb7HNK7B) aske
Is SpiffWorkflow able to do this?
Alex (our modeling and business analysis expert) built the following diagram to think through how best to describe a set of parallel tasks that can interrupt each other in a way that would support Felix's questions.
In this diagram we model a case where three people are asked to approve a request, but only two of the three people actually need to take action for the request to go through.
In this diagram, we model a case where three people are asked to approve a request, but only two of the three people actually need to take action for the request to go through.
Details are below, but here is a video that might be a little easier to follow.
{{< video "/videos/parallel_approval.mp4" "my-5" >}}
Here is how the diagram looks in SpiffArena in our Process Instance Viewer. It is worth studying. Even though the diagram for each lane is identical, they each executed very differently.
Here is how the diagram looks in SpiffArena in our Process Instance Viewer.
It is worth studying.
Even though the diagram for each lane is identical, they each executed very differently.
![Image of a completed process](./completed_process.png)
1. The top lane is the "instigating user", the person that started the process. Their first two tasks are grayed-out as completed. It's the lanes below that are important ...
2. In the Approver 1 lane, the Approval happens (through a manual task). Then we check a Data Store (process-level variables) to see how many approvals were completed. In this first case, only one approval has happened, so that path of the parallel gateway is complete.
3. In the Approver 2 lane, we do the same, only this time when we increment the Data Store variable, we have the two required approvals, which causes an Event to fire. This second parallel path is then complete.
1. The top lane is the "instigating user," the person that started the process.
Their first two tasks are grayed out as completed.
It's the lanes below that are important...
2. In the Approver 1 lane, the approval happens (through a manual task).
Then we check a Data Store (process-level variables) to see how many approvals were completed.
In this first case, only one approval has happened, so that path of the parallel gateway is complete.
3. In the Approver 2 lane, we do the same, only this time when we increment the Data Store variable, we have the two required approvals, which causes an Event to fire.
This second parallel path is then complete.
4. When the Event fires, it cancels the final waiting approval, and that final parallel path completes.
5. At this point all three parallel paths are complete and the diagram closes out.
5. At this point, all three parallel paths are complete and the diagram closes out.
Here is the original BPMN file if you would like to try it out yourself.
[Download Diagram](./multi-approvals-1.bpmn "download")

View File

@ -4,47 +4,44 @@ subtitle: "Or, “A diagram of Love”"
date: 2022-09-13T10:00:00-05:00
draft: false
author: Dan Funk
images:
images:
- /images/articles/data_object_thumbnail.png
description: A thorough explanation of BPMN's Data Objects and how they can be used within SpiffWorkflow.
---
description: A thorough explanation of BPMN's Data Objects and how they can be used within SpiffWorkflow.
---
![Intro diagram](intro.png)
### A Simple Default
One of the benefits of both BPMN and Python is they have long low-sloped learning curves.
Things are simple by default, but have the ability to grow to meet far more complex situations.
As we introduce new concepts into SpiffWorkflow we want the default behavior to be equally intuitive and powerful.
Things are simple by default, but have the ability to grow to meet far more complex situations.
As we introduce new concepts into SpiffWorkflow, we want the default behavior to be equally intuitive and powerful.
In SpiffWorkflow, data follows the process flow.
Each task receives all data from the previously executed task.
![Default Data Flow](default.png)
As such, you can expect your web form submission to be available as variables in the following service task.
And the variables you create in that task will be available to the next task, and so on.
We call this type of data **Task Data**, because it belongs to the task.
Each task has full control over the information it receives, and can choose to pass the data on unaffected, or make any changes to it, including clearing it out completely.
This is different from how many BPMN based systems work, but we feel it creates a very intuitive and easy to learn system.
This is different from how many BPMN-based systems work, but we feel it creates a very intuitive and easy-to-learn system.
It has some limitations, particularly as your diagrams become larger and more complex.
At this point BPMN Developers may need more control.
At this point, BPMN Developers may need more control.
### Data Objects
Data Objects are graphical notations that allow BPMN Developers to control which tasks have access to which variables.
As we will demonstrate below, this ability has some far reaching implications, and can become a critical tool as your BPMN structures grow in size and complexity.
As we will demonstrate below, this ability has some far-reaching implications, and can become a critical tool as your BPMN structures grow in size and complexity.
![A Data Object](data_object.png)
Rather than feed you a list of rules, well cover the full definition of these notations in a detailed example later down in the article.
Rather than feed you a list of rules, well cover the full definition of these notations in a detailed example later in the article.
But first we want to introduce you to one more common task with data: transforming it.
But first, we want to introduce you to one more common task with data: transforming it.
This is important as you will often need to change the shape of information as you use it for different purposes.
### Data Mapping and Transformations
@ -61,11 +58,10 @@ In the process, we will describe how SpiffWorkflow can solve the problem using i
![A Simple Example](example.png)
This diagram will work in SpiffWorkflow as is, and each task would gather more information, add it to the Task Data and then send a new copy of that data on to the next task in the flow.
This diagram will work in SpiffWorkflow as is, and each task would gather more information, add it to the Task Data, and then send a new copy of that data on to the next task in the flow.
The benefit here is you dont have to model the data at all.
Its clear where information is coming from, and that it will be available when you need it.
The data and the flow are one in the same.
The data and the flow are one and the same.
The problem is that the Credit Card task would be passed in a list of all 500 available pizza toppings — information it really doesnt likely need.
Worse, the data we provided in credit card details will be passed on to the task for making pizza or sent off in the external call activity, data exposure which is unnecessary and potentially unsafe.
@ -95,7 +91,6 @@ Since almost all of the tasks here will need to deal with the order details, it
It is far better to allow it to pass from task to task as we add additional information to the order.
The process will do things like adding the calculated costs, showing that the payment is complete, and determining if the cheap gluttonous jerks bothered to leave any kind of tip for the driver.
#### Rule #4: Do Use Data Objects to limit access to information
![Rule 4](rule4.png)
@ -112,13 +107,11 @@ In this example, we use Data Objects to share information with the Call Activity
The Data Input is used here to indicate that an Invoice is required by this Process, and SpiffWorkflow will throw an exception if data by this name is not available.
The process below further promises to provide a “receipt” as output.
Here is a quick video showing Data Inputs and DataOutputs in action:
Here is a quick video showing Data Inputs and Data Outputs in action:
{{< video "/videos/data_inputs.mp4" "my-5" >}}
![A Receipt](receipt.png)
## Two Types of Data
I hope these examples were helpful.
@ -130,13 +123,13 @@ Here is an overview of their behavior for reference:
Task Data is information that belongs to the TASK.
It is most useful within a single process model that does not contain large amounts of information.
* Task Data is thread safe by nature, as the data follows the Flow (arrows) of the BPMN diagram.
* Task Data is thread-safe by nature, as the data follows the Flow (arrows) of the BPMN diagram.
* Task Data is transferred by default. Any variables created by forms, decision tables, and scripts are passed on in the Task Data.
* Task Data behaves like a pipeline architecture. Each task has control over the data and may alter it in any way before passing it on.
* Each completed task in a workflow will retain a copy of the data as it was when the task executed. “Rewinding” to a previously completed task would allow access to the Task Data as it was when the Task was first executed.
* Task Data can be directly referenced by name in script tasks, gateways, forms in user tasks, and decision tables.
### Dat Objects
### Data Objects
Data Objects are information that belongs to the PROCESS.
It offers encapsulation as well as control over data from within the BPMN diagram.
@ -152,15 +145,15 @@ As Bruno Paré-Simard pointed out in a recent GitHub Issue, we should find ways
## References and Further Reading
The implementation of BPMN Data Objects, Data Inputs and Data Outputs has, at times, been hotly debated, as you can find in the comments of this article from BPMN expert Bruce Silver: https://www.trisotech.com/bpmn-decoded-data-flow/
The implementation of BPMN Data Objects, Data Inputs, and Data Outputs has, at times, been hotly debated, as you can find in the comments of this article from BPMN expert Bruce Silver: https://www.trisotech.com/bpmn-decoded-data-flow/
We looked at a number of existing BPMN based products to see how they handled Data, and they took widely divergent approaches.
We looked at a number of existing BPMN-based products to see how they handled Data, and they took widely divergent approaches.
We looked closely at some other BPMN implementations as we formulated our approach.
Camunda [avoids the use of BPMNs Data Objects](https://docs.camunda.io/docs/components/best-practices/development/handling-data-in-processes/) and prefers its own proprietary method for transferring data between tasks, as they describe in their documentation.
Flowable [follows this same trend](https://www.flowable.com/open-source/docs/bpmn/ch07b-BPMN-Constructs/#passing-variables), evolving away from the BPMN spec and using extension elements to handle the exchange of data.
Trisotech favors using Data Objects for all data, and sticks close the the standard as described in this recent Bruce Silver article: https://methodandstyle.com/executable-bpmn-vs-method-and-style/
Trisotech favors using Data Objects for all data, and sticks close to the standard as described in this recent Bruce Silver article: https://methodandstyle.com/executable-bpmn-vs-method-and-style/
In our opinion, these all seem to create difficult interfaces for Citizen Developers (folks from other domains that have picked up programming skills along the way) — and we are hoping that our approach makes it a little easier for people to develop BPMN diagrams without having to understand everything from the very beginning.

View File

@ -4,7 +4,7 @@ subtitle: "Using the Connector Proxy and an AWS Lambda Function to Integrate wit
date: 2023-04-06T14:09:00-05:00
draft: false
author: Jon Herron
images:
images:
- /images/articles/deploy_integrate_thumbnail.png
description: Detailed instructions that cover making an external connection from SpiffWorkflow to a 3rd party service.
---
@ -14,12 +14,12 @@ description: Detailed instructions that cover making an external connection from
This guide shows you how to deploy the demo `Connector Proxy` as an `AWS Lambda Function` as well as how to integrate it with [SpiffArena](https://www.spiffworkflow.org/pages/spiffarena/).
The [Getting Started Guide](https://www.spiffworkflow.org/posts/articles/get_started/) will be used as the basis for integration but the steps should easily map to any custom installation.
There is an assumption that you have access to login to the AWS Console and can create/deploy Lambda functions.
There is an assumption that you have access to log in to the AWS Console and can create/deploy Lambda functions.
## Checkout the source code
The source code for this project is available on [GitHub](https://github.com/sartography/connector-proxy-lambda-demo).
You will need to close this repository to complete the steps below.
You will need to clone this repository to complete the steps below.
## Building the zip
@ -31,9 +31,9 @@ make zip
```
This will create a zip file containing the [lambda entry point function](https://github.com/jbirddog/connector-proxy-lambda-demo/blob/main/connector_proxy_lambda_demo/lambda_function.py#L5) as well as all the dependencies needed to execute the connectors.
For this example the libraries [spiffworkflow-proxy](https://github.com/sartography/spiffworkflow-proxy) is used for discovering connectors and [connector-http](https://github.com/sartography/connector-http) is an example connector that provides http get and post requests.
For this example, the libraries [spiffworkflow-proxy](https://github.com/sartography/spiffworkflow-proxy) are used for discovering connectors and [connector-http](https://github.com/sartography/connector-http) is an example connector that provides HTTP GET and POST requests.
Once `make zip` completes `connector_proxy_lambda_demo.zip` will be available in the repository root.
Once `make zip` completes, `connector_proxy_lambda_demo.zip` will be available in the repository root.
## Creating the Lambda Function
@ -43,22 +43,22 @@ Log in to the AWS Console and navigate to the Lambda section.
From there choose `Create function`.
![Create Function ScreenShot](create_function.png)
![Create Function Screenshot](create_function.png)
Choose to `Author from scratch` and select the most recent Python runtime.
![Author From Scratch Screenshot](author_from_scratch.png)
Under `Advanced Settings` check `Enable function URL`.
For this demo we will use the `NONE` auth type to keep things simple.
For this demo, we will use the `NONE` auth type to keep things simple.
![Advanced Settings Screenshot](advanced_settings.png)
After hitting the `Create function` button you will be taken to your new Lambda function:
After hitting the `Create function` button, you will be taken to your new Lambda function:
![Lambda Screenshot](lambda.png)
In the bottom right of the first section is a link to your Lamba's function URL.
In the bottom right of the first section is a link to your Lambda's function URL.
Click it for a hello world response.
![Function URL Screenshot](function_url.png)
@ -71,7 +71,7 @@ Choose `Upload from` and select `.zip file`.
![Code Source Screenshot](code_source.png)
After a confirmation dialog you will see your lambda has been updated:
After a confirmation dialog, you will see your Lambda has been updated:
![Code Source 2 Screenshot](code_source2.png)
@ -93,14 +93,12 @@ index 95b87b39..7d55c492 100644
+++ b/docker-compose.yml
@@ -26,7 +26,7 @@ services:
SPIFFWORKFLOW_BACKEND_URL: "http://localhost:${SPIFF_BACKEND_PORT:-8000}"
SPIFFWORKFLOW_BACKEND_BPMN_SPEC_ABSOLUTE_DIR: "/app/process_models"
- SPIFFWORKFLOW_BACKEND_CONNECTOR_PROXY_URL: "http://spiffworkflow-connector:8004"
+ SPIFFWORKFLOW_BACKEND_CONNECTOR_PROXY_URL: "https://crbxgaopinfxqscntkqixjbl4e0gigpm.lambda-url.us-east-1.on.aws"
SPIFFWORKFLOW_BACKEND_DATABASE_URI: "mysql+mysqlconnector://root:${SPIFF_MYSQL_PASS:-my-secret-pw}@spiffworkflow-db:${SPIFF_MYSQL_PORT:-8003}/spiffworkflow_backend_development"
SPIFFWORKFLOW_BACKEND_LOAD_FIXTURE_DATA: "false"
SPIFFWORKFLOW_BACKEND_OPEN_ID_CLIENT_ID: "spiffworkflow-backend"
```
Restart:
@ -113,12 +111,12 @@ docker compose up -d
## Testing
Create a new process model as described in the [Getting Started Guide](/posts/articles/get_started/).
Add a `Service Task` and in its properties panel you will see a drop down to pick which connector in your `Connector Proxy` to call.
In this demo we deployed http get and post connectors:
Add a `Service Task` and in its properties panel, you will see a drop-down to pick which connector in your `Connector Proxy` to call.
In this demo, we deployed HTTP GET and POST connectors:
![BPMN Editor Screenshot](bpmn_editor.png)
Choose the `http/GetRequest` operator ID and enter the [dog fact api](https://dog-api.kinduff.com/api/facts) URL.
Choose the `http/GetRequest` operator ID and enter the [dog fact API](https://dog-api.kinduff.com/api/facts) URL.
Remember to quote it since parameters are evaluated as Python expressions.
![Properties Screenshot](properties.png)

View File

@ -7,22 +7,22 @@ author: Dan Funk
images:
- /images/articles/messages_thumbnail.png
description: A thorough explanation of BPMN's Messages -- a poorly understood, but extremely powerful tool for managing communications with a running BPMN process.
---
---
![Intro diagram](intro.png)
This is a deep dive into BPMN 2.0 **Messages** and how we implemented them in our open source project SpiffWorkflow.
This will be primarily of interest to people who care about the BPMN 2.0 standard or are developing larger applications with Spiffworkflow that would benefit from having their BPMN diagrams communicate with each other.
This is thick material, but there is a beautiful idea here well worth understanding, and beneficial to anyone who is interested in prolonged communications between complex systems.
This is a deep dive into BPMN 2.0 **Messages** and how we implemented them in our open-source project SpiffWorkflow.
This will be primarily of interest to people who care about the BPMN 2.0 standard or are developing larger applications with SpiffWorkflow that would benefit from having their BPMN diagrams communicate with each other.
This is thick material, but there is a beautiful idea here well worth understanding and beneficial to anyone who is interested in prolonged communications between complex systems.
Adherence to the BPMN standard for Messages is exceedingly rare.
There are few working examples that actually implement the standard or attempted to further its adoption.
That isnt surprising, as the BPMN specifications paragraph on Message “Correlations” is one the most dense and challenging bits of technical writing you will ever be so unfortunate as to confront.
There are few working examples that actually implement the standard or attempt to further its adoption.
That isnt surprising, as the BPMN specifications paragraph on Message “Correlations” is one of the most dense and challenging bits of technical writing you will ever be so unfortunate as to confront.
But it is beautiful at its heart, and we will try to capture that here.
### The Concepts
In this section we will cover the following major concepts: The **Message** itself, **Collaborations**, and **Correlations**.
In this section, we will cover the following major concepts: The **Message** itself, **Collaborations**, and **Correlations**.
Understanding these concepts is critical to the following sections where we will describe their usage.
### A Simple Message
@ -35,7 +35,7 @@ Messages always have a one-to-one relationship.
One sender to one receiver.
To better explain messages, well build on a simple example that doesnt initially require one.
Buddy and Peggy, deeply in love, are in a tight embrace and Buddy says: “Peggy Sue, Oh how my heart yearns for you”, and Peggy, hearing it, responds: “Buddy Holly, how you make my heart jolly!” It is a perfect moment, and can be captured in a happy little BPMN diagram.
Buddy and Peggy, deeply in love, are in a tight embrace and Buddy says: “Peggy Sue, Oh how my heart yearns for you”, and Peggy, hearing it, responds: “Buddy Holly, how you make my heart jolly!” It is a perfect moment and can be captured in a happy little BPMN diagram.
![Happy little bpmn diagram](happy.png)
@ -74,14 +74,18 @@ The Admirers know who they admire, and each beloved knows their own name — so
You dont get the Key wrong.
You dont yell out Toms name in a passionate moment with Peggy.
**Collaborations**, **Messages**, and **Correlations** have no visual representation in the BPMN diagrams. So I cant draw you a picture. But they are first order concepts carefully covered in the BPMN 2.0 standard. You have to manipulate them through some sort of “Properties Panel,” which we will cover in the next section.
**Collaborations**, **Messages**, and **Correlations** have no visual representation in the BPMN diagrams.
So I cant draw you a picture.
But they are first-order concepts carefully covered in the BPMN 2.0 standard.
You have to manipulate them through some sort of “Properties Panel,” which we will cover in the next section.
The hardest concept for me, when I read the specification, was understanding that Correlations apply to the Collaboration as a whole.
It is the subject of the conversation.
It isnt (as I struggled with for weeks) the address on an envelope.
It is a sticky thing that should be used consistently across all the messages in a conversation, So as we continue, fight to keep this idea in your head: Its all about having a good conversation about a specific subject.
It is a sticky thing that should be used consistently across all the messages in a conversation.
So as we continue, fight to keep this idea in your head: Its all about having a good conversation about a specific subject.
![particiant diagram external](bpmn2.png)
![participant diagram external](bpmn2.png)
Finally, it is worth noting that you will likely model these different processes in completely different BPMN files.
So in the real world, you would describe the other process in a collapsed state as shown to the left.
@ -93,11 +97,11 @@ We will cover that responsibility in the following section on Applications and t
This section will cover the changes to 4 different SpiffWorkflow applications in order to support messages as described above, working with the standard and attempting to avoid any custom BPMN extensions.
Well tackle the BPMN editor first — as this is where many of the changes are visible, then we will delve into the XML and how the backend systems will process this information.
### BPMN.js — Spiffworkflow
### BPMN.js — SpiffWorkflow
This section includes our additions and modifications to the excellent open source BPMN.js editor maintained by Camunda.
This section includes our additions and modifications to the excellent open-source BPMN.js editor maintained by Camunda.
The changes will impact the Properties Panel when specific visual elements are selected.
Included here are actual screen shots from our working extensions to the BPMN.js editor.
Included here are actual screenshots from our working extensions to the BPMN.js editor.
Well provide links lower in this article to our code repository so you can try it out!
### Collaboration
@ -112,17 +116,17 @@ So we will make it possible to edit these correlation keys elsewhere within the
### Send Tasks, and Message Throw Events
![Message Panel](message_panel.png)
![Message Panel](message_panel.png)
When defining a message to be sent out in SpiffWorkflow, you will need to specify three things:
* The message id — a message name that should be unique among all messages in your system, but human readable. And it should match up on the receiving end.
* The message id — a message name that should be unique among all messages in your system, but human-readable. And it should match up on the receiving end.
* The Payload — the content of the message. SpiffWorkflow is all about Python, so here we define the payload as a Python Dictionary.
* Any correlations directly related to this message, if there are any.
When this message is sent out, it will contain these three parts, and the SpiffWorkflow Backend (described later) will use the ID and Correlation to match this message up with the correct process.
![Event Panel](event.png)
![Event Panel](event.png)
### Receive Tasks and Message Catch Tasks
@ -135,7 +139,12 @@ Well talk about this as well in the section on SpiffWorkflow Backend, where i
The extensions we will add to BPMN.io will produce BPMN 2.0 compliant XML.
We will create only one extension to the BPMN to complete this effort to make it easy to define the message payload.
Messages and Correlations will be defined within the root element, per the specification. The SpiffWorkflow Backend will work to assure these values remain consistent across all processes, and can provide endpoints to verify the messages are correctly aligned. **_IMPORTANT_**: Dont think about messages and correlations as belonging to a process. They do not. They belong to the system as a whole, and can be maintained across different BPMN diagrams. The resulting XML in this case is:
Messages and Correlations will be defined within the root element, per the specification.
The SpiffWorkflow Backend will work to ensure these values remain consistent across all processes, and can provide endpoints to verify the messages are correctly aligned.
**_IMPORTANT_**: Dont think about messages and correlations as belonging to a process.
They do not.
They belong to the system as a whole and can be maintained across different BPMN diagrams.
The resulting XML in this case is:
{{< highlight XML >}}
<bpmn:message id="love_letter" name="Love Letter"/>
<bpmn:message id="love_letter_response" name="Love Letter Response" />
@ -150,8 +159,7 @@ Messages and Correlations will be defined within the root element, per the speci
</bpmn:correlationProperty>
{{< / highlight >}}
Collaborations will contain the message flows, and will offer a correlation Key that connects the correlation properties defined as described above.
Collaborations will contain the message flows, and will offer a Correlation Key that connects the correlation properties defined as described above.
{{< highlight XML >}}
<bpmn:collaboration id="my_collaboration">
@ -162,7 +170,7 @@ Collaborations will contain the message flows, and will offer a correlation Key
<bpmn:messageFlow id="response_flow" name="response flow"
sourceRef="Activity_13eq2gr" targetRef="EventReceiveLetter" />
<bpmn:correlationKey name="lover">
<bpmn:correlationPropertyRef>Lover_first_name</bpmn:correlationPropertyRef>
<bpmn:correlationPropertyRef>Lover_first_name</bpmn:correlationPropertyRef>
<bpmn:correlationPropertyRef>Lover_last_name</bpmn:correlationPropertyRef>
</bpmn:correlationKey>
</bpmn:collaboration>
@ -188,7 +196,7 @@ The SendTask will include a custom SpiffWorkflow extension to define the payload
</bpmn:sendTask>
{{< / highlight >}}
### In Closing
### In Closing
Most implementations of BPMN see messages as primarily a means of communicating with other external applications.
This article is focused specifically on how multiple BPMN processes can communicate with each other in a loosely coupled way.