Simplest Hello World process is not working, here are steps I've made

Hi,

I wanted to create BPMN process, deploy it and trigger in other to get so called “hello world” example in BPMN world. For that I’ve had:

  • downloaded newest Docker for MacBook with macOS 11.6 Big Sur
  • run Camunda with: docker run --name camunda -p 8080:8080 camunda/camunda-bpm-platform:run-latest
  • verified that it is up and running - I can login using demo/demo credentials
  • downloaded Camunda Modeler for Mac
  • created simple process identified by process-hello-world marked as executable which had following flow: start → dummy task → stop
  • deployed it successfully to Camunda (directly from Camunda Modeler via http://localhost:8080/engine-rest end point, which ended with “Deployment succeeded” popup dialog) -
  • verified that I can see process definition in Camunda Cockpit with Definition Key - process-hello-world
  • downloaded PostMan
  • created POST request which is pointing to http://localhost:8080/engine-rest/process-definition/key/process-hello-world/start with {} as json body (no variables for now nor any cookies for auth) and sending it
  • in the Docker console I can see:
    o.g.jersey.server.wadl.WadlFeature : JAXBContext implementation could not be found. WADL feature is disabled.

and no other output.

  • in the Camunda Cockpit there are no instances up and running
  • the Java on Camunda container is in version: 11.0.9

My expectation is to have created instance of my example and get passed successfully that process without need for any further action (since the sole Task is a dummy task without any action).

In future I would like to extend that example with external task and user task, but for now let’s focus on basics.

Any thoughts?

Can you upload your model?
In cockpit you would only see currently running processes if you have a “dummy task” depending on what that is, it’s possible the process is just starting and completing the same thread and so cockpit has nothing to show. What you can do to verify that something has run is to go to the swagger Ui and run a history query.

http://localhost:8080/swaggerui/

1 Like

Wow. You are right! I can see my process in the history by invoking:

http://localhost:8080/swaggerui/#/Historic%20Process%20Instance/getHistoricProcessInstances

In the response I get:

[
  {
    "id": "1530715b-2520-11ec-81e6-0242ac110002",
    "businessKey": null,
    "processDefinitionId": "process-hello-world:1:0665f96a-2520-11ec-81e6-0242ac110002",
    "processDefinitionKey": "process-hello-world",
    "processDefinitionName": "Hello World",
    "processDefinitionVersion": 1,
    "startTime": "2021-10-04T14:33:46.634+0000",
    "endTime": "2021-10-04T14:33:46.660+0000",
    "removalTime": null,
    "durationInMillis": 26,
    "startUserId": null,
    "startActivityId": "StartEvent_1",
    "deleteReason": null,
    "rootProcessInstanceId": "1530715b-2520-11ec-81e6-0242ac110002",
    "superProcessInstanceId": null,
    "superCaseInstanceId": null,
    "caseInstanceId": null,
    "tenantId": null,
    "state": "COMPLETED"
  }
]

Thank you! I’m positively surprised with the quick reaction time and any answer at all! Good job!

Now I’m keep going with extending the process with further scenario but by using Go Lang (Java is already passe - I was joking :wink: actually we have no Java developers on board :wink: ) !

Btw. Is there any tutorial for Zeebe version like it is here: Deploy the Process (3/6) | docs.camunda.org

I’ve heard that Zeebe is language agnostic aimed to be run in cloud, but from newbie perspective it is hard to find any information confirming that. It is not clearly stated in documentation. I’m even not sure if it belongs to Camunda or this is some kind of fork run by other developers.

Cheers,
Alek

1 Like

And here is a process I’ve created so far: diagram_1.bpmn (2.5 KB)

I wanted to publish that with previous post, but forum policy blocked that action, as I’m allowed to post only one link at a time.

I’m delighted to hear that the bar is set so low :laughing:

I’m not so sure that this is far away from the truth :slight_smile:

So - both platforms can be language independent. They can both work on the principal of an external task worker. You can find details about it here:
https://camunda.com/best-practices/invoking-services-from-the-process/#_understanding_and_using_strong_external_tasks_strong

Zeebe is the engine we use for our cloud service (you can also host it yourself) to try out the cloud service go here:
https://accounts.cloud.camunda.io/signup

1 Like

OK. So here is an update from my site. I moved on with my example and what I’ve found when I was doing this tutorial: Add Gateways to the Process (5/6) | docs.camunda.org

My findings:

  • I had Camunda 7.15 up and running from previous post, but that instance doesn’t have form capabilities which you mention in this tutorial (fields doesn’t support data types). I had to update to 7.16. This looks like a major update, because I see that even URL scheme has changed - localhost:8080 - doesn’t work anymore. You should mention that in tutorial.
  • I can’t find swaggerUI anymore, probably due to above it has changed it’s location, to which I cannot get from UI (I was looking in admin page and so on, it should be somewhere, I shouldn’t guess the URL)
  • The Form tab for UserTask looks a bit different in new Camunda Modeler (4.11.0) than it is on your tutorial (btw. the camunda-forms:deployment prefix you suggest is a bit cryptic, is it really required in Form Key?)
  • The sequenceFlow arrows are named in my BPMN just Flow, not sequenceFlow - trivial but might cause some uncertainty for newbies
  • When I started process without providing “approved” value (specified to Boolean type and set to False), I couldn’t pass userTask with “don’t approve” scenario until I checked and unchecked “Approve?” field in my form (I guess doing that operation in form, created the instance of “approve” variable - I guess you have to think about initialising variables with some default value or mention about that in tutorial if such option already exists)

More to come… I keep going :wink:

Here is my updated BPMN.payment-retrival.bpmn (7.0 KB)
payment.form (517 Bytes)

Here are another findings:

  • in dmn modeler, when you hit publish, the field Deployment Name in the form before publishing doesn’t matter, it is better to set Name in General tab of decision table. This name will appear along other decisions in cockpit.

  • the expressions in When column are too narrow. The values you provide are always made as equals to value. It should be any expression like: value in array, lower case(value) is equal (“something”) and so on

  • there is a difference between how you refer to decisions and how you refer to forms in BPMN process, in first this is made by Id of decision, in second by naming convention.

  • there are too many places for naming same concept, you can name business rule task in BPMN process, but you can also give a name to Decision table. We should unify that. I would suggest giving name only to the task in BPMN and ID (or maybe even UUID) to Decision table (or you should introduce general concept like UUID (or ID, and not a key, not a ref and so on) and Alias (or Common Name) - optionally Address which would be consisting of UUID put in path convention if the element was nested.

  • there is a difference how you make form and decision table available. The first is published as attachment to BPMN and the second as independent unit by which you have to refer by ID

  • you should change all the places where you present “null” value, like - Version Tag: null
    to something like - Version Tag: not provided (or n/a or whatever). The tool is suppose to be higher order tool, not a low level programming language.

  • you should get rid of “More” and “Home” dropdown fields at top of Camunda Panel. Nowdays we live in world, where screens are wide enough to keep all the info exposed. It would be less clicking. Especially that currently I have to switch between Cockpit, Tasklist and Admin.

  • when I started process with values to get through the decision table I got:

The process could not be started. :
Cannot instantiate process definition payment-retrival:5:add2d081-2d3a-11ec-b802-0242ac110002: no decision definition deployed with key ‘approve-payment’ and tenant-id ‘null’: decisionDefinition is null

Indeed I don’t have key ‘approve-payment’ as I was setting ID. Second, I have noticed that I can set ID for decision diagram as well as for table, which should I set? I’m attaching my decision table as well as updated BPMN process.

payment-retrival.bpmn (8.6 KB)
approve-payment.dmn (1.7 KB)

  • I see that you tend to design Camunda in a top-down manner. That is why you have so many concepts/names/ids/keys. You should give a try to bottom-up approach. It will require iterative approach to development instead of waterfall. Also put more newbie into testing/reviewing, just as I’m with fresh not biased view. Also try to not deal with values which are not used (“but might be helpful in future”). If given ID is not need, then don’t allow for setting that.

  • I believe already done processes are equally important as still running. I would like to see what was decision/end result for process which has been done and didn’t required user task. It would be nice to click on “Recently accomplished instances” tab in Processes section and see on diagram which “end” event has been chosen (approved or rejected). I shouldn’t go into SwaggerUI.

  • When I call REST API - localhost:8080/engine-rest/history/process-instance - I can read about startActivityId, but I don’t see endActivityId. Which I believe is even more important that start - “I don’t care how you started, it is important how you finished”.

Thanks for all your feedback - it’s really nice to hear about people’s experiences.

This wasn’t changed in version 7.16 so there must be some other reason why the URL doesn’t work.

Assuming you’re running the Camunda Run distro this shouldn’t have changed and i’ve tested it locally and it works as expected for me.

This is true - and a really good point. We’re working on refactoring this as part of a larger redesign of the entire properties panel, so you can expect more consistency as new releases come

I agree, this is something that’s annoyed me for years! It just seems to keep being left in the backlog.

This is indeed a terrible error message - that doesn’t make a lot of sense. We do have some very nice people who are working on making error messages - especally for DMN - better.