Criação de Conectores: mudanças entre as edições
| (3 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
| Linha 62: | Linha 62: | ||
*DisplayName: qualquer nome |
*DisplayName: qualquer nome |
||
*ApiName: nome da sua REST API |
*ApiName: nome da sua REST API |
||
==Exemplo== |
|||
O exemplo a seguir segue os passos presentes nesse link: https://documentation.bonitasoft.com/bonita/2022.1/process/connector-archetype-tutorial |
|||
Neste exemplo, vamos criar um conector para se comunicar com a API de Star Wars. Ele receberá um nome de personagem de Star Wars e retornará detalhes sobre esse personagem. |
|||
Veremos então como implantar esse conector nos pacotes do Github para instalá-lo como uma extensão no Bonita Studio de qualquer lugar. |
|||
O primeiro passo é gerar o projeto maven usando o arquétipo: |
|||
<code class="terminal-line"> |
|||
mvn archetype:generate \ |
|||
-DarchetypeGroupId=org.bonitasoft.archetypes \ |
|||
-DarchetypeArtifactId=bonita-connector-archetype |
|||
</code> |
|||
Com essas informações: |
|||
*groupId: com.company.connector |
|||
*artifactId: connector-starwars |
|||
*version: 1.0.0 |
|||
*package: com.company.connector |
|||
*bonitaVersion: [Technichal Bonita id] (ex: 7.13.0) |
|||
*className: ConnectorStarWars |
|||
*language: groovy |
|||
*wrapper: true |
|||
Adicione as seguintes propriedades e dependências às existentes no pom.xml:<br/> |
|||
<code> |
|||
<properties> |
|||
<retrofit.version>2.9.0</retrofit.version> |
|||
<logging-interceptor.version>3.11.0</logging-interceptor.version> |
|||
<converter-jackson.version>2.4.0</converter-jackson.version> |
|||
<mockwebserver.version>3.14.8</mockwebserver.version> |
|||
</properties> |
|||
<dependencies> |
|||
<dependency> |
|||
<groupId>com.squareup.retrofit2</groupId> |
|||
<artifactId>retrofit</artifactId> |
|||
<version>${retrofit.version}</version> |
|||
</dependency> |
|||
<dependency> |
|||
<groupId>com.squareup.okhttp3</groupId> |
|||
<artifactId>logging-interceptor</artifactId> |
|||
<version>${logging-interceptor.version}</version> |
|||
</dependency> |
|||
<dependency> |
|||
<groupId>com.squareup.retrofit2</groupId> |
|||
<artifactId>converter-jackson</artifactId> |
|||
<version>${converter-jackson.version}</version> |
|||
<exclusions> |
|||
<exclusion> |
|||
<groupId>com.fasterxml.jackson.core</groupId> |
|||
<artifactId>jackson-databind</artifactId> |
|||
</exclusion> |
|||
</exclusions> |
|||
</dependency> |
|||
<dependency> |
|||
<groupId>com.squareup.okhttp3</groupId> |
|||
<artifactId>mockwebserver</artifactId> |
|||
<version>${mockwebserver.version}</version> |
|||
<scope>test</scope> |
|||
</dependency> |
|||
</dependencies> |
|||
</code> |
|||
===Definindo input do conector=== |
|||
As entradas do conector são definidas na definição do conector. |
|||
Abra o arquivo src/main/resourcesources-filteredrces/connector-starwars.def |
|||
Primeiro vamos criar duas entradas para o conector: |
|||
*Um nome de entrada, que conterá o nome de um personagem de Star Wars |
|||
*Um URL de entrada, que conterá o URL do servidor de API (portanto, se o URL do servidor de API mudar no futuro, o serviço ainda poderá ser usado). |
|||
Remova a entrada padrão da definição e inclua as duas entradas a seguir:<br/> |
|||
<code> |
|||
<input mandatory="true" name="name" type="java.lang.String"/><br/> |
|||
<input mandatory="true" name="url" type="java.lang.String" defaultValue="http://swapi.dev/"/> |
|||
</code> |
|||
Então vamos criar uma página e dois widgets para essas entradas. Páginas e widgets são usados pelo Bonita Studio para criar uma interface de usuário a partir da definição do conector. |
|||
Substitua a página padrão pela seguinte:<br/> |
|||
<code> |
|||
<page id="starWarsPage"> |
|||
<!-- |
|||
A widget has a type (Text, combo box ...), an id and an input name. |
|||
- The name must reference an existing input |
|||
- The id is used in the property file to reference the widget |
|||
--> |
|||
<widget xsi:type="definition:Text" id="nameWidget" inputName="name"/> |
|||
<widget xsi:type="definition:Text" id="urlWidget" inputName="url"/> |
|||
</page> |
|||
</code><br/> |
|||
Para cada página e widget, um nome e uma descrição devem ser incluídos no arquivo de propriedades, caso contrário o Studio não poderá exibir o elemento. |
|||
Abra o arquivo src/main/resources-filtered/connector-starwars.properties e substitua o conteúdo da página e widgets padrão pelo seguinte:<br/> |
|||
<code> |
|||
starWarsPage.pageTitle=Star Wars connector - configuration page<br/> |
|||
starWarsPage.pageDescription=Indicate a Star Wars character name, and the service base URl if required.<br/> |
|||
nameWidget.label=Character name<br/> |
|||
nameWidget.description=The name of the character to retrieve<br/> |
|||
urlWidget.label=URL<br/> |
|||
urlWidget.description=The service base url<br/> |
|||
</code> |
|||
===Criar o serviço Retrofit e o modelo=== |
|||
Edição atual tal como às 17h12min de 8 de junho de 2022
Conectores são pontos de extensão que podem ser adicionados a um processo para estender os recursos do Bonita Runtime. Eles são um pedaço de código com entradas definidas como Expressões e saídas definidas como Operações.
Instalando as ferramentas[editar]
Deve-se instalar o Java JDK e Maven na sua máquina.
Maven 3.3+ requer JDK 1.7 ou mais recente.
Abra o terminal Linux (Debian) e execute as seguintes linhas de código:
Instalando OpenJDK[editar]
sudo apt updatesudo apt install default-jdk
Verifique a instalação do OpendJDK com:
java -version
A saída deve ser algo do tipo:
openjdk version "11.0.7" 2020-04-14
OpenJDK Runtime Environment (build 11.0.7+10-post-Ubuntu-3ubuntu1)
OpenJDK 64-Bit Server VM (build 11.0.7+10-post-Ubuntu-3ubuntu1, mixed mode, sharing)
Maven[editar]
wget https://www-us.apache.org/dist/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz -P /tmpsudo tar xf /tmp/apache-maven-*.tar.gz -C /optsudo ln -s /opt/apache-maven-3.6.3 /opt/mavensudo nano /etc/profile.d/maven.sh
export JAVA_HOME=/usr/lib/jvm/default-java
export M2_HOME=/opt/maven
export MAVEN_HOME=/opt/maven
export PATH=${M2_HOME}/bin:${PATH}
sudo chmod +x /etc/profile.d/maven.shsource /etc/profile.d/maven.shmvn -version
Maven home: /opt/maven
Java version: 11.0.7, vendor: Ubuntu, runtime: /usr/lib/jvm/java-11-openjdk-amd64
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "5.4.0-26-generic", arch: "amd64", family: "unix"
Fazendo o build[editar]
mvn archetype:generate \
-DarchetypeGroupId=org.bonitasoft.archetypes \
-DarchetypeArtifactId=bonita-rest-api-extension-archetype
Ao executar esse comando, é iniciado o processo de criar a REST API, especificando atributos conforme as perguntas aparecem no terminal. Siga as instruções para cada campo:
- GroupId e package: digitar org.bonitasoft.archetypes
- ArtifactId: bonita-rest-api-extension-(qualquer coisa aqui) Não tenho certeza se precisa desse texto em específico ou se pode ser quaisquer palavras separadas por -
- Version: 1.0-SNAPSHOT Altera o número da versão como preferir
- BonitaVersion: É a technical Id da versão, verificar qual a technicalId da sua versão abrindo o bonita studio, indo em Help e clicando em sobre
- Linguagem: Groovy, java ou kotlin, kotlin está dando erro no momento(05/2022)
- PathTemplate: qualquer coisa desde que seja separado por hífen, exemplo: miguel-thiago-tomas
- HttpVerb: a função desejada da REST API, a lista das funções aparece no terminal
- DisplayName: qualquer nome
- ApiName: nome da sua REST API
Exemplo[editar]
O exemplo a seguir segue os passos presentes nesse link: https://documentation.bonitasoft.com/bonita/2022.1/process/connector-archetype-tutorial
Neste exemplo, vamos criar um conector para se comunicar com a API de Star Wars. Ele receberá um nome de personagem de Star Wars e retornará detalhes sobre esse personagem.
Veremos então como implantar esse conector nos pacotes do Github para instalá-lo como uma extensão no Bonita Studio de qualquer lugar.
O primeiro passo é gerar o projeto maven usando o arquétipo:
mvn archetype:generate \
-DarchetypeGroupId=org.bonitasoft.archetypes \
-DarchetypeArtifactId=bonita-connector-archetype
Com essas informações:
- groupId: com.company.connector
- artifactId: connector-starwars
- version: 1.0.0
- package: com.company.connector
- bonitaVersion: [Technichal Bonita id] (ex: 7.13.0)
- className: ConnectorStarWars
- language: groovy
- wrapper: true
Adicione as seguintes propriedades e dependências às existentes no pom.xml:
<properties>
<retrofit.version>2.9.0</retrofit.version>
<logging-interceptor.version>3.11.0</logging-interceptor.version>
<converter-jackson.version>2.4.0</converter-jackson.version>
<mockwebserver.version>3.14.8</mockwebserver.version>
</properties>
<dependencies>
<dependency>
<groupId>com.squareup.retrofit2</groupId>
<artifactId>retrofit</artifactId>
<version>${retrofit.version}</version>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>logging-interceptor</artifactId>
<version>${logging-interceptor.version}</version>
</dependency>
<dependency>
<groupId>com.squareup.retrofit2</groupId>
<artifactId>converter-jackson</artifactId>
<version>${converter-jackson.version}</version>
<exclusions>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>mockwebserver</artifactId>
<version>${mockwebserver.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
Definindo input do conector[editar]
As entradas do conector são definidas na definição do conector. Abra o arquivo src/main/resourcesources-filteredrces/connector-starwars.def Primeiro vamos criar duas entradas para o conector:
- Um nome de entrada, que conterá o nome de um personagem de Star Wars
- Um URL de entrada, que conterá o URL do servidor de API (portanto, se o URL do servidor de API mudar no futuro, o serviço ainda poderá ser usado).
Remova a entrada padrão da definição e inclua as duas entradas a seguir:
<input mandatory="true" name="name" type="java.lang.String"/>
Então vamos criar uma página e dois widgets para essas entradas. Páginas e widgets são usados pelo Bonita Studio para criar uma interface de usuário a partir da definição do conector.
<input mandatory="true" name="url" type="java.lang.String" defaultValue="http://swapi.dev/"/>
Substitua a página padrão pela seguinte:
<page id="starWarsPage">
<widget xsi:type="definition:Text" id="nameWidget" inputName="name"/>
<widget xsi:type="definition:Text" id="urlWidget" inputName="url"/>
</page>
Para cada página e widget, um nome e uma descrição devem ser incluídos no arquivo de propriedades, caso contrário o Studio não poderá exibir o elemento.
Abra o arquivo src/main/resources-filtered/connector-starwars.properties e substitua o conteúdo da página e widgets padrão pelo seguinte:
starWarsPage.pageTitle=Star Wars connector - configuration page
starWarsPage.pageDescription=Indicate a Star Wars character name, and the service base URl if required.
nameWidget.label=Character name
nameWidget.description=The name of the character to retrieve
urlWidget.label=URL
urlWidget.description=The service base url