Skip to content

First two chapters of getting started added - #738

Open
thomasek wants to merge 1 commit into
mainfrom
docs/getting-started-tutorial
Open

First two chapters of getting started added#738
thomasek wants to merge 1 commit into
mainfrom
docs/getting-started-tutorial

Conversation

@thomasek

@thomasek thomasek commented Jul 27, 2026

Copy link
Copy Markdown
Member

Summary by CodeRabbit

  • New Features

    • Added a reorganized Getting Started tutorial series covering engine setup, BPMN processes, and human-task orchestration.
    • Added step-by-step examples for deploying processes, running workers, managing tasks, and monitoring execution.
    • Expanded client library documentation with updated Go and Java REST/gRPC examples, configuration guidance, and usage recommendations.
  • Documentation

    • Updated links to point directly to the first BPMN process tutorial.
    • Improved BPMN concepts documentation and removed obsolete embedded diagram data.

@coderabbitai

coderabbitai Bot commented Jul 27, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

The Getting Started documentation is reorganized into sequential engine, BPMN process, and human-task tutorials. Client library guidance is rewritten for current REST and gRPC APIs, while BPM concepts links are updated to the new tutorial route.

Changes

Getting Started documentation

Layer / File(s) Summary
Client library reference
docs/static/client-libraries.md
Documents REST and gRPC responsibilities, updated Go and Java examples, configuration, logging, and planned clients.
Engine setup and navigation
docs/tutorials/getting-started/_category_.json, docs/tutorials/getting-started/run-the-engine.mdx, docs/explanation/bpm-concepts.md
Adds the Getting Started category and engine startup chapter, removes the previous embedded diagram comment, and redirects tutorial links.
First BPMN process
docs/tutorials/getting-started/first-bpmn-process.mdx
Adds deployment, instance execution, Java and Go worker, completion, redeployment, cleanup, and next-step instructions.
Human task orchestration
docs/tutorials/getting-started/orchestrate-human-tasks.mdx
Adds instructions for finding, assigning, completing, and rejecting BPMN user tasks through REST, Java, and Go examples.

Estimated code review effort: 3 (Moderate) | ~25 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title matches the main change: adding the initial Getting Started tutorial chapters, though the PR also includes additional docs updates.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch docs/getting-started-tutorial

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🧹 Nitpick comments (1)
docs/static/client-libraries.md (1)

149-153: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick win

Keep the gRPC example on the same version as zenbpm-client-core. The docs example pins grpc-netty-shaded to 1.80.0, while zenbpm-client-core uses 1.78.0. Use a shared ${grpc.version} property or import the gRPC BOM so copy-paste users don’t end up with mixed gRPC artifacts.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/static/client-libraries.md` around lines 149 - 153, Update the gRPC
dependency example in the client library documentation to use the same version
as zenbpm-client-core by referencing a shared ${grpc.version} property or
importing the gRPC BOM instead of pinning grpc-netty-shaded to 1.80.0. Ensure
copy-paste users receive consistent versions across all gRPC artifacts.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/static/client-libraries.md`:
- Around line 291-294: Update the DEBUG logging description in the
client-library documentation to accurately reflect each client’s behavior: REST
DEBUG uses BASIC logging, while gRPC DEBUG logs worker metadata rather than
request/response headers. Keep TRACE documented as exposing full request and
response bodies with its existing production warning.
- Around line 228-230: Update the Java examples in the
CreateProcessInstanceRequest snippets, including the example around
processDefinitionKey and the one near the other referenced section, to replace
Java 9-only Map.of usage with a Java 8-compatible Collections.singletonMap or
HashMap approach. Keep the examples’ existing variables and request construction
behavior unchanged.

In `@docs/tutorials/getting-started/orchestrate-human-tasks.mdx`:
- Around line 72-100: The Java and Go examples in
docs/tutorials/getting-started/orchestrate-human-tasks.mdx at lines 72-100,
123-135, and 159-172 must be self-contained: add shared client/context
initialization and job-key extraction once near the initial getJobs examples,
then reuse those symbols in the assign and complete examples instead of assuming
zenbpm, ctx, restClient, or jobKey already exist. Keep the existing generated
method and DTO names unchanged.

---

