Proper workflow: States, Transitions, etc

Workflow should consist of States and Transitions.
States have Transitions. Transitions have Guards (conditions and permissions) and target States.
Transitions can be triggered via a user action (e.g. button) if they have the required permission, or automatically if the condition formula is true.
A Role has Permissions on an entity based on the State of the entity.
Groups can have roles.
Users can have roles, and they can belong to groups (inheriting the roles of the group).


Since we already have some good support on this one from @Chr1sG and @Matt_Blais, and I imagine @rothnic as a dev-focused user in here, I wanted to point out a good post I have often dreamt about becoming reality - this is an older one as a veteran in here I recall from a good while ago:

@mdubakov is showing some real chops when it comes to understanding what it takes to make a powerful board with all you are requesting @jean1 and more. If you’re familiar with TargetProcess, that is one of the best boards/workflow solutions out there.

Let’s hope by supporting this we can move the prioritization of development of more capability in boards!

1 Like

Nice, I’m glad there’s support for this way of thinking :slight_smile:
I just know the TargetProcess name, I’m not familiar with how it works.

I’d like to stress that I’m not thinking about boards in particular though. These are primitives that are fundamental to the content system.

  • Workflow is not tied to boards, all entity access is determined by workflow state.
  • Entities are in multiple Workflows. The default workflow could have e.g. PublicToWorkspace and Private states, where the PublicToWorkspace state grants the CanView permission to the WorkspaceMember role, and the CanDelete permission to the Owner role. (All entities are in this workflow by default.)
  • Permissions are just an extensible list of names. They are checked for upon any entity access, and by formulas e.g. guard conditions.
  • A State grants permissions to roles. The permissions that a user has on an entity is determined by their role.
  • Users or groups can have roles.
  • Users or groups can belong to groups.
  • Roles can be computed (e.g. a user gets the Owner role on entities that they created).
  • A Workflow is a set of States with Transitions between them.

I don’t know if these correspond to the kind of state that shows up on a Kanban board, though it is a logical way to show it. E.g. say we have an App for collaborating on articles, and another for translating articles. The WritingApp has PublicationWorkflow with states Draft, InReview, and Complete. The TranslationApp has TranslationWorkflow with states PendingTranslation and Translated.
The TranslationApp should define a Translatable extension (or interface, or marker …). Any other app could then add this extension to types, e.g. to the Article type (or to a BlogPost type, etc).
The PendingTranslation state could either be entered via user action, or via a guard condition (if PublicationWorkflow->Complete: TranslationWorkflow->PendingTranslation). And items pending translation could then show up in the “Pending translation” column of a board.

I’m aware that really none of the current popular platforms have anything like this complete and flexible a workflow/security model. I think it doesn’t have to be intrusive though, and it unlocks whole application domains.


I’ve actually been chatting with Anton about my needs for permission-driven workflow/states, and he indicated that work on it would be dependent on demand (as is to be expected) so I’m hugely relieved to hear enthusiasm here from others.
Having said that, I also know, from some of the posts that Michael has made, that the community discussions are only a small fraction of the sources that go into deciding priorities. I guess we’ve got to hope that there are also people asking for this through other feedback channels.


I think Jira Next-gen projects (now renamed to ‘team-managed’ projects) have nearly exactly what you were originally asking for:

1 Like

It looks like Jira supports fairly sophisticated workflows, but does it enforce permissions according to role (and thereby to users/groups)?
I don’t have a great deal of experience with Jira and I don’t want to sign up just to answer this :wink:

Yes, that is one of the rules you can apply:

1 Like

There are a few basics in Jira, like workflows, and conversion of Entity I talked about here that I really hope Fibery can come close to duplicating. Right now though, both the workflow extension, and converting between types, is a long way from what Jira has. And these are two huge pieces needed for running world-class software development in Fibery.


1 Like