O Node-RED permite-lhe começar rapidamente a desenvolver aplicações arrastando os nós e ligando-os entre si para criar um fluxo. Esta pode ser uma óptima forma de começar, mas à medida que o tráfego aumenta ao longo do tempo, pode tornar a aplicação mais difícil de manter.
Este guia fornece algumas sugestões e melhores práticas sobre como criar fluxos Node-RED que são reutilizáveis, mais fáceis de manter e mais robustos.
Este guia assume que você já está familiarizado com o uso básico do Node-RED. Se estiver à procura de mais informações sobre a utilização do Node-RED, o Guia do utilizador e o Livro de receitas são excelentes recursos para começar.
estrutura do processo
Esta secção descreve como organizar processos, estratégias para dividir processos em componentes mais pequenos e reutilizáveis e como personalizar processos para diferentes plataformas.
conceção da mensagem
Esta secção analisa a forma como a conceção das mensagens pode ajudar a criar nós e fluxos que funcionam em conjunto e são mais fáceis de manter.
Processo de documentação
Todo bom código deve ser acompanhado de uma boa documentação. Esta secção descreve quais as ferramentas e técnicas que o Node-RED fornece para o ajudar a documentar.
Quando começa a utilizar o Node-RED, pode começar por adicionar todos os seus nós ao mesmo separador do editor. Pode importar alguns exemplos de fluxos que outros partilharam ou criar protótipos de fluxos para testar coisas diferentes.
Com o tempo, isto pode levar a uma confusão de nós e linhas, tornando difícil encontrar partes específicas do processo.
Pensar na forma como os processos serão estruturados no início de qualquer projeto de desenvolvimento pode ajudar a mantê-los organizados e a facilitar a sua manutenção.
A principal forma de organizar fluxos no Node-RED é separá-los em separadores no editor. Há várias estratégias diferentes que podem ser usadas para fazer isso.
Se conseguir identificar os componentes lógicos separados da sua aplicação, considere a possibilidade de os colocar em separadores separados.
Para aplicações de domótica, pode colocar a lógica de fluxo para cada divisão num separador separado para refletir o espaço físico. Ou pode querer separar os processos com base na funcionalidade - assim, todos os processos relacionados com a iluminação estão num separador e o aquecimento noutro.
Se estiver a construir um backend de API HTTP, cada separador pode representar um tipo separado de recurso a que a API acede.
O objetivo deve ser facilitar a "leitura" de um único processo do início ao fim. Manter o processo num único separador pode ajudar neste aspeto.
Outra consideração é se está a trabalhar com outros programadores na mesma aplicação Node-RED. Gerenciar a mesclagem de alterações é muito mais fácil se as alterações estiverem em guias separadas. Se tiver programadores com diferentes funções ou especializações, considere como isso pode afetar a organização do seu processo.
Criar processos reutilizáveis
À medida que constrói o seu processo, pode encontrar algumas partes comuns que quer reutilizar em vários sítios. Deve evitar espalhar várias cópias destas partes comuns pelo seu processo, uma vez que se tornam mais difíceis de manter - acabará por aplicar correcções em vários locais e é fácil esquecer uma delas.
O Node-RED fornece duas formas diferentes de criar fluxos reutilizáveis - nós ligados e subfluxos.
Nós de ligação Os nós de ligação permitem-lhe criar um fluxo que salta entre separadores no editor - adicionam uma ligação virtual do fim de um fluxo ao início de outro.
Um subfluxo permite-lhe criar um novo nó na paleta e a sua implementação interna é descrita como um fluxo. Pode então adicionar uma nova instância do subfluxo em qualquer parte de um nó normal.
Existem algumas diferenças importantes entre estes dois métodos. Os nós de ligação não podem ser utilizados no meio de um processo, onde as mensagens são passadas através da ligação e depois devolvidas quando outros processos terminam. Eles só podem ser usados para iniciar ou terminar um processo. Eles também podem ser conectados a vários outros nós de ligação. Isto permite-lhe enviar mensagens para vários outros fluxos, ou fazer com que vários fluxos enviem mensagens para um único fluxo. Podem ser utilizados num único separador para ajudar a fluir no espaço de trabalho sem muitos fios a cruzarem-se da direita para a esquerda.
Os subfluxos aparecem como nós regulares e podem, portanto, ser utilizados em qualquer ponto do fluxo. No entanto, cada instância de um subfluxo é independente de outras instâncias. Qualquer contexto de fluxo dentro de um subfluxo será aplicado a instâncias individuais. Se um subfluxo criar uma ligação a um sistema remoto, cada instância criará a sua própria ligação.
Subfluxo personalizado
Ao criar subfluxos, talvez você queira personalizar o comportamento deles de alguma forma. Por exemplo, alterar o tópico MQTT no qual ele é publicado.
Um padrão para fazer isso é definir msg.topic para cada mensagem passada para o subfluxo. Mas isso requer a adição de um nó Change antes de cada instância de subfluxo para definir o valor desejado.
Uma abordagem mais simples é usar propriedades de subfluxo. Estas são propriedades que podem ser definidas numa instância de subfluxo e aparecem como variáveis de ambiente dentro do subfluxo.