Nitpick comments:
In `@docs/static/client-libraries.md`:
- Around line 149-153: Update the gRPC dependency example in the client library
documentation to use the same version as zenbpm-client-core by referencing a
shared ${grpc.version} property or importing the gRPC BOM instead of pinning
grpc-netty-shaded to 1.80.0. Ensure copy-paste users receive consistent versions
across all gRPC artifacts.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: c1ae5ec8-00ba-46b2-8b59-84d7d7f04ede

📥 Commits

Reviewing files that changed from the base of the PR and between 655c711 and f7f67d8.

⛔ Files ignored due to path filters (2)
  • docs/tutorials/assets/images/approval-process.svg is excluded by !**/*.svg
  • docs/tutorials/assets/images/first-bpmn-process.svg is excluded by !**/*.svg
📒 Files selected for processing (7)
  • docs/explanation/bpm-concepts.md
  • docs/static/client-libraries.md
  • docs/tutorials/getting-started.mdx
  • docs/tutorials/getting-started/_category_.json
  • docs/tutorials/getting-started/first-bpmn-process.mdx
  • docs/tutorials/getting-started/orchestrate-human-tasks.mdx
  • docs/tutorials/getting-started/run-the-engine.mdx
💤 Files with no reviewable changes (1)
  • docs/tutorials/getting-started.mdx

Comment on lines 228 to +230
CreateProcessInstanceRequest req = new CreateProcessInstanceRequest()
.processDefinitionKey(123456L)
.variables(vars);
.processDefinitionKey(definitionKey)
.variables(Map.of("orderId", 12345L));

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail
curl -fsSL https://raw.githubusercontent.com/pbinitiative/zenbpm-java-client/main/pom.xml \
  | rg -n '<java.version>'
rg -n 'Map\.of|older Java versions' docs/static/client-libraries.md

Repository: pbinitiative/zenbpm

Length of output: 420


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail
sed -n '216,270p' docs/static/client-libraries.md | cat -n

Repository: pbinitiative/zenbpm

Length of output: 2558


Keep these examples Java 8-compatible (docs/static/client-libraries.md:228-230,259). Map.of requires Java 9, but the client still targets Java 8. Use Collections.singletonMap/HashMap, or scope the examples to Java 9+.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/static/client-libraries.md` around lines 228 - 230, Update the Java
examples in the CreateProcessInstanceRequest snippets, including the example
around processDefinitionKey and the one near the other referenced section, to
replace Java 9-only Map.of usage with a Java 8-compatible
Collections.singletonMap or HashMap approach. Keep the examples’ existing
variables and request construction behavior unchanged.

Comment on lines +291 to +294
Logging verbosity is controlled through standard Spring logging levels, configured **per client** (`org.pbinitiative.zenbpm.rest`, `org.pbinitiative.zenbpm.grpc`):

- `DEBUG` — exposes request/response headers.
- `TRACE` — exposes full request and response **bodies**. **Never use `TRACE` in production**; it can leak sensitive data.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Correct the DEBUG logging description.

The REST client uses BASIC logging at DEBUG and BODY logging only at TRACE; the gRPC manager logs worker metadata rather than request/response headers. The current wording overstates what DEBUG exposes. (raw.githubusercontent.com)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/static/client-libraries.md` around lines 291 - 294, Update the DEBUG
logging description in the client-library documentation to accurately reflect
each client’s behavior: REST DEBUG uses BASIC logging, while gRPC DEBUG logs
worker metadata rather than request/response headers. Keep TRACE documented as
exposing full request and response bodies with its existing production warning.

Comment on lines +72 to +100
```java
// JobApi is generated from the OpenAPI spec; construct it with the ApiClient.
// verify: exact method/param names against the generated JobApi.
JobApi jobApi = new JobApi(zenbpm.getApiClient());
JobPartitionPage jobs = jobApi.getJobs(
/* processInstanceKey */ null,
/* jobType */ "user-task",
/* assignee */ null,
/* state */ "active",
/* page */ 1,
/* size */ 10,
/* sortBy */ null,
/* sortOrder */ null
);
```

</TabItem>
<TabItem value="go" label="Go">

