joeflow


Namejoeflow JSON
Version 1.3.0 PyPI version JSON
download
home_page
SummaryThe lean workflow automation framework for machines with heart.
upload_time2023-08-29 08:31:43
maintainer
docs_urlNone
author
requires_python>=3.9
license
keywords django process automation workflow framework task
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            joeflow
=======

**The lean workflow automation framework for machines with heart.**

.. figure:: docs/img/pexels-photo-1020325.jpeg
   :alt: a hand drawn robot

Joeflow is a free workflow automation framework designed to bring
simplicity to complex workflows. Joeflow written in `Python`_ based on
the world famous `Django`_ web framework.

Here is a little sample of what a workflow written in joeflow may look
like:

.. code-block:: python

    from django.core.mail import send_mail
    from jowflow.models import WorkflowState
    from joeflow import tasks
    from joeflow.workflows import Workflow


    class Shipment(WorkflowState):
        email = models.EmailField(blank=True)
        shipping_address = models.TextField()
        tracking_code = models.TextField()

    class ShippingWorkflow(Shipment, Workflow):
        checkout = tasks.StartView(fields=["shipping_address", "email"])

        ship = tasks.UpdateView(fields=["tracking_code"])

        def has_email(self):
            if self.email:
                return [self.send_tracking_code]

        def send_tracking_code(self):
            send_mail(
                subject="Your tracking code",
                message=self.tracking_code,
                from_email=None,
                recipient_list=[self.email],
            )

        def end(self, task):
            pass

        edges = [
            (checkout, ship),
            (ship, has_email),
            (has_email, send_tracking_code),
            (has_email, end),
            (send_tracking_code, end),
        ]

Design Principles
=================

Common sense is better than convention
--------------------------------------

Joeflow does not follow any academic modeling notation developed by a
poor PhD student who actually never worked a day in their life.
Businesses are already complex which is why Joeflow is rather simple.
There are only two types of tasks – human & machine – as well as edges
to connect them. It’s so simple a toddler (or your CEO) could design a
workflow.

Lean Automation (breaking the rules)
------------------------------------

Things don’t always go according to plan especially when humans are
involved. Even the best workflow can’t cover all possible edge cases.
Joeflow embraces that fact. It allows uses to interrupt a workflow at any
given point and modify it’s current state. All while tracking all
changes. This allows developers to automate the main cases and users
handle manually exceptions. This allows you businesses to ship
prototypes and MVPs of workflows. Improvements can be shipped in
multiple iterations without disrupting the business.

People
------

Joeflow is build with all users in mind. Managers should be able to
develop better workflows. Users should able to interact with the tasks
every single day. And developers should be able to rapidly develop and
test new features.

Free
----

Joeflow is open source and collaboratively developed by industry leaders
in automation and digital innovation.

*Photo by rawpixel.com from Pexels*

.. _Python: https://python.org
.. _Django: https://www.djangoproject.com/


            

