event-engine/php-code-generator-cody

Cody驱动的Event Engine PHP代码生成器


README

Cody驱动的Event Engine PHP代码生成器。

如果你不熟悉Cody的PHP代码生成,请查看PHP Cody教程

准备

请确保你已经安装了DockerDocker Compose

与Event Engine骨架一起使用

以下教程展示了如何将Cody机器人与Event Engine骨架连接并使用,从InspectIO事件映射生成PHP代码。

遵循每个设置步骤非常重要。它需要一个特定的文件夹结构才能正确运行!

  1. 创建一个新的文件夹(例如,在你的主目录中),其中将包含Event Engine骨架以及编码机器人。
mkdir cody-tutorial
cd cody-tutorial
  1. 通过Composer安装Event Engine骨架
docker run --rm -it \
    -v $(pwd):/app \
    -u $(id -u ${USER}):$(id -g ${USER}) \
    prooph/composer:7.4 create-project -v \
        --stability dev \
        --remove-vcs \
        event-engine/php-engine-skeleton \
        php-engine-tutorial-demo
  1. 设置Event Engine骨架
cd php-engine-tutorial-demo
sudo chown $(id -u -n):$(id -g -n) . -R
docker-compose up -d
docker-compose run php php scripts/create_event_stream.php

转到https://localhost以检查容器是否正在运行。接受自签名证书,你应该会看到一个“它工作”的消息。

  1. 设置编码机器人
# Change back to root directory cody-tutorial
cd ..

# Install Cody Server using composer
docker run --rm -it \
    -v $(pwd):/app \
    -u $(id -u ${USER}):$(id -g ${USER}) \
    prooph/composer:7.4 create-project -v \
        --stability dev \
        --remove-vcs \
        event-engine/php-code-generator-cody \
        /app/cody-bot

# Change into bot directory and prepare first start
cd cody-bot
cp .env.dist .env # Adjust UID in .env if needed
cp docker-compose.yml.dist docker-compose.yml
cp codyconfig.php.dist codyconfig.php
  1. 将Event Engine骨架挂载到Cody机器人上

Cody服务器(编码机器人)在一个docker容器中运行。为了能够生成源代码,它需要一个对代码仓库的访问权限。在我们的例子中,这是php-engine-tutorial-demo目录。我们可以通过修改位于服务器目录cody-bot中的docker-compose.yml文件来将目录挂载到服务器。文件应如下所示。

version: '2'

services:

  # The actual client application
  iio-cody:
    image: prooph/php:7.4-cli
    volumes:
      - .:/app
      # mount your business application folder to /service
      - ../php-engine-tutorial-demo:/service
    user: ${UID}
    ports:
      - 3311:8080
    command: vendor/bin/php-watcher public/index.php
  1. 准备codyconfig

Cody是您自己的代码生成逻辑的代理。一个中央的codyconfig.php文件告诉Cody在收到来自InspectIO的任务时该做什么。作为第一步,我们将Context配置更改为适合Event Engine骨架配置。打开cody-bot/codyconfig.php并将$context行替换为以下内容

$context = new Context(
    'MyService',
    'CodyTutorial',
    '/service/src'
);
  1. 启动Cody

最后,让我们启动Cody

./dev.sh

请注意:当在Cody机器人源代码中添加或更改内容时,文件监视器将负责重新启动服务器。

InspectIO

InspectIO是一种专门为远程Event Storming设计的建模工具。它配备了团队的实时协作功能(仅在付费版本中可用)。免费版本是一个无后端连接的独立版本。您的工作存储在本地存储中,并可导出。它托管在GitHub Pages上,具有与SaaS版本相同的代码生成功能。

您可以使用InspectIO免费版本并在事件映射上建模构建教程(无需登录)。

创建一个新的“Cody教程”板。您将被重定向到新板。从顶部菜单选择“Cody”以打开Cody控制台。只需在控制台中按ENTER即可连接到我们在上一步中设置的默认Cody服务器。

最后,在控制台中输入"/help",让Cody解释基本功能。

Cody将为您生成以下模板

  • 命令、聚合和领域事件API描述
  • 基于元数据(JSON模式)的命令、聚合和领域事件类及其相应的值对象
  • 命令、相应聚合和相应领域事件之间的粘合代码

仪表盘

仪表盘是Event Engine的管理UI。您可以通过端口号4444访问它:https://localhost:4444。Event Engine框架已预配置了cockpit-php-backend处理器

注意:为了避免CORS问题,仪表盘服务器的Nginx配置已修改,使其也充当仪表盘到后端请求的反向代理。

您可以通过执行内置的HealthCheck查询来验证仪表盘是否可以访问Event Engine后端。

HealthCheck