Integrate "Elements templates" into development lifecycle

Element templates are a promising new feature that has a lot potential, especially for repetitive tasks like audit-writing and message sending (correlation). But …

The json template definition is part of my software development lifecycle. It is bound to certain classnames, it might get changed (extended) over time.

What I am missing before I feel safe to introduce this to my team is the ability to centrally develop, version and distribute the templates. So far, at least from what I got, my only option is to manually pass the file around and suggest to all my colleages that they put it in their modeller/resources. One more manual step in the “Ramp up” guide for new developers. And even then: When the file changes, we all must ensure that we are using the latest version, otherwise we get in trouble.

Do you already have ideas how to address this problem that we can discuss here? Reading the config from an url (which could be a “latest” redirect) might be a good first idea. But what if that url needs authorization (nexus/stash/…)?

We are currently investigating how to proceed with element templates. You feedback is highly appreciated and helps us a lot!

I personally have a few thoughts on the stuff you mentioned. The stuff I’d go for is marked with a :sunny:.

Distribution

This is a crucial topic if we would like users to scale out element templates on a larger scale. It can be solved by:

  • storing templates in a remote repository (i.e. web modeler)
  • storing templates local to the diagrams (in a workspace the modeler needs to be aware of) :sunny:

The second thing is probably much more convenient, because it allows element templates to be first-class citizens during development and to be checked in using the version control system of your choice.

Versioning

There is quite a spectrum of things we could implement or not implement here.

  • Most simple case: developers handle version upgrades themselves :sunny:
  • Advanced case: the modeler has a notion of version, warns the user that a new version of the template is available, asks him to populate new / missing fields, …

Any opinion on my points?

I think both versioning and distribution are relatively simple if you use a “repository” of some kind (I gues sthats what you call “workspace”), so I could just load my templates from an url (that points to latest).

The more complex issue is how to keep code and templates in sync. Consider I provide a Mail-Send-Task as an extension (could be company wide, could be world-wide, why not have templates and delegates as community extensions (or enterprise-add-ons).
How do we make sure, that the template attributes match the delegate-implementation attributes? Imho thats only possible if we treat template and implementaion as one software artefact.

So the interesting question is: How do you currently distribute the implementation? For this a large number of options exist.

It would be great to have an option to specify which templates I want to use in the modeler. A first version could be to specify a file-path as startup parameter to the modeler.

I don’t think the modeler should integrate a “versioning” for templates or a “binding” of workflows or code with templates. This will quickly get too complicated IMHO.

How about putting the entire modeler including the templates into a Git repository? That way also updates of a modeler could easily be distributed.

Like the idea … maybe even better: have the modeler-zip in the maven repo, release the templates to the repo and use maven-assembly to build a team-specific modeler. Always a good idea to have something scripted instead of a manually created “byte-ball”.

But how should the upgrade path for these teams look like? Someone decides they get new templates, meaning everyone downloads the new version of the modeler?

I get your point … of course it would be best to connect to some kind of repo … but a distributed fully configured modeler is a “quick win” that we can start using now …

1 Like

We implemented exactly that and now our JSONs are developed centrally and distributed via a GitLab project called “element-templates” that is mapped to the /resources folder of the Camunda Modeler. Now JSONs written by the developers are being pulled by analysts (via GitKraken) directly into the Modeler folder.

2 Likes