Criação de Conectores: mudanças entre as edições

De EAPn
Ir para navegação Ir para pesquisar
 
(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 update 
 sudo 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 /tmp 
 sudo tar xf /tmp/apache-maven-*.tar.gz -C /opt 
 sudo ln -s /opt/apache-maven-3.6.3 /opt/maven 
 sudo 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.sh 
 source /etc/profile.d/maven.sh 
 mvn -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"/>
<input mandatory="true" name="url" type="java.lang.String" defaultValue="http://swapi.dev/"/>
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:
<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

Criar o serviço Retrofit e o modelo[editar]