updates to features page

added pages for spiffarena, editor, workflow lib
Added several new articles, and a way to list them.
New list template
A ton of new images for articles
This commit is contained in:
Dan 2022-12-29 16:16:36 -05:00
parent b78dacffe1
commit f569b6b247
26 changed files with 7530 additions and 56 deletions

View File

@ -37,7 +37,7 @@ params:
# Button text
buttontext: Get started
# Where the main hero button links to
buttonlink: "#"
buttonlink: "/posts/articles/get_started"
# Hero image (from static/images/___)
image: illustrations/flow.svg
# Footer logos (from static/images/logos/clients/___.svg)
@ -57,7 +57,7 @@ params:
- title: SpiffEditor
url: /pages/spiffeditor
- title: Get Started
url: /posts/get_started
url: /posts/articles/get_started
button: true
sidebar:
# Logo (from /images/logos/___.svg)
@ -67,20 +67,18 @@ params:
icon: user
links:
- text: SpiffWorkflow
url: /
url: /pages/spiffworkflow
- text: SpiffArena
url: /
url: /pages/spiffarena
- text: SpiffEditor
url: /
url: /pages/spiffeditor
- title: Articles
icon: envelope
links:
- text: Intro Articles
url: /
- text: Business Articles
url: /
- text: Technical Articles
url: /
- text: Introduction Articles
url: /posts/articles
- text: Deep Dive Articles
url: /posts/deep_dives
section1:
title: Open Source Software
subtitle: It's all open. All of it. The whole enchelada. (well it would be a taquito then, wouldn't it?).
@ -88,12 +86,12 @@ params:
- title: SpiffWorkflow
icon: spiffworkflow
text: The original lightweight diagram execution library.
url: /
url: /pages/spiffworkflow
buttonText: Learn More
- title: SpiffArena
icon: spiffarena
text: A complete platform for managing diagrams.
url: /
url: /pages/spiffarena
buttonText: Learn More
- title: SpiffEditor
icon: spiffedit
@ -119,7 +117,7 @@ params:
subtitle: Diagrams can be intutive AND executable - removing monotony, adding transpaency and opening opertunities for improvement and adaptation.
image: illustrations/school.svg
buttonText: Get started
buttonLink: "#"
buttonLink: "/posts/articles/get_started"
section4:
title: Join the Innovators
subtitle: We are just getting started. Join these innovators and help us continue to refine and improve this important open source project
@ -159,25 +157,19 @@ params:
title: "Projects"
links:
- text: SpiffArena
link: /
link: /pages/spiffarena
- text: SpiffWorkflow
link: /
link: /pages/spiffworkflow
- text: SpiffEditor
link: /
- text: Our roadmap
link: /
link: /pages/spiffeditor
column2:
title: "Docs"
links:
- text: Get started
link: /
- text: Detailed Documentation
link: /
link: /posts/articles/get_started
column3:
title: "Blog"
links:
- text: Intro articles
link: /blog/intro
- text: Business articles
link: /blog/business
- text: Techincal articles

View File

@ -47,7 +47,7 @@ With editors for Python, Markdown, and Json - you can quickly jump from drawing
### Data Encapsulation
SpiffWorkflow supports BPMN's Data Objects, Data Inputs and Data Outputs, allowing you to visually control what data is accessible to which components. When composing diagrams within diagrams you can declare the expected variables that will be provided, and the ones that will return, keeping your workflows clean, consistent, and easy to understand.
SpiffWorkflow supports BPMN's Data Objects, Data Inputs and Data Outputs, allowing you to visually control what data is accessible to which components. 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.
### Python Editor with builtin unit tests
A robust python editor allows you to write small bits of code that help modify data (say user input on a form) to fit a different purpose (sending a formatted message to Slack). To make these modifications you can use script tasks. And to make sure they are working correctly we provided a way to test them in place to make sure they do what you expect them to do!

Binary file not shown.

Before

Width:  |  Height:  |  Size: 112 KiB

View File

