Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use Zeebe to manage RPA script #8

Open
29 tasks
marstamm opened this issue Oct 28, 2024 · 0 comments
Open
29 tasks

Use Zeebe to manage RPA script #8

marstamm opened this issue Oct 28, 2024 · 0 comments
Milestone

Comments

@marstamm
Copy link
Member

marstamm commented Oct 28, 2024

To make RPA a first class citizen of Camunda, RPA files should be deployed to Zeebe and linked from the process. Version resolution should be done by Zeebe. RPA files should be part of Process Applications.

For this, we will annotate the RPA files with metadata, such as version tags. The file structure can be a JSON file.

{
  "id": "robot_123",
  "name": "my robot",
  "versionTag": "v123",
  "RPARuntimeVersion": "1.0"
  "CamundaVersion": "8.8",
  "robotScript": "<content of original .robot file"
}

As the file ending .robot is already taken for "normal" robotframework scripts, we should consider using another file ending, like .rpa.

On a Service Task, a robotFile can be linked using a new extension element:

<bpmn:serviceTask>
  <extensionElements>
    <linkedResource name="robotFile" resourceId="=foo" versionBinding="versionTag" versionStrategy="latest" />
  </extensionElemnts>
</bpmn:serviceTask>

Zeebe will resolve the resource to a resource key. With the key, the RPA runtime can then fetch the resource directly from zeebe. This allows us to cache results for certain keys and save on bandwidth and Zeebe resources for resource lookup.

For this Approach, we need to following changes:

Zeebe

  • Deployment phase - Creating a RPA resource on Zeebe
    • (validation) - can be skipped for initial version
    • versioning
    • persistence
    • caching
  • Expanding the Model API - This allows us to reference additional resources from a Service Task, using an extension element
    • Process transformer
  • Link resource on task activation
    • evaluate expressions (resource id)
      - raise incident if failed
    • determine resource key by id and version binding
    • provide resource key along with job
      - custom headers
      - or as new job field
  • Get API for retrieving the resource body, implemented as command:

Modeling

  • BPMN
    • Extend Moddle for new extension element
    • Allow Element Templates to template linked resource extensions
    • (add configuration option to properties panel)
  • RPA
    • Add Versioning options to RPA file
    • Use+integrate Deploy&Run testing strategy
      • Decide: How to get debug info?
    • Deploy with Process Applications
    • Deploy standalone

RPA Runtime

  • recognize new Job field or custom header
  • fetch resource by key (http client)
  • resource caching
  • (stretch) abstraction for decorating job with resource (edited)
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

No branches or pull requests

1 participant