camundity/phpzeebe

PHP客户端,用于Zeebe工作流引擎(https://zeebe.io)

8.0.4 2022-08-12 10:24 UTC

This package is not auto-updated.

Last update: 2024-09-21 00:46:10 UTC


README

Camunda 8引擎的客户端,Zeebe (https://zeebe.io) - 用于微服务编排的工作流引擎。

此客户端基于从PHP文件生成Zeebe网关protobuf定义

构建针对其他目标版本的客户端。

您可以通过更改Makefile中的版本号来修改Zeebe的目标版本。

然后您可以运行它

make build-client

使用方法

Camunda 8由Zeebe引擎(gRPC)、Tasklist(GraphQL)、Operate(Rest)和Optimize(Rest)组成。在一个自管理的集群中,您还会有其他一些组件(Identity、Keycloak和Elastic)。此客户端的目的是专门通过gRPC与Zeebe通信。它仍然是一个alpha版本,一些主要功能仍然缺失(欢迎贡献)。

最常见的用例是实例化流程、发送消息并处理服务任务。我已经构建了一个Laravel项目来演示如何实现,但您也可以考虑使用微服务方法。

构建工作进程

use Camundity\PhpZeebe\ZeebeWorker;

class SelectAssigneeWorker extends ZeebeWorker {
	
	public function __construct($zeebeClient) {
		parent::__construct($zeebeClient);
		$this->setType("selectAssignee");
    }
	
	
	public function executeTask($activatedJob){
		$variables = $this->getVariables($activatedJob);
		var_dump($variables);
		$variables["assignee1"] = "toto";
		$this->complete($activatedJob, $variables);
	}
}

创建客户端并使用它

require_once __DIR__ . '/vendor/autoload.php';
require_once('SelectAssigneeWorker.php');
require_once('MailWorker.php');
use Camundity\PhpZeebe\ZeebeClient;

$client = new ZeebeClient("XXX");
$client->saasAuth("XXX", "XXX");

$client->deployProcess("camunda-process.bpmn");

$client->runInstance("camunda-process2","latest", ["var1"=>"something"]);
$client->publishMessage("messageName","correlationKey", ["var2"=>"someOtherValue"]);

$worker2 = new MailWorker($client);
$worker2->work();
$worker = new SelectAssigneeWorker($client);
$worker->workLoop(); //blocking thread

Laravel示例

在Laravel中的快速使用示例:https://github.com/chDame/phpzeebe-laravel-example 工作进程作为作业执行。