```go
// verify: exact params/struct names against the generated zenclient.
restClient, _ := zenclient.NewClient("http://localhost:8080/v1")
jobType := "user-task"
state := zenclient.JobStateActive
resp, _ := restClient.GetJobs(ctx, &zenclient.GetJobsParams{
JobType: &jobType,
State: &state,
})
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Locate generated API contracts and client implementations.
fd -t f . | rg '(openapi|swagger|JobApi|zenclient|\.proto$)' || true

# Inspect the exact operations and request types documented by the tutorial.
rg -n -C 3 \
  'getJobs|assignJob|completeJob|AssignJob|CompleteJob|GetJobsParams|func .*GetJobs|func .*AssignJob|func .*CompleteJob' \
  . || true

Repository: pbinitiative/zenbpm

Length of output: 50376


🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Inspect the tutorial around the affected snippets for surrounding setup/context.
sed -n '1,220p' docs/tutorials/getting-started/orchestrate-human-tasks.mdx

# Check the generated client signatures and request/response types directly.
rg -n -C 2 'type GetJobsParams|func .*GetJobsWithResponse|func .*GetJobs\(|type AssignJobJSONRequestBody|type CompleteJobJSONRequestBody|func .*AssignJob\(|func .*CompleteJob\(' internal test . || true

# Look for any earlier definitions of the allegedly missing tutorial variables.
rg -n -C 2 'zenbpm|restClient|ctx|jobKey' docs/tutorials/getting-started/orchestrate-human-tasks.mdx || true

Repository: pbinitiative/zenbpm

Length of output: 37609


🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Check whether the tutorial page defines the allegedly missing identifiers elsewhere.
rg -n -C 2 '\bzenbpm\b|\brestClient\b|\bctx\b|\bjobKey\b' docs/tutorials/getting-started/orchestrate-human-tasks.mdx || true

# Inspect the generated Go client method signatures used by the tutorial.
sed -n '1538,1610p' pkg/zenclient/zz_generated.go
sed -n '906,930p' pkg/zenclient/zz_generated.go
sed -n '1218,1230p' pkg/zenclient/zz_generated.go

Repository: pbinitiative/zenbpm

Length of output: 6454


Make the examples self-contained. These snippets still assume zenbpm, ctx, restClient, and jobKey exist; add the shared client/context setup and job-key extraction once, then reuse it in the assign/complete examples. The generated method and DTO names here already match the client.

📍 Affects 1 file
  • docs/tutorials/getting-started/orchestrate-human-tasks.mdx#L72-L100 (this comment)
  • docs/tutorials/getting-started/orchestrate-human-tasks.mdx#L123-L135
  • docs/tutorials/getting-started/orchestrate-human-tasks.mdx#L159-L172
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/tutorials/getting-started/orchestrate-human-tasks.mdx` around lines 72 -
100, The Java and Go examples in
docs/tutorials/getting-started/orchestrate-human-tasks.mdx at lines 72-100,
123-135, and 159-172 must be self-contained: add shared client/context
initialization and job-key extraction once near the initial getJobs examples,
then reuse those symbols in the assign and complete examples instead of assuming
zenbpm, ctx, restClient, or jobKey already exist. Keep the existing generated
method and DTO names unchanged.

@klajmajk klajmajk left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In addition to my comments please check that all the links are relative.

if the links are not relative it will not hold selected version

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please use webmodeler created process.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would drop the border for both the images

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well I would move this one level up and for now drop the tutorials.


## Next steps {#next-steps}

- **Understand the model.** [BPM Concepts](/explanation/bpm-concepts) — definitions, instances, tokens, and the job/worker mechanic in one short read.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this link is broken

- **A realistic process.** The [Commission Payout example](https://github.com/pbinitiative/zenbpm-examples/tree/main/examples/processes/02-commission-payout) adds user tasks and an exclusive gateway.
- **More workers.** [`examples/workers/`](https://github.com/pbinitiative/zenbpm-examples/tree/main/examples/workers) shows several workers in one Go project.
- **The APIs in full.** [REST (OpenAPI)](/static/openapi) and the [gRPC proto](/zenbpm.proto).
- **Engine internals.** [Architecture](/category/architecture).

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would rather link to servicetask page reference/bpmn/supported-elements/activities/tasks/service-task

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants