application-manager-tools/am-driver
Composer 安装命令:
composer require application-manager-tools/am-driver
包简介
Symfony bundle and framework-agnostic core to integrate managed applications with Application Manager (orchestration, consumption, operational state).
README 文档
README
Symfony bundle and framework-agnostic PHP library to integrate managed applications with Application Manager (orchestration commands, consumption webhooks, operational state push).
Specification: cahier des charges connecteur AM.
OpenAPI 3.1.1 (récepteur + client AM + kit Swagger UI) : docs/openapi/README.md.
Manuel d’intégration (intégrateurs humains) : docs/MANUEL-INTEGRATION-INTEGRATEURS.md.
Intégration technique : docs/INTEGRATION.md. Même app Symfony qu’AM (dogfooding) : docs/INTEGRATION-SAME-APP.md. Écarts AM : docs/ECARTS-AM.md.
Install
composer require application-manager-tools/am-driver
PHP ^7.4, symfony/http-client and symfony/console ^5.4|^6.4|^7.0|^8.0.
Développement du bundle (Docker)
Comme le back ApplicationManager : ./bin/php exécute PHP dans le conteneur Compose (repli sur le PHP hôte si Docker est absent).
./install # composer install + répertoires var/ ./build # image PHP (optionnel si BUILD_WHEN_INSTALL=true dans .env.local) ./bin/php -v ./bin/composer install ./bin/phpunit ./codecheck # php-cs-fixer + phpstan + phpunit
Swagger UI (spec récepteur, port AM_DRIVER_SWAGGER_PORT, défaut 18098) :
docker compose up -d swagger-ui
Réceptacle HTTP (port hôte configurable via RECEPTACLE_PORT dans .env, défaut 18099) :
docker compose run --rm -p ${RECEPTACLE_PORT:-18099}:8099 php \
php bin/am-driver serve --host=0.0.0.0 --port=8099 --data-dir=var/am-driver/receptacle
Variables Docker : .env (versionné) et .env.local (surcharges locales, non versionné).
Symfony quickstart (≈10 minutes)
- Register the bundle (Flex discovers it automatically, or):
// config/bundles.php ApplicationManagerTools\AmDriver\Bridge\Symfony\AmDriverBundle::class => ['all' => true],
- Configure (see
.env.local.dist):
# config/packages/am_driver.yaml am_driver: am_base_url: '%env(AM_DRIVER_AM_BASE_URL)%' source: '%env(AM_DRIVER_SOURCE)%' route_prefix: am # → /am/orchestration/commands, /am/instance-operational-state consumption_webhook_token: '%env(AM_DRIVER_CONSUMPTION_WEBHOOK_TOKEN)%' orchestration_callback_token: '%env(AM_DRIVER_ORCHESTRATION_CALLBACK_TOKEN)%' orchestration_command_token: '%env(AM_DRIVER_ORCHESTRATION_COMMAND_TOKEN)%' operational_state_token: '%env(AM_DRIVER_OPERATIONAL_STATE_TOKEN)%'
- Import routes:
# config/routes/am_driver.yaml am_driver: resource: '@AmDriverBundle/Resources/config/routes.yaml'
- Implement the three handlers (your product logic only):
use ApplicationManagerTools\AmDriver\Core\Contract\CreateInstanceHandlerInterface; use ApplicationManagerTools\AmDriver\Core\Dto\CreateInstanceHandlerResult; use ApplicationManagerTools\AmDriver\Core\Dto\OrchestrationCommand; final class MyCreateInstanceHandler implements CreateInstanceHandlerInterface { public function handle(OrchestrationCommand $command): CreateInstanceHandlerResult { // provision tenant / DB / storage return CreateInstanceHandlerResult::fromArray([ 'startedAt' => (new \DateTimeImmutable())->format(\DATE_ATOM), // required 'integrationInstanceId' => $tenantId, // required 'location' => 'https://tenant.example/login', // free-form: any other key is relayed as-is to AM ]); } }
CreateInstanceHandlerResult::fromArray() requires two non-empty keys: startedAt and
integrationInstanceId. Every other key you provide (location, ...) is opaque to the bundle: it
is relayed verbatim in the JSON body of the callback POSTed to Application Manager.
Register services with Symfony autoconfigure, or explicit tags in services.yaml.
- Optional: push consumption from your code:
$publisher->pushResourceConsumption($tenantId, 'proof_storage_mo');
source values (stable)
| Product | source |
|---|---|
| Captain Learning | captain-learning |
| Accident Prediction | accident-prediction |
| Application Manager (self-managed) | application-manager |
Core-only (no bundle)
Use classes under ApplicationManagerTools\AmDriver\Core\ and wire AmApiClient, OrchestrationCommandProcessor, ResourceSnapshotManager manually.
CLI (local development)
vendor/bin/am-driver serve --port=8099 vendor/bin/am-driver orchestration:simulate create vendor/bin/am-driver state:push-sample vendor/bin/am-driver consumption:push --tenant-id=... --resource-key=seats --value=12 --am-url=... --token=...
E2E loop (receptacle)
Terminal 1:
vendor/bin/am-driver serve --port=8099 --token-command=dev-command-token --token-state=dev-state-token
Terminal 2:
vendor/bin/am-driver orchestration:simulate create --token=dev-command-token vendor/bin/am-driver state:push-sample --token=dev-state-token
Data is persisted under /tmp/am-driver-receptacle by default (--data-dir).
License
MIT
application-manager-tools/am-driver 适用场景与选型建议
application-manager-tools/am-driver 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 163 次下载、GitHub Stars 达 0, 最近一次更新时间为 2026 年 05 月 15 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「symfony-bundle」 「orchestration」 「application-manager」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 application-manager-tools/am-driver 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 application-manager-tools/am-driver 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 application-manager-tools/am-driver 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
DX-first workflow / saga / compensation engine for Laravel with native dry-run, reverse-order compensation, business impact tracking, opt-in persistence, and audit events.
Symfony bundle for the Rekapager library
Symfony bundle for Cloudflare integration: trusted proxies, real client IP detection, forwarded headers.
A very minimal Mailchimp integration for Symfony
PHP microservice orchestration pattern library.
Framework-neutral PHP client and worker SDK for the Durable Workflow server
统计信息
- 总下载量: 163
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 30
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-05-15