# Cenário de exemplo para gatilho personalizado no módulo de Mudança ### Cenário: O site está fora do ar para a visualização de aconselhamento de folha de pagamento e o novo servidor precisa ser instalado rapidamente. Para a situação de emergência acima, em que o impacto é **'Alto'**, a **'Ação'** necessária pode ser acionada por meio do arquivo de script/classe. Os membros do E-CAB podem ser configurados com bastante antecedência para essas situações de emergência e o arquivo de classe/script correspondente pode ser executado. Para executar ações, é necessário ter o arquivo de Classe no local especificado para a implementação da ação. **No caso de arquivo de 'classe'**: * Por padrão, o jar deve ser colocado no diretório `[SDP_Home]/integration/lib/` * Exemplo: `com.servicedeskplus.integration.ChangeActionImplementation` Observação: É necessário que o arquivo de classe seja convertido em arquivo jar para implementar a ação. ![ ](https://www.manageengine.com/userfiles/866/14262/ckfinder/images/import-gbb3jktbxt6u//configurations/custom-trigger-change-images/sample-class.png) Vamos considerar a situação em que as funções desempenhadas pelos membros do E-CAB precisam ser atualizadas. O formato JSON a seguir deve ser seguido para acionar a ação necessária. **UPDATE_ROLES (Script/Classe)** ```json { "message": "Adicionando membros do CAB de Emergência por meio de Gatilho Personalizado", "operations": [ { "operation_name": "UPDATE_ROLES", "input_data": { "change": { "roles": [ { "id": 5, "name": "Gerente de Linha", "users": [ { "email": "Aaron@xyz.com", "name": "Aaron" }, { "email": "Abby@xyz.com", "name": "Shawn Adams" } ] } ] } } } ] } ``` **A seguir, um exemplo de implementação para a Ação de 'Mudança'**: ```java package com.servicedeskplus.integration; import com.manageengine.servicedesk.actionplugin.executor.ActionInterface import com.manageengine.servicedesk.actionplugin.executor.ExecutorData /** * A implementação do gatilho deve ser feita nesta classe * @executorData, contém DataJSON,diffJSON */ public class ChangeActionImplementation extends DefaultActionInterface { public JSONObject execute(ExecutorData executorData) throws Exception { // obter os dados da mudança no formato da API JSONObject changeData = executorData.getDataJSON(); // buscar o campo impacto JSONObject impact = changeData.get("impact"); // obter o valor associado ao impacto String impactName = impact.get("name"); JSONObject returnJSON = new JSONObject(); // Array de operações a serem executadas no gatilho, // atualmente apenas a opção UPDATE_ROLES é fornecida na mudança JSONArray operations = new JSONArray(); // JSON para operação específica JSONObject operation = new JSONObject(); // JSON para fornecer os detalhes da operação JSONObject input_data = new JSONObject(); // JSON para a entidade mudança JSONObject change = new JSONObject(); // Array de funções a serem configuradas JSONArray roles = new JSONArray(); // JSONObject para detalhes da função JSONObject roleObject = new JSONObject(); // array de usuários a serem configurados JSAONArray users = new JSONArray(); // JSONObject para detalhes do usuário JSONObject user1 = new JSONObject(); JSONObject user2 = new JSONObject(); if (impactName.equalsIgnoreCase("High") { returnJSON.put("message", "Adicionando membros do CAB de Emergência por meio do Gatilho"); operation.put("operation_name", "UPDATE_ROLES"); roleObject.put('id': IDDAFUNÇÃO do CAB); roleObject.put("name": "Nome da Função, aqui CAB"); user1.put("email": "email do usuário"); user1.put("name": "nome do usuário"); user2.put("id": ID do usuário); // Insira o nome do usuário. user2.put("name": "nome do usuário"); users.put(user1); users.put(user2); roleObject.put("users", users); roles.put(roleObject); change.put("roles", roles); input_data.put("change", change); operation.put("input_data", input_data); operations.put(operation); returnJSON.put("operations", operation); } else { returnJSON.put("message", "Adicionando membros do CAB por meio do Gatilho"); operation.put("operation_name", "UPDATE_ROLES"); roleObject.put("id ", IDDAFUNÇÃO do CAB); roleObject.put("name", "Nome da Função, aqui CAB "); user1.put("email", "email do usuário"); user1.put("name", "nome do usuário"); user2.put("id", ID do usuário); user2.put("name", "nome do usuário"); users.put(user1); users.put(user2); roleObject.put("users", users); roles.put(roleObject); change.put("roles", roles); input_data.put("change", change); operation.put("input_data", input_data); operations.put(operation); returnJSON.put("operations", operation); } return returnJSON; } } ``` Veja a seguir os métodos usados na implementação da Classe: * **getDataJSON()** - Para obter a entrada no formato da API, que fornece informações completas sobre a 'mudança'. * **getDiffJSON()** - Retorna os detalhes dos campos que foram modificados recentemente na mudança. Para obter informações sobre os campos modificados recentemente na 'mudança'. **Clique [aqui](https://www.manageengine.com/br/service-desk/help/adminguide/configurations/problem_changemanagement/sample-class-change.html) para visualizar os valores retornados em getDataJSON() e getDiffJSON()** Tendo conhecido o formato JSON, a ação pode ser executada por meio de arquivo de classe ou arquivo de script. Para executar ações, é necessário ter o arquivo de Script no local especificado para a implementação da ação. **No caso de arquivo de 'script'**: * Por padrão, os scripts devem ser colocados no diretório `[SDP_Home]/integration/custom_scripts/` * Exemplo: `py addApprovers.py` ![ ](https://www.manageengine.com/userfiles/866/14262/ckfinder/images/import-gbb3jktbxt6u//configurations/custom-trigger-change-images/sample-script.png) **Clique [aqui](https://www.manageengine.com/br/service-desk/help/adminguide/configurations/problem_changemanagement/sample-script.html) para visualizar um arquivo de script de exemplo para a Ação de 'Mudança'**