承接 azim-ut/workflowapi 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

azim-ut/workflowapi

最新稳定版本:0.0.4

Composer 安装命令:

composer require azim-ut/workflowapi

包简介

Base workflow API library

README 文档

README

Workflow API — это лёгкий и расширяемый инструмент для описания и исполнения бизнес-логики на основе JSON-конфигов.
Плагин позволяет вынести алгоритмы в декларативные схемы (например, workflow.json), а исполнение делегировать PHP-коду, сохраняя чистоту архитектуры.

Возможности

  • Декларативное описание логики в JSON:
    • payload — входные данные, неизменные. Содержимое payload доступно только для чтения, payload можно передовать в качестве параметров в commands;
    • state — внутренние параметры, в state можно сохранять результаты исполнения commands или передавать в commands в качестве параметров на чтение/запись;
    • commands — зарегистрированные команды (методы, функции);
    • route — последовательность блоков (ACTION, IF_ELSE, SWITCH, LOG и др.);
  • Поддержка переменных ${payload.*}, ${state.*};
  • Выполнение кастомных команд, зарегистрированных через setCommand();
  • Лёгкая интеграция с сервисами и библиотеками;
  • Логирование шагов исполнения.

Установка

composer require azim-ut/workflow-api

Пример использования

$textService = new TextService();

$config = WorkflowService::builder()
    ->fromJsonFile(__DIR__ . '/conf/workflow.json')
    ->setCommand("getTextLength", [$textService, "getTextLength"])
    ->setCommand("matchPattern", [$textService, "matchAny"])
    ->setCommand("setStatus", [$textService, "setStatus"])
    ->build();

$payload = new stdClass();
$payload->text = "Hello world!";
$payload->patterns = ["ello", "earth"];

$result = WorkflowService::executor()->run($config, $payload);

Пример workflow.json

{
  "state": {"size": 0, "match": false, "status": "OPEN"},
  "commands": [
    "getTextLength",
    "matchPattern",
    "setStatus"
  ],
  "route": [
    {
      "id": 1,
      "type": "COMMAND",
      "command": "getTextLength ${payload.text} welcomeBtn closeBtn",
      "state": "size",
      "next": 2
    },
    {
      "id": 2,
      "type": "IF_ELSE",
      "condition": "${state.size} < 10",
      "yes": 6,
      "no": 3
    },
    {
      "id": 3,
      "type": "COMMAND",
      "command": "matchPattern ${payload.text} ${payload.patterns}",
      "state": "match",
      "next": 4
    },
    {
      "id": 4,
      "type": "IF_ELSE",
      "condition": "${state.match}",
      "yes": 6,
      "no": 7
    },

    {
      "id": 6,
      "type": "STATE",
      "target": "status",
      "val": "CLOSED",
      "next": 7
    },
    {
      "id": 7,
      "type": "COMMAND",
      "command": "setStatus ${payload.text} ${payload.status}",
      "next": 0
    }
  ],
  "log": []
}

统计信息

  • 总下载量: 11
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: Apache-2.0
  • 更新时间: 2025-09-08

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固