# Plug-in de ação externa Os seguintes tópicos são discutidos neste documento: - [Sobre o Plug-in de Ação Externa](https://www.manageengine.com/br/service-desk/help/adminguide/api/external-action-plugin.html#ext%20act%20plug-in) - [Integração com aplicativos de terceiros](https://www.manageengine.com/br/service-desk/help/adminguide/api/external-action-plugin.html#integ) - [Configurando sua integração](https://www.manageengine.com/br/service-desk/help/adminguide/api/external-action-plugin.html#implement) - [Operações de solicitação suportadas por padrão](https://www.manageengine.com/br/service-desk/help/adminguide/api/external-action-plugin.html#default%20req) - [Integração padrão (integração com o JIRA)](https://www.manageengine.com/br/service-desk/help/adminguide/api/external-action-plugin.html#jira) ## Objetivo deste documento Este documento fornece informações processuais para que desenvolvedores criem um plug-in e estabeleçam integração entre o ServiceDesk Plus e vários outros aplicativos de terceiros. ## Sobre o Plug-in de Ação Externa Um fluxo de trabalho completo de solicitação exige que diferentes tarefas sejam executadas pela equipe de suporte. Ocasionalmente, a equipe de suporte pode envolver aplicativos de terceiros para realizar determinadas tarefas acessando os aplicativos em questão, o que pode exceder o limite do aplicativo. Assim, para superar o processo trabalhoso de trazer aplicativos de terceiros para executar tarefas, como integração com rastreador de problemas, criação de conta no Active Directory e criação de nova conta de e-mail, você pode utilizar a opção Plug-in de Ação Externa no ServiceDesk Plus. Essa opção ajuda a equipe de suporte a realizar várias operações relacionadas a terceiros diretamente da página **Solicitações**, apenas clicando no menu **Ações**. **Cenário:** Considere uma organização que usa o ServiceDesk Plus para o suporte ao cliente e o JIRA para rastreamento de bugs. É aqui que a estrutura de plug-in de ação externa entra em ação, por meio da qual eles podem criar integração entre o ServiceDesk Plus e o JIRA. Como resultado, eles podem criar problemas no JIRA a partir do menu **Ações** da página **Solicitações**. ![ ](https://www.manageengine.com/images/x_plugin.jpg) Habilidades necessárias para desenvolver o Plug-in de Ação Externa É necessário conhecimento nas seguintes áreas para trabalhar no plug-in: - Extensible Markup Language (XML) - JavaScript Object Notation (JSON) - Java (especificamente conceitos de Interface e Implementação) ## Configurando o Plug-in O plug-in foi projetado para ter uma classe de implementação e pode ser invocado por meio de um menu. O menu pode ser configurado no módulo **Admin** do ServiceDesk Plus. - Classe de implementação - Configuração de menu ### Classe de implementação A classe Java deve estender `DefaultActionInterface` e fornecer a implementação por meio do método `execute`. As classes de importação necessárias estão disponíveis em `AdventNetHelpDesk.jar` e `AdventNetServiceDeskCommon.jar`, encontrados em: ``` "[SCP_HOME]\applications\extracted\AdventNetSupportCenter.eear\AdventNetHelpDesk.ear\" ``` ```java package com.manageengine.servicedesk.actionplugin.sample; import com.manageengine.servicedesk.actionplugin.executor.ActionInterface import com.manageengine.servicedesk.actionplugin.executor.ExecutorData public class SampleActionImplementation extends DefaultActionInterface { public JSONObject execute(ExecutorData executorData) throws Exception { ExecutorData data = executorData; ActionMenuData menuData = data.getActionMenuData(); String menuName = (String) menuData.getMenuName(); JSONObject scpValuesObj = data.getDataJSON(); //Você pode colocar sua implementação aqui //O tipo de retorno deve ser JSON } } ``` **O método Execute:** A implementação será definida no método `execute` com o parâmetro objeto `ExecutorData`: - Método: `Execute (ExecutorData)` - Retorna: `JSONObject` **Dados do Executor:** O objeto `ExecutorData` é um parâmetro para o método Execute. Usando-o, podemos obter os detalhes do menu que é invocado por meio do método `getActionMenuData()`. Isso retornará um objeto chamado `ActionMenuData`. i) **ActionMenuData** - Fornece informações sobre o menu a partir do qual a ação é invocada. - Método: `getActionMenuData()` - Retorna: `ActionMenuData` Abaixo estão os métodos disponíveis para extrair valores e seus respectivos tipos de dados: | Parâmetro | Valor de retorno | |---|---| | **getMenuName**

