Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Catalog · How the catalog works
Anything · Lazarus or Delphi
Random projectRandom project

DelphiZeeBeClient

Delphi client for ZeeBe gRPC interface

View on GitHub

Member rating

No ratings yet.

Sign in to rate this project.

README

DelphiZeeBeClient

Delphi client for ZeeBe (https://docs.zeebe.io/index.htmll - CLI and gRPC interface.

Dependencies

The client interface is based on DelphiGRPC (see: https://github.com/ultraware/DelphiGrpcc which in turn uses the Grijjy.Http library.
Remark:
In order to read BPMN-files longer than BUFFER_SIZE = 32768 Grijjy.Http.pas needs a fix in function TThreadSafeBuffer.Read around line #684:

delphi
//        Move(FBuffer[Size], FBuffer[0], FSize - ALength); BUG: read behind buffer!
        Move(FBuffer[ALength], FBuffer[0], FSize - ALength); {PMM 29.04.2020: here is the next portion!}

The initial code for units "gateway_protocol.Client" and "gateway_protocol.Proto.pas" where generated using the DelphiGrpc Tool "ProtoBufGenerator.exe". However, the generated code needs some modifications:

  • Int64 has to be changed to UInt64
  • empty record needs to be removed (TTopologyRequest so far)
  • Delphi reserved identifiers (FILE, type) have to be renamed

See the header part of the units mentioned for more details.

Examples

The reository includes three test projects. The first two are very closely related to the test workflow "order-process.bpmn" used in the ZeeBe-tutorial

  • ZeeBeTestCLI: Uses the command line interface to communicate to ZeeBe
  • ZeeBeTestClient: Uses the gRPC interface directly.
  • ZeeBeTestgRPC: Uses the gRPC interface via the uZeeBeClient.pas unit. This example uses an more generic approach build arrount the gRPC-Interface encapsulated in the uZeeBeClient.pas unit.

Status

Although this client has been used successfully in an proof-of-concept project, the code should not be considered as production ready yet. The demo projects are made available to show it works with the DelphiGRPC Lib (which in turn isn't production ready yet) and to play around with ZeeBe workflow modells.