Skip to content

orlandocavassani/no-low-code

Repository files navigation

No/Low-Code Engine

Engine de processamento de workflows baseado em JSON, desenvolvida em PHP 8.4 com FrankenPHP.

Aproveitei o desenvolvimento para me atualizar sobre o PHP 8.4 e testar o FrankenPHP, avaliando a performance da engine. Por isso, não utilizei nenhum framework.

Executando o projeto localmente

Pré-requisito: ter o Docker instalado.

  1. Clone o repositório.

  2. Execute o comando na raiz do projeto.

docker compose up -d
  1. Instale as dependências do projeto
docker compose exec php composer install

Pronto! O projeto estará disponível em http://localhost.

Steps disponíveis

  • http_in: Cria um novo endpoint HTTP.
  • data_json: Armazena dados que poderão ser utilizados durante o processamento do workflow.
  • number_divide: Divide dois números.
  • number_multiply: Multiplica dois números.
  • filter: Filtra uma lista de acordo com uma condição.
  • variable_assignment: Atribui um valor a uma variável.
  • http_out: Retorna a resposta final como JSON via HTTP.

Impelementando um novo step

Para implementar um novo step, basta:

  • Criar uma nova classe no diretório src/Steps e implementar a interface StepInterface.
  • Adicionar a nova classe na constante STEP da classe src\Steps\Parser.

Pronto! Step implementado.

Exemplo de requisição

Faça uma requisição POST para http://localhost/workflow com o seguinte JSON:

{
  "steps": [
    {
      "type": "data_json",
      "data": {
        "number1": 10,
        "number2": 2
      }
    },
    {
      "type": "number_divide",
      "data": {
        "variable": "result",
        "number1": "$.number1",
        "number2": "$.number2"
      }
    },
    {
      "type": "http_out",
      "data": {
        "result": "$.result"
      }
    }
  ]
}

Você receberá a seguinte resposta:

{
  "data": {
    "result": 5
  }
}

Você pode conferir mais exemplos conferindo os testes de integração, em tests/Integration/WorkflowTest.php.

Testes

Para rodar os testes, execute o comando:

docker compose exec php vendor/bin/phpunit

Referência

A engine foi desenvolvida com base em estudo da ferramenta Node-RED.

About

No/low code workflow engine

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published