event-engine / php-code-generator-cody
Cody驱动的Event Engine PHP代码生成器
Requires
- php: ^7.4 || ^8.0
- ext-json: *
- event-engine/php-code-generator-event-engine-ast: master
- event-engine/php-inspectio-cody: dev-master
- event-engine/php-inspectio-graph-cody: dev-master
- fig/http-message-util: ^1.1
- laminas/laminas-filter: ^2.9
- nikic/php-parser: ^v4.10.3
- open-code-modeling/json-schema-to-php-ast: ^0.5.3
- open-code-modeling/php-code-ast: ^0.12.2
- open-code-modeling/php-code-generator-transformator: ^0.1.0
- open-code-modeling/php-filter: ^0.1.3
- psr/http-message: ^1.0
Requires (Dev)
- league/flysystem: ^2.0
- phpspec/prophecy-phpunit: ^2.0
- phpstan/phpstan: ^0.12.33
- phpstan/phpstan-strict-rules: ^0.12.4
- phpunit/phpunit: ^9.5.0
- prooph/php-cs-fixer-config: ^v0.4.0
- roave/security-advisories: dev-master
This package is auto-updated.
Last update: 2024-09-23 22:21:21 UTC
README
Cody驱动的Event Engine PHP代码生成器。
如果你不熟悉Cody的PHP代码生成,请查看PHP Cody教程。
准备
请确保你已经安装了Docker和Docker Compose。
与Event Engine骨架一起使用
以下教程展示了如何将Cody机器人与Event Engine骨架连接并使用,从InspectIO事件映射生成PHP代码。
遵循每个设置步骤非常重要。它需要一个特定的文件夹结构才能正确运行!
- 创建一个新的文件夹(例如,在你的主目录中),其中将包含Event Engine骨架以及编码机器人。
mkdir cody-tutorial
cd cody-tutorial
- 通过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
- 设置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以检查容器是否正在运行。接受自签名证书,你应该会看到一个“它工作”的消息。
- 设置编码机器人
# 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
- 将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
- 准备codyconfig
Cody是您自己的代码生成逻辑的代理。一个中央的codyconfig.php
文件告诉Cody在收到来自InspectIO的任务时该做什么。作为第一步,我们将Context
配置更改为适合Event Engine骨架配置。打开cody-bot/codyconfig.php
并将$context
行替换为以下内容
$context = new Context( 'MyService', 'CodyTutorial', '/service/src' );
- 启动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后端。