A fun way to learn Camunda and win a small price

Overview

Camunda-Coding-Challenge

A fun way to learn about Camunda and win a small prize. The coding challenge is designed for the Camunda Code Studio. Results may be submitted from September 21-29, 2021.

Table of Contents

How to win

  • Fork this repo.
  • Complete the challenges. You can do both challenges or just the first one. There are different levels and prizes for your performance.
  • Send us a link to your fork, your address, and your 👕 size to [email protected] with the subject: "Camunda Code Studio Coding Challenge" so we can mail you your prize!

Prerequisites

  • Make sure you have Java installed and you use a version below 15. Check your version of Java in the terminal with the following command: java -version
  • Install Camunda Modeler on your machine.
  • Fork the project and open it in your IDE.

🎉 You are ready to hack!

The challenge

Challenge 1: Get the right order of the process

Get the right chronological order of the movie Pulp Fiction. Take the folllowing steps:

  1. Inspect the project:
    project structure

  2. Navigate to src/main/resources and open process.bpmn in Camunda Modeler.

You will see a process similar to this one:

project structure

  1. Below the connected process with sequence flows, gateways, and events, note the tasks that are unconnected. The tasks form the story of the movie Pulp Fiction. Drag and drop the events in the correct chronological order on the sequence flow.

📌 Note: Make sure to save your model :)

Challenge 2: Correct the variables

To get the correct story plot, you must change some of the variables in the task:

Script Task "Royal and Cheese conversation":
Ensure the variable lastTravel is set to Europe. To do so, select the script task and open it in Camunda Modeler on the right-hand side via the Property panel. Inspect the inline script.

Service Task: "Prepare To Go Out With Mia":
This service task is implemented as a delegate. Go into your IDE and look in the path: src/main/java/camunda.example.workflow for the PrepareToGoOutDelegate class. Change the class the variable drug to heroin.

Evaluation of your results

  • Challenge 1: You got the correct or close to correct order. The BPMN tasks are connected on the sequence flow:
    We will send you a small prize. 🎁
  • Challenge 1 + 2: You got the correct or close to correct order and changed the variables:
    We will send you a medium prize 🎁 🎁
  • Challenge 1 + 2 without any mistakes. It is possible to start an instance of your process and route your process through the end without runtime errors:
    We will send you a large prize 🎁 🎁 🎁

Run the application (process) - test if your process works

Running the application and starting an instance of the process will give you a hint if you got the right order. If the order is correct, your instance will run through. If the order is not correct, you may potentially get runtime errors due to missing variables.

If you want to try out your solution and run it, start the the application class in the project:

In your IDE

Application class

Right click on the class and select: Run 'Application'

Camunda's Webapplications

Once the application has started, type in your browser:
http://localhost:8080/camunda/app/welcome/default/#!/login

Log in with the credentials:

username: demo    
password: demo   

Start a process instance

Choose the Tasklist application:
project structure

Start the process from there:
project structure

Terminal in your IDE

Observe your Terminal in your IDE and see what will be printed. You should be able to see the story of Pulp Fiction printed in your Terminal based on how you placed the tasks. Hint: Maybe you can identify already with that help if your order is correct.

Runtime Errors

You may get a runtime error due to a missing variable or an expression that cannot be resolved. For example, this may happen if you start the process from Tasklist or if you complete a user task and may look similar to the following:

error message

If this is the case, the order of your process might not be right. Try to fix it and see where the variable that you need for a certain task is initiated.

📌 Note: There are better ways to handle errors in Camunda and normally they are not displayed at the user frontend. If you want to learn more about it, read more about transactions and error handling in Camunda, or watch this tutorial.

Cockpit: Observe the state of your process

In the top right corner of Camunda's webapplications is a house symbol that allows you to switch between the web applications:
project structure

Go to Cockpit. To observe your process instances, select running instances.
cockpit

(Note: If your process instance has ended already, you won't see it anymore. A running process instance is marked with a blue token.)
user task in Cockpit

Tasklist: Claim and complete user tasks from your process

If your process instance stands on a user task, navigate back to Tasklist. Here, you should see an available task:

user task in Tasklist

  1. Claim the task and complete it.
  2. Look at the form. Do you still remember what happens with the golden watch in Pulp Fiction, and if Butch takes it directly with him while escaping?
  3. Complete the task.
You might also like...

An AI companion who is eager to learn and would love to see the world through your eyes. Gedir is always ready to chat when you need an empathetic friend

An AI companion who is eager to learn and would love to see the world through your eyes. Gedir is always ready to chat when you need an empathetic friend

Gedir We are currently developing the core. Ideas, feedback, and contributions to code are all very welcome. An AI companion who is eager to learn and

Sep 3, 2022

this repo is probs gonna die cuz idk very much java but i will update it when i learn how to actually DO SHIT

pastegod.cc shitty rename of zihasz client base rn but as i learn java i will paste-i mean add modules ;) (23/9/2021) why is everyone starring and wat