Retorna o nome do menu de ação que é invocado. | String | | **getDisplayText**

Retorna o nome de exibição do menu que é invocado. | String | | **getExecutorClass**

Retorna o nome da classe de execução Java especificada para este menu. | String | | **getAllowedRoles**

Retorna a lista de funções que têm permissão para usar este menu. | ArrayList | | **getAllowedTemplates**

Retorna a lista de modelos nos quais este menu estará disponível. | ArrayList | ii) **Dados JSON** - Os detalhes da solicitação a partir da qual o menu foi acionado podem ser obtidos invocando o método `getDataJSON` em `ExecutorData`. Isso retornará os detalhes como um objeto JSON: - Método: `getDataJSON()` - Retorna: `JSONObject` Um exemplo de dados seria como abaixo: ```json { "WORKORDERID": "1", "REQUESTER": "Guest", "CREATEDBY": "administrator", "CREATEDTIME": "1469685688321", "DUEBYTIME": "1469692888321", "RESPONSEDUEBYTIME": "-1", "FR_DUETIME": "-1", "RESPONDEDTIME": "0", "RESOLVEDTIME": "0", "COMPLETEDTIME": "0", "SHORTDESCRIPTION": "", "TIMESPENTONREQ": "0hrs 0min", "SUBJECT": "Testing for Bulk SMS", "REQUESTTEMPLATE": "Default Request", "MODE": "E-Mail", "SLA": "Medium SLA", "ASSET": "", "DEPARTMENT": " HR Department", "EDITORID": "null", "EDITING_STATUS": "0", "IS_CATALOG_TEMPLATE": "false", "SITE": "Singapore Support", "ISVIPUSER": "No", "SERVICE": "", "CATEGORY": "Software", "SUBCATEGORY": "MS Office", "ITEM": "Install", "TECHNICIAN": "Heather Graham", "TECHNICIAN_LOGINNAME": "Heather", "STATUS": "Open", "PRIORITY": "Medium", "LEVEL": "Tier 2", "IMPACT": "", "URGENCY": "High", "IMPACTDETAILS": "-", "REQUESTTYPE": "Incident", "APPROVAL_STATUS": "", "CLOSURECODE": "", "CLOSURECOMMENTS": "", "FCR": "false", "YETTOREPLYCOUNT": "", "GROUP": "Hardware Problems", "DESCRIPTION": "", "Test": "" } ``` ## Operações de solicitação suportadas por padrão Com essas informações, os clientes podem escrever seu próprio código de implementação para executar a operação necessária. Agora, existem duas maneiras de atualizar um ticket. A primeira opção é usar o suporte à API REST disponível no SDP e atualizar a solicitação ou executar operações como adicionar um registro de trabalho, notas, resolução etc. A segunda é usar a **funcionalidade de retorno padrão suportada pela estrutura do plug-in de ação**. O método `execute` retorna um objeto JSON. Por padrão, **a adição de notas** e **a atualização de uma solicitação** são suportadas se o JSON retornado estiver em conformidade com o formato suportado. ### a. Adicionando notas a uma solicitação ```json { "message":"Solicitação adicionada com sucesso", "result":"success", "operation":[ { "INPUT_DATA":[ { "notes":{ "notestext":"O ticket foi criado no JIRA e as informações foram preenchidas no SDP" } } ], "OPERATIONNAME":"ADD_NOTE" } ] } ``` ### b. Atualizando uma solicitação ```json { "message":"Solicitação adicionada com sucesso", "result":"success", "operation":[ { "INPUT_DATA":[ { "Jira ID":"35", "Jira Key":"SDP-3", "self":"http://jira-server/rest/api/2/issue/35" } ], "OPERATIONNAME":"UPDATE_REQUEST" } ] } ``` ## Integração padrão (integração com o JIRA) **Para configurar o menu Ações da Solicitação** ```xml Integração SCP para Jira ModifyRequests