0.0.1 • Published 4 years ago

fvi-roboman-server v0.0.1

Weekly downloads
-
License
UNLICENSED
Repository
github
Last release
4 years ago

fvi-roboman-server

  • npm run compile: Executa a limpeza dos arquivos e diretorios.
  • npm run debug-test: Executa os testes unitários com o DEBUG ativo.
  • npm run test: Executa os testes unitários.
  • npm run debug-dev: Executa os testes unitários e espera por alterações com o DEBUG ativo.
  • npm run dev: Executa os testes unitários e espera por alterçãoes.
  • npm run prod: Executa o código com NODE_ENV=production.
  • npm run coverage: Executa os testes unitários e retorna a cobertura dos códigos através do nyc
  • npm run release: Inicia uma nova release de versão incrementando o patch, git flow release start.
  • npm run release:minor: Inicia uma nova release de versão incrementando o minor, git flow release start.
  • npm run release:major: Inicia uma nova release de versão incrementando o major, git flow release start.
  • npm run release:finish: Finaliza a release, ou seja, realiza o git flow release finish.

FVI - Robot Management

Servidor que implementa o gerenciamento das inscrições, Camunda External Task Subscriptions, além de orquestrar a execução dos robôs que automatizam tarefas no camunda.

Configuração

A configuração deste servidor é realizada através de um, ou mais, arquivos JSON no diretório /config. Podemos ter um arquivo de configuração para cada ambiente, e.g. development.json, test.json, etc.

O padrão JSON do arquivo de configuração segue o mesmo formato da configuração do node-convict.js, pois este sistema utiliza a dependência i-koa-server.

Configuration Doc

{
    server: {
        name: {
            doc: 'Koa Server Name',
            format: String,
            default: 'unknown-koa-server',
            env: 'KOA_SERVER_NAME',
            arg: 'koa-server-name',
        },
        port: {
            doc: 'Koa Server Port',
            format: 'port',
            default: 4000,
            env: 'KOA_SERVER_PORT',
            arg: 'koa-server-port',
        },
        version: {
            doc: 'Koa Server Version',
            format: String,
            default: '1.0.0',
            env: 'KOA_SERVER_VERSION',
            arg: 'koa-server-version',
        },
    },
    camunda: {
        url: {
            doc: 'Camunda URL',
            format: 'url',
            default: 'http://localhost:8080',
            env: 'CAMUNDA_URL',
            arg: 'camunda-url',
        },
    },
    dynamoose: {
        dynalite: {
            doc: 'DynamoDB local with Dynalite!.',
            format: Boolean,
            default: false,
            env: 'DYNAMO_LOCAL_WITH_DYNALITE',
            arg: 'dynamo-local-with-dynalite',
        },
        accessKeyId: {
            doc: 'AWS Access Key ID',
            format: String,
            default: 'fake-access-key',
            env: 'AWS_ACCESS_KEY_ID',
            arg: 'aws-access-key-id',
        },
        secretAccessKey: {
            doc: 'AWS Secret Access Key',
            format: String,
            default: 'fake-secret-key',
            env: 'AWS_SECRET_ACCESS_KEY',
            arg: 'aws-secret-access-key',
        },
        region: {
            doc: 'AWS DynamoDB Region',
            format: String,
            default: 'us-east-1',
            env: 'AWS_REGION',
            arg: 'aws-region',
        },
        prefix: {
            doc: 'DynamoDB table prefix name.',
            format: String,
            default: '',
            env: 'DYNAMO_TABLE_PREFIX',
            arg: 'dynamo-table-prefix',
        },
        suffix: {
            doc: 'DynamoDB table suffix name.',
            format: String,
            default: '',
            env: 'DYNAMO_TABLE_SUFFIX',
            arg: 'dynamo-table-suffix',
        },
        options: {
            doc: 'The dynamoose options.',
            format: Object,
            default: {},
        },
    },
    logger: {
        level: {
            doc: 'The application environment.',
            format: ['trace', 'debug', 'info', 'warn', 'error', 'fatal'],
            default: 'info',
            env: 'LOG_LEVEL',
            arg: 'log-level',
        },
        actors: {
            doc: 'The actor system logger categories.',
            format: '*',
            default: null,
        },
    },
}

Mode de Usar

const server = require('fvi-roboman-server')

server()
    .then(context => console.log(context))
    .catch(error => console.error(error))

context Object

Este é o Object que representa o contexto do servidor após ele ter sido iniciado, ou melhor, após a chamada da função server(). Como no exemplo podemos ver esta função retorna uma Promise<Context>.

  • Context
{
    "server": {
        "instance": {},
        "info": {},
        "env": {}
    },
    "workers": [],
    "workerActor": {},
    "serverActor": {}
}
  • server.instance: Aqui temos a instância do servidor HTTP. Podemos somente acessar a função server.instance.close(): void para fechar o servidor, ou melhor, fechar a conexão aberta.
  • server.info: Um Object com informações do servidor, como info.name e info.version.
  • server.env: Um Object com informações do ambiente do servidor, como env.port, etc.
  • workers: Um Array com a lista de workers que foram iniciados na inicialização do servidor.
  • workerActor: Ator que disponibiliza funções para manipular os workers.
  • serverActor: Ator que disponibiliza a função de iniciar o servidor.