Dec 9, 2022

Challenge: Learn Object Oriented Programming in Practice

Challenge: Learn Object Oriented Programming in Practice The main objective is to put into practice one of the main tools of OO: ABSTRACTION, ENCAPSUL

Sep 4, 2022

This is some Discord bot I made to help me learn Java. Not very useful yet.

JennyChan This is some Discord bot I made to help me learn Java. Not very useful yet. What it can do so far: Reply to mention List commands Show bot u

Sep 1, 2022

Cadence is a distributed, scalable, durable, and highly available orchestration engine to execute asynchronous long-running business logic in a scalable and resilient way.

Cadence This repo contains the source code of the Cadence server and other tooling including CLI, schema tools, bench and canary. You can implement yo

Jan 4, 2023

Excel utility for Java to read and write data in declarative way.

Excel utility for Java to read and write data in declarative way.

Data Excel Exporter A Java wrapper using Apache POI to read and write Excel file in declarative fashion. Installation ExcelUtil is using Apache POI ve

Oct 16, 2022

Android Auto Apps Downloader (AAAD) is an app for Android Phones that downloads popular Android Auto 3rd party apps and installs them in the correct way to have them in Android Auto.

Android Auto Apps Downloader (AAAD) is an app for Android Phones that downloads popular Android Auto 3rd party apps and installs them in the correct way to have them in Android Auto.

Android Auto Apps Downloader (AAAD) is an app for Android Phones that downloads popular Android Auto 3rd party apps and installs them in the correct way to have them in Android Auto.

Jan 2, 2023

Conway's Game Of Life, but made by me in a very inefficient and unpractical way. Still, I am proud!

Conway's Game Of Life, but made by me in a very inefficient and unpractical way. Still, I am proud!

Conway's Game Of Life, but made by me in a very ugly and inefficient way. Still, I am proud! I want to share my appreciation to cellular automata with anyone who comes across this repo.

May 25, 2022

Shitty, yet simple way to get someone's token right at their discord client's startup.

discord-token-stealer Shitty, yet simple discord injector to add a little spice to their discord client Disclaimer: This is for educational purposes o

Sep 26, 2022
Owner
null
Community extension to generate a Java client from the provided Camunda 7 OpenAPI descitpion and also warp it into Spring Boot

Camunda Engine OpenAPI REST Client Java and Spring Boot This community extension is a convenience wrapper around the generated Java client from the Ca

Camunda Community Hub 29 Dec 28, 2022
An example to show how you could use clean architecture and DDD elements with Camunda.

Camunda DDD and Clean Architecture An example to show how you could use clean architecture and DDD and their advantages with Camunda. I also wrote a b

Luc Weinbrecht 10 Dec 15, 2022
This is an example of how conditional events can be triggered in Camunda using a simple spring boot project

Camunda Conditional Events Example This example is a Spring Boot Application using Camunda. In this example i'll show a variety of ways that BPMN's Co

Niall 5 Sep 30, 2021
SpringBoot SpringSecurity Jpa mybatis-plus websocket Redis camunda Vue3 Vite ant-design VbenAdmin vxe-table bpmn.js

SpringBoot SpringSecurity Jpa mybatis-plus websocket Redis camunda Vue3 Vite ant-design VbenAdmin vxe-table bpmn.js

zsvg 16 Dec 13, 2022
A fun mini project in Java. Uses Interface, Inheritance, and other OOP concepts

Sequences---Arithmetic-and-Geometric A fun mini project in Java. Uses Interface, Sorting, Inheritance, and other OOP concepts About this project: This

Urjit Aich 2 Feb 18, 2022
Fun little program to generate worlds in Excel

Basic world generation for Excel! How to use (For windows): Download the latest release from Releases run java -jar WorldGenExcelVersion.jar "path_to_

Steven Zhu 1 Feb 12, 2022
A Minecraft Mod Loader built as a fun project.

BrassLoader What is BrassLoader? BrassLoader is The next generation of Minecraft Mod Loaders, It primarly loads mods made using our very own BrassAPI!

null 10 Aug 7, 2022
In this course, we will learn how to build a complete full-stack web application using Spring boot as backend and React (React Hooks) as frontend

In this course, we will learn how to build a complete full-stack web application using Spring boot as backend and React (React Hooks) as frontend. We will use MySQL database to store and retrieve the data.

Ramesh Fadatare 43 Dec 22, 2022
A sideproject to learn more about object-oriented programming, design patterns and Java meanwhile studying an OOP-course.

MyBank Description A console application that simulates a bank with very simple functions. Potential story could be an employee using this application

null 2 Mar 23, 2022
Hi, Spring fans! We're going to learn how to build Kubernetes operators, CRDs, and controllers

Bootiful Kubernetes Operators Make sure youre in the default namespace of a Kubernetes cluster. Not sure fi this matters but I am, so it might help. T

Josh Long 14 Dec 29, 2022