Raw data

            {
    "_id": null,
    "home_page": "",
    "name": "joeflow",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": "",
    "keywords": "django,process,automation,workflow,framework,task",
    "author": "",
    "author_email": "Johannes Maron <johannes@maron.family>",
    "download_url": "https://files.pythonhosted.org/packages/38/68/83f00c364aab7ea104569a0ae263784199c7d6eafb7556f8bcab9625c132/joeflow-1.3.0.tar.gz",
    "platform": null,
    "description": "joeflow\n=======\n\n**The lean workflow automation framework for machines with heart.**\n\n.. figure:: docs/img/pexels-photo-1020325.jpeg\n   :alt: a hand drawn robot\n\nJoeflow is a free workflow automation framework designed to bring\nsimplicity to complex workflows. Joeflow written in `Python`_ based on\nthe world famous `Django`_ web framework.\n\nHere is a little sample of what a workflow written in joeflow may look\nlike:\n\n.. code-block:: python\n\n    from django.core.mail import send_mail\n    from jowflow.models import WorkflowState\n    from joeflow import tasks\n    from joeflow.workflows import Workflow\n\n\n    class Shipment(WorkflowState):\n        email = models.EmailField(blank=True)\n        shipping_address = models.TextField()\n        tracking_code = models.TextField()\n\n    class ShippingWorkflow(Shipment, Workflow):\n        checkout = tasks.StartView(fields=[\"shipping_address\", \"email\"])\n\n        ship = tasks.UpdateView(fields=[\"tracking_code\"])\n\n        def has_email(self):\n            if self.email:\n                return [self.send_tracking_code]\n\n        def send_tracking_code(self):\n            send_mail(\n                subject=\"Your tracking code\",\n                message=self.tracking_code,\n                from_email=None,\n                recipient_list=[self.email],\n            )\n\n        def end(self, task):\n            pass\n\n        edges = [\n            (checkout, ship),\n            (ship, has_email),\n            (has_email, send_tracking_code),\n            (has_email, end),\n            (send_tracking_code, end),\n        ]\n\nDesign Principles\n=================\n\nCommon sense is better than convention\n--------------------------------------\n\nJoeflow does not follow any academic modeling notation developed by a\npoor PhD student who actually never worked a day in their life.\nBusinesses are already complex which is why Joeflow is rather simple.\nThere are only two types of tasks \u2013 human & machine \u2013 as well as edges\nto connect them. It\u2019s so simple a toddler (or your CEO) could design a\nworkflow.\n\nLean Automation (breaking the rules)\n------------------------------------\n\nThings don\u2019t always go according to plan especially when humans are\ninvolved. Even the best workflow can\u2019t cover all possible edge cases.\nJoeflow embraces that fact. It allows uses to interrupt a workflow at any\ngiven point and modify it\u2019s current state. All while tracking all\nchanges. This allows developers to automate the main cases and users\nhandle manually exceptions. This allows you businesses to ship\nprototypes and MVPs of workflows. Improvements can be shipped in\nmultiple iterations without disrupting the business.\n\nPeople\n------\n\nJoeflow is build with all users in mind. Managers should be able to\ndevelop better workflows. Users should able to interact with the tasks\nevery single day. And developers should be able to rapidly develop and\ntest new features.\n\nFree\n----\n\nJoeflow is open source and collaboratively developed by industry leaders\nin automation and digital innovation.\n\n*Photo by rawpixel.com from Pexels*\n\n.. _Python: https://python.org\n.. _Django: https://www.djangoproject.com/\n\n",
    "bugtrack_url": null,
    "license": "",
    "summary": "The lean workflow automation framework for machines with heart.",
    "version": "1.3.0",
    "project_urls": {
        "Project-URL": "https://github.com/codingjoe/joeflow"
    },
    "split_keywords": [
        "django",
        "process",
        "automation",
        "workflow",
        "framework",
        "task"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "3bb4b8fe3b74c23c6f363f5cbc70a1b9709e16513ed84a3c0b2e5dd9324d375f",
                "md5": "6116d0bca79b1963b3d81e8e5a657977",
                "sha256": "0e0e5c332da1bb1b0606ffd166504de412b8898d90dfee179d42a89e87ee11e8"
            },
            "downloads": -1,
            "filename": "joeflow-1.3.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "6116d0bca79b1963b3d81e8e5a657977",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.9",
            "size": 22257,
            "upload_time": "2023-08-29T08:31:42",
            "upload_time_iso_8601": "2023-08-29T08:31:42.417240Z",
            "url": "https://files.pythonhosted.org/packages/3b/b4/b8fe3b74c23c6f363f5cbc70a1b9709e16513ed84a3c0b2e5dd9324d375f/joeflow-1.3.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "386883f00c364aab7ea104569a0ae263784199c7d6eafb7556f8bcab9625c132",
                "md5": "96666c4021db766591bad3d6f3e9f1f2",
                "sha256": "83427c3aa567ddba135b7a1daaf660662d22e6f0fc1fe21896ae99232f53b4e9"
            },
            "downloads": -1,
            "filename": "joeflow-1.3.0.tar.gz",
            "has_sig": false,
            "md5_digest": "96666c4021db766591bad3d6f3e9f1f2",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 17786,
            "upload_time": "2023-08-29T08:31:43",
            "upload_time_iso_8601": "2023-08-29T08:31:43.698222Z",
            "url": "https://files.pythonhosted.org/packages/38/68/83f00c364aab7ea104569a0ae263784199c7d6eafb7556f8bcab9625c132/joeflow-1.3.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-08-29 08:31:43",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "codingjoe",
    "github_project": "joeflow",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "joeflow"
}
        
Elapsed time: 0.11403s