@ -0,0 +1,21 @@
---
title: "SpiffArena"
subtitle: "A turnkey solution for managing workflows"
date: 2022-12-27T16:05:00-05:00
author: Dan Funk
draft: false
---
SpiffArena is a combination of many tools into a single web based application. If you would like access to all of the [Features](/pages/features) in our feature list (and a lot more) this is the tool you want.
![SpiffArena](/images/spiffarena/spiffarena.png)
You can create your first diagram using SpiffArena right now by following our [Getting Started](/posts/get_started) guide.
If you are interested in paid support, please get in contact with us for free consultation. We are looking forward to talking to you.
## License
GNU LESSER GENERAL PUBLIC LICENSE

View File

@ -0,0 +1,29 @@
---
title: "SpiffEditor (and other open source projects)"
subtitle: "Here are few more tools for working with SpiffWorkfow and SpiffArena"
date: 2022-12-27T16:05:00-05:00
draft: false
---
## 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:
* **Data Objects, Inputs and Outputs**: Improved support of 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 from within other diagrams.
* **Custom Properties Panel**: A SpiffWorkflow native properties panel to allow opening up custom editors for Python, Markdown and Json. Ability to add short pre and post scripts to any task, Support for SpiffWorkflows Python Unit Testing framework, among many other tools.
* **Messages**: We added support for the BPMN Messaging standard, to assure you can easily create Messages and their associated converation 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 will 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 written to the Plug-In standard -- Checkout our [AWS Connector](https://github.com/sartography/connector-aws) for an example. Adding new plugins should be easy, and we hope to see many contributions here in the future.
## SpiffWorkflow Backend and Frontend
SpiffArena's two major components are a flask API ([SpiffWorkflow Backend](https://github.com/sartography/spiffworkflow-backend)) and a React FrontEnd application ([SpiffWorkflow Frontend](https://github.com/sartography/spiffworkflow-frontend)).
## License
All of the applications above fall under the
GNU LESSER GENERAL PUBLIC LICENSE

View File

@ -0,0 +1,22 @@
---
title: "SpiffWorkflow"
subtitle: "A Python Library for embedding diagrams into your projects"
date: 2022-12-27T16:05:00-05:00
draft: false
---
Spiffworkflow is an open source python library with source code available on [GitHub](https://github.com/sartography/SpiffWorkflow]) and detailed documentation currently available on [ReadTheDocs](https://spiffworkflow.readthedocs.io/en/latest/). It is the core library within SpiffArena. It's target audience is Python developers who want to create custom workflow systems or embed BPMN features into existing applications.
## Build status
[![Build Status](https://travis-ci.com/sartography/SpiffWorkflow.svg?branch=master)](https://travis-ci.org/sartography/SpiffWorkflow)
[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=sartography_SpiffWorkflow&metric=alert_status)](https://sonarcloud.io/dashboard?id=sartography_SpiffWorkflow)
[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=sartography_SpiffWorkflow&metric=coverage)](https://sonarcloud.io/dashboard?id=sartography_SpiffWorkflow)
[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=sartography_SpiffWorkflow&metric=sqale_rating)](https://sonarcloud.io/dashboard?id=sartography_SpiffWorkflow)
[![Documentation Status](https://readthedocs.org/projects/spiffworkflow/badge/?version=latest)](http://spiffworkflow.readthedocs.io/en/latest/?badge=latest)
[![Issues](https://img.shields.io/github/issues/sartography/spiffworkflow)](https://github.com/sartography/SpiffWorkflow/issues)
[![Pull Requests](https://img.shields.io/github/issues-pr/sartography/spiffworkflow)](https://github.com/sartography/SpiffWorkflow/pulls)
## License
GNU LESSER GENERAL PUBLIC LICENSE

View File

@ -0,0 +1,6 @@
---
title: Articles
subtitle: Introductory articles and videos to help you get started with SpiffWorkflow
date: 2022-12-29T11:16:00-05:00
---

View File

@ -2,7 +2,9 @@
title: "Getting Started"
date: 2022-12-27T13:15:00-05:00
draft: false
---
author: Dan Funk
thumbnail: /images/articles/get_started_thumbnail.png
---
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 ...
![spiff arena image](/images/getting_started/spiff_arena.png)
@ -13,6 +15,8 @@ In this article (and accompanying video) you will create and run your first exec
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.
## Video Instructions
You can follow the directions below, or you can watch this 10-minute video and follow along.
{{< video "/videos/getting_started.mp4" "my-5" >}}
### Downloading and Starting SpiffArena

View File

@ -1,31 +1,36 @@
---
title: "A Visual Workflow Library for Python"
date: 2022-12-27T13:15:00-05:00
title: "Why we adopted SpiffWorkflow"
subtitle: "The future of business software is drawn in the code"
date: 2021-12-01T13:15:00-05:00
draft: false
author: Dan Funk
thumbnail: images/articles/lowcode_thumbnail.png
---
# A Visual Workflow Library for Python
![Silly picture of my dog](/images/articles/lowcode.png)
(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. 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;
Building a complex approval process that needs to be handed off between multiple people;
Allowing non-developers to make iterative changes to the flow of an application over time;
* Creating an online questionnaire which changes depending on the answers to previous questions;
* Building a complex approval process that needs to be handed off between multiple people;
* Allowing non-developers to make iterative changes to the flow of an application over time;
SpiffWorkflow can do all of this while drastically improving communication within multidisciplinary teams, allowing more people to contribute to your application, and making it more resilient to changing requirements.
Visualizing Code is the Future
## Visualizing Code is the Future
Visual software development environments are key for handling many of the business problems we need to solve over the coming decade. 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 where basic programming constructs work like building blocks you can stack together. It feels a little like playing with legos, you can build chunks, then stick them together in different ways to see what happens. From there my son moved on to Blender, which uses visual tools for the complex process of building 3D animations, taking a dual disciple 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.
Visual software development environments are key for handling many of the business problems we need to solve over the coming decade. 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, 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 dual disciple 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
## 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 (our core use case 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). Version 2.0 published in 2010 was designed to be executable. This is important.
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 wit
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="/images/articles/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. This is the glorious promise of BPMN. A diagram that doesnt roughly abstract the general meaning of what we think the software does. Its a diagram that IS the software.
What is SpiffWorkflow
## 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. SpiffWorkflow is an interpreter for BPMN, that makes the diagram runnable as a part of your Python application.
@ -33,9 +38,3 @@ SpiffWorkflow is open source, and released under the GNU Lesser General Public L
Two years ago we were searching for an open source workflow library in Python that could handle BPMN. We found SpiffWorkflow, a project founded by Samuel Abels (@knipknap) in 2010. Over the last two years weve made thousands of contributions to the code base as we started using it to manage dozens of complex real-world workflows. Earlier this year we released a new version of SpiffWorkflow with all of our contributions, and released a set of new bug fixes just this past week. It is not perfect, but it is definitely battle hardened, and ready for others to pick up, try out, and potentially contribute to.
If you want to learn more, and play around with the library, please check out the ReadTheDocs, particularly the section on BPMN. And please stay tuned for more technical articles with tips on how to get the most out of SpiffWorkflow and use it in your own applications.
Python
Workflow
Bpmn
Low Code

View File

@ -0,0 +1,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
---
# Is this really not here?

View File

@ -0,0 +1,122 @@
---
title: "BPMN Messages in SpiffWorkflow"
subtitle: "Or, “A diagram of Love”"
date: 2022-12-27T13:15:00-05:00
draft: false
author: Dan Funk
thumbnail: /images/articles/messages/messages_thumbnail.png
---
This is a deep dive into BPMN 2.0 Messages and how we implemented them in our open source project SpiffWorkflow. If you want to get a gentle introduction to our project, please check out this article. 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. 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. Understanding these concepts is critical to the following sections where we will describe their usage.
A Simple Message
Messages themselves are pretty simple. They have a unique name and a payload. If you imagine two people talking in a quiet room, thats all that is needed.
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.
But love isnt always so simple. And neither is BPMN.
Collaborations
Lets move Buddy and Peggy to a room full of romantic couples and track all the romantic profferings in BPMN. To do that we will need to use more generic terms and introduce a Collaboration diagram, as shown below. Collaborations encompass multiple participants/processes with interconnected messages.
Imagine we have 2 “Admirer” and 2 “Beloved” instances running at the same time: Buddy and Mary Jane play the “Admirer”, “Peggy” and “Tom” are the beloved. If we get this right, its a romantic evening. If we get it wrong, there will be blood.
It is all about context. If Buddy is saying nice things to Peggy, then we dont want Peggy responding to Mary Jane. The critical concept here is a “conversation”, and just like in real life, there are some very complex social rules about how conversations work.
Some “conversations” in life are terrible. They seem to meander about from one thing to the next with no rhyme or reason, and no end in sight. That isnt an actual conversation, its a nuisance — an area not covered by BPMN. We want good conversations, and that requires a subject or topic on which the conversation is grounded. All the messages back and forth should relate to the topic of the conversation. Or, to use the correct BPMN words, a Collaboration (the conversation) has a CorrelationKey (topic). THIS IS IMPORTANT
Correlations
Think of a correlation as the “Subject of the Conversation”. In our example, a good subject would be the beloveds name: “Peggy”, “Tom”. The Admirers know who they admire, and each beloved knows their own name — so we have a kind of “Key” on which to base the conversation. 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.
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.
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. It will be up to the application that is executing these processes to coordinate the messages between them. We will cover that responsibility in the following section on Applications and the SpiffWorkflow Backend.
Implementation in SpiffWorkflow
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. If you are wondering why we have 4 different applications and how the pieces fit together, please check out this article on our current development efforts. 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
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. Well provide links lower in this article to our code repository so you can try it out!
Collaboration
When a collaboration is selected in the editor, we will display a new section called “Correlation Keys”. We want to make it clear at a glance that this conversation is based around the “beloved_name”, and that communications back and forth should relate to this name somehow.
But this can also be a cumbersome place to go as you are working through the diagram. So we will make it possible to edit these correlation keys elsewhere within the context of Send and Receive tasks and events.
Send Tasks, and Message Throw Events
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 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.
Receive Tasks and Message Catch Tasks
When receiving a message, you can specify the message id (you can create a new id, or select it from a dropdown list). The Correlation here should match exactly the correlation defined in the other BPMN diagram if these are separate. Well talk about this as well in the section on SpiffWorkflow Backend, where it may be possible through API integrations to ensure these remain locked between disparate diagrams.
Resulting XML
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:
Collaborations will contain the message flows, and will offer a correlation Key that connects the correlation properties defined as described above.
Send Tasks and Receive Tasks can just reference the unique message id. The SendTask will include a custom SpiffWorkflow extension to define the payload in a simple and direct way, and is the only custom extension we will create as a part of this effort.
SpiffWorkflow — Core Library
The SpiffWorkflow BPMN interpreter, at the center of everything, will have the following modifications:
Notify the calling application of Message Send events that occur during the running of a process
Interpret / execute the message payload and the correlation expressions
Provide a way to accept incoming messages
It will be the responsibility of the SpiffWorkflow Backend (or your application) to listen for these events and respond appropriately.
SpiffWorkflow — Backend
The SpiffWorkflow backend is responsible for managing multiple running instances of the SpiffWorkflow Library. It also provides API endpoints to other applications (Like SpiffWorkflow Frontend) to allow introspection and management of running processes. The following abilities will be added to the Backend:
Database tables to track message definitions. For every current process model (every BPMN file) we will record what messages that process is capable of sending and receiving, and what correlation values it defines for those messages.
Database tables to track message delivery. This will include tables that can capture a message
API Endpoints for listing, searching, viewing, and in some cases editing these values. (Editing of Collaborations will likely be included at some future date)
SpiffWorkflow — Frontend
The SpiffWorkflow Frontend will add additional pages for viewing message definitions, current messages, etc, as provided by the new backend enhancements. Future releases of SpiffWorkflows Frontend will include documentation covering how the User Interface looks, and how it can be configured and repurposed for your specific needs.
Learning More & Get Involved
These new tools will be available in the next release of SpiffWorkflow, which are still weeks if not months off. In the meantime, if you are willing to try the bleeding edge, please check out the main branch of our repositories on GitHub:
SpiffWorkflow — The main branch has support for everything described here. You can start a new project and create a dependency on our GitHub repository. In Poetry you might do something like:
spiffworkflow = {git = “https://github.com/sartography/SpiffWorkflow", rev = “main”}
SpiffWorkflow bpmn-js — Camundas excellent bpmn-js library can be extended to support Data Inputs and Data Outputs, as well make Data Objects a little easier to create and manage. These extensions to bpmn-js are available in the GitHub repository, which also includes a way to build and run a local BPMN editor with a simple node command.
Finally, 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. Loosely enough, that in theory, one process could actually be an external application. We will come back to external applications in a future article.
References:
When tackling a new area of SpiffWorkflow we take a careful look at other BPMN based systems. Here are links to some of the resources we consulted in addition to the official BPMN 2.0 Specification.
https://youtu.be/8SYEc3dHnM4 (great video on Camundas process)
https://youtu.be/-UaFHzit7LA (Using Message Based Correlation in an Oracle BPM Process)
https://www.trisotech.com/using-messages-in-executable-bpmn/ (Silver / Trisotech)
https://community.bonitasoft.com/blog/when-use-call-activity-or-bpm-message (BonitaSoft)

View File

@ -1,11 +0,0 @@
---
title: "My First Post"
date: 2022-12-08T11:15:00-05:00
draft: true
---
## Introduction
This is **bold** tst and this is *emp*
just markdown, blah blah

111
layouts/_default/list.html Normal file
View File

@ -0,0 +1,111 @@
<!DOCTYPE html>
<html lang="{{ .Site.LanguageCode }}">
<head>
{{ partial "meta.html" . }}
<title>{{ block "title" . }}{{ .Site.Title }}{{ end }}</title>
{{ partial "css.html" . }}
<link rel="stylesheet" type="text/css" href="/css/custom.css">
</head>
<body>
{{ if ne .Site.Params.preloader false }}
<!-- Preloader -->
<div id="preloader">
<div id="status"></div>
</div>
{{ end }}
{{ partial "navbar.html" . }}
{{ partial "navbar-clone.html" . }}
<section class="section is-medium">
<div class="container">
<div class="columns">
<div class="column is-centered-tablet-portrait">
<h1 class="title section-title">{{ .Title }}</h1>
<h5 class="subtitle is-5 is-muted">{{ .Params.Subtitle }}</h5>
<div class="divider"></div>
</div>
</div>
<div class="content">
{{ .Content }}
<div class="list-container">
{{ range .Paginator.Pages }}
<div class="item-container">
<section class="item">
<div class="item-thumbnail">
<a href="{{.Permalink}}">
{{ with .Params.thumbnail }}
<img src="{{ . | relURL }}" alt="Thumbnail">
{{ else }}
<img src="{{"images/default_thumbnail.png" | relURL}}" alt="Thumbnail">
{{ end }}
</a>
</div>
<div class="item-text">
<a href="{{.Permalink}}">
<p class="title">{{ .Title }}</p>
</a>
<div class="brief">
<p>
{{ with .Params.summary }}
{{ . }}
{{ else }}
{{ .Summary }}
{{ end }}
</p>
</div>
<div class="meta">
<p>
<span>{{.Date.Format "Jan 2, 2006"}}</span>
<span>
By {{ if ne .Params.author "" }}
{{ .Params.author }}
{{ else }}
{{ .Site.Author.name }}
{{ end }}
</span>
</p>
</div>
</div>
</section>
</div>
{{ end }}
</div>
<!-- Bare bones
<ul>
{{ range .Pages }}
<li>
<a href="{{.Permalink}}">{{.Date.Format "2006-01-02"}} | {{.Title}}</a>
</li>
{{ end }}
</ul>
-->
</div>
</div>
</section>
{{ if .Params.include_footer }}
{{ partial "footer.html" . }}
{{ end }}
<!-- Back To Top Button -->
<div id="backtotop"><a href="#"></a></div>
{{ if .Params.sidebar }}
{{ partial "single/sidebar.html" . }}
{{ end }}
{{ partial "javascript.html" . }}
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1 @@
{"Target":"css/style.css","MediaType":"text/css","Data":{}}

View File

@ -3,6 +3,41 @@
max-width: 860px;
}
.content p, .content li, .content ul {
.content p, .content ol, .content ul {
font-size: 1.3em;
}
.content figure figcaption {
font-size: .875em;
font-style: normal;
color: #6c757d;
}
.item {
display: flex;
margin-bottom: 40px;
}
.brief {
color: #6c757d;
margin: 0.5rem 0;
overflow: hidden;
text-overflow: ellipsis;
max-height: 200px;
display: -webkit-box;
max-width: 600px;
-webkit-line-clamp: 4;
-webkit-box-orient: vertical;
}
.item-thumbnail {
min-width: 150px;
padding-right: 30px;
}
.meta {
font-size: .875rem;
color: #adb5bd;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 228 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

View File

@ -0,0 +1 @@
<?xml version="1.0" ?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable-background="new 0 0 512 512" height="50px" id="Layer_1" version="1.1" viewBox="0 0 512 512" width="512px" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g><path clip-rule="evenodd" d="M296.133,354.174c49.885-5.891,102.942-24.029,102.942-110.192 c0-24.49-8.624-44.448-22.67-59.869c2.266-5.89,9.515-28.114-2.734-58.947c0,0-18.139-5.898-60.759,22.669 c-18.139-4.983-38.09-8.163-56.682-8.163c-19.053,0-39.011,3.18-56.697,8.163c-43.082-28.567-61.22-22.669-61.22-22.669 c-12.241,30.833-4.983,53.057-2.718,58.947c-14.061,15.42-22.677,35.379-22.677,59.869c0,86.163,53.057,104.301,102.942,110.192 c-6.344,5.452-12.241,15.873-14.507,30.387c-12.702,5.438-45.808,15.873-65.758-18.592c0,0-11.795-21.31-34.012-22.669 c0,0-22.224-0.453-1.813,13.592c0,0,14.96,6.812,24.943,32.653c0,0,13.6,43.089,76.179,29.48v38.543 c0,5.906-4.53,12.702-15.865,10.89C96.139,438.977,32.2,354.626,32.2,255.77c0-123.807,100.216-224.022,224.03-224.022 c123.347,0,224.023,100.216,223.57,224.022c0,98.856-63.946,182.754-152.828,212.688c-11.342,2.266-15.873-4.53-15.873-10.89 V395.45C311.1,374.577,304.288,360.985,296.133,354.174L296.133,354.174z M512,256.23C512,114.73,397.263,0,256.23,0 C114.73,0,0,114.73,0,256.23C0,397.263,114.73,512,256.23,512C397.263,512,512,397.263,512,256.23L512,256.23z" fill="#0D2636" fill-rule="evenodd"/></g></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" width="360" height="360" viewBox="-125 217 360 360" xml:space="preserve">
<path style="fill:#32322A" d="M39.2,391.3c-4.2,0.6-7.1,4.4-6.5,8.5c0.4,3,2.6,5.5,5.5,6.3
c0,0,18.5,6.1,50,8.7c25.3,2.1,54-1.8,54-1.8c4.2-0.1,7.5-3.6,7.4-7.8c-0.1-4.2-3.6-7.5-7.8-7.4c-0.5,0-1,0.1-1.5,0.2
c0,0-28.1,3.5-50.9,1.6c-30.1-2.4-46.5-7.9-46.5-7.9C41.7,391.3,40.4,391.1,39.2,391.3z M39.2,353.6c-4.2,0.6-7.1,4.4-6.5,8.5
c0.4,3,2.6,5.5,5.5,6.3c0,0,18.5,6.1,50,8.7c25.3,2.1,54-1.8,54-1.8c4.2-0.1,7.5-3.6,7.4-7.8c-0.1-4.2-3.6-7.5-7.8-7.4
c-0.5,0-1,0.1-1.5,0.2c0,0-28.1,3.5-50.9,1.6c-30.1-2.4-46.5-7.9-46.5-7.9C41.7,353.6,40.4,353.4,39.2,353.6z M39.2,315.9
c-4.2,0.6-7.1,4.4-6.5,8.5c0.4,3,2.6,5.5,5.5,6.3c0,0,18.5,6.1,50,8.7c25.3,2.1,54-1.8,54-1.8c4.2-0.1,7.5-3.6,7.4-7.8
c-0.1-4.2-3.6-7.5-7.8-7.4c-0.5,0-1,0.1-1.5,0.2c0,0-28.1,3.5-50.9,1.6c-30.1-2.4-46.5-7.9-46.5-7.9
C41.7,315.9,40.4,315.8,39.2,315.9z M39.2,278.3c-4.2,0.6-7.1,4.4-6.5,8.5c0.4,3,2.6,5.5,5.5,6.3c0,0,18.5,6.1,50,8.7
c25.3,2.1,54-1.8,54-1.8c4.2-0.1,7.5-3.6,7.4-7.8c-0.1-4.2-3.6-7.5-7.8-7.4c-0.5,0-1,0.1-1.5,0.2c0,0-28.1,3.5-50.9,1.6
c-30.1-2.4-46.5-7.9-46.5-7.9C41.7,278.2,40.4,278.1,39.2,278.3z M-13.6,238.5c-39.6,0.3-54.3,12.5-54.3,12.5v295.7
c0,0,14.4-12.4,60.8-10.5s55.9,18.2,112.9,19.3s71.3-8.8,71.3-8.8l0.8-301.4c0,0-25.6,7.3-75.6,7.7c-49.9,0.4-61.9-12.7-107.7-14.2
C-8.2,238.6-10.9,238.5-13.6,238.5z M19.5,257.8c0,0,24,7.9,68.3,10.1c37.5,1.9,75-3.7,75-3.7v267.9c0,0-19,10-66.5,6.6
C59.5,536.1,19,522.1,19,522.1L19.5,257.8z M-3.6,264.8c4.2,0,7.7,3.4,7.7,7.7c0,4.2-3.4,7.7-7.7,7.7c0,0-12.4,0.1-20,0.8
c-12.7,1.3-21.4,5.9-21.4,5.9c-3.7,2-8.4,0.5-10.3-3.2c-2-3.7-0.5-8.4,3.2-10.3c0,0,0,0,0,0c0,0,11.3-6,27-7.5
C-16,264.9-3.6,264.8-3.6,264.8z M-11,302.6c4.2-0.1,7.4,0,7.4,0c4.2,0.5,7.2,4.3,6.7,8.5c-0.4,3.5-3.2,6.3-6.7,6.7
c0,0-12.4,0.1-20,0.8c-12.7,1.3-21.4,5.9-21.4,5.9c-3.7,2-8.4,0.5-10.3-3.2c-2-3.7-0.5-8.4,3.2-10.3c0,0,11.3-6,27-7.5
C-20.5,302.9-15.2,302.7-11,302.6z M-3.6,340.2c4.2,0,7.7,3.4,7.7,7.7s-3.4,7.7-7.7,7.7c0,0-12.4-0.1-20,0.7
c-12.7,1.3-21.4,5.9-21.4,5.9c-3.7,2-8.4,0.5-10.3-3.2c-2-3.7-0.5-8.4,3.2-10.3c0,0,11.3-6,27-7.5C-16,340.1-3.6,340.2-3.6,340.2z"
/>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB