# Escenario de ejemplo para el activador personalizado en el módulo de Cambios ### Escenario: El sitio web está caído para la vista de asesoramiento de nómina y el nuevo servidor debe instalarse rápidamente. Para la situación de emergencia anterior, donde el impacto es **"Alto"**, la **"Acción"** requerida puede activarse mediante el archivo script/clase. Los miembros del E-CAB pueden configurarse con mucha anticipación para este tipo de situaciones de emergencia y puede ejecutarse el archivo de clase/script correspondiente. Para realizar acciones, es necesario tener el archivo de clase en la ubicación especificada para la implementación de la acción. **En caso de un archivo de "clase"**: * De manera predeterminada, el jar debe colocarse en el directorio `[SDP_Home]/integration/lib/` * Ejemplo: `com.servicedeskplus.integration.ChangeActionImplementation` Nota: Es necesario que el archivo de clase se convierta en un archivo jar para implementar la acción. ![](https://www.manageengine.com/userfiles/866/14262/ckfinder/images/import-gbb3jktbxt6u//configurations/custom-trigger-change-images/sample-class.png) Consideremos la situación en la que los roles desempeñados por los miembros del E-CAB deben actualizarse. Se debe seguir el siguiente formato JSON para activar la acción requerida. **UPDATE_ROLES (Script/Class)** ```json { "message": "Agregando miembros del CAB de emergencia mediante activador personalizado", "operations": [ { "operation_name": "UPDATE_ROLES", "input_data": { "change": { "roles": [ { "id": 5, "name": "Gerente de línea", "users": [ { "email": "Aaron@xyz.com", "name": "Aaron" }, { "email": "Abby@xyz.com", "name": "Shawn Adams" } ] } ] } } } ] } ``` A continuación se muestra una implementación de ejemplo para la acción de **"Cambio"**: ```java package com.servicedeskplus.integration; import com.manageengine.servicedesk.actionplugin.executor.ActionInterface import com.manageengine.servicedesk.actionplugin.executor.ExecutorData /** * La implementación del activador debe realizarse en esta clase * @executorData, contiene DataJSON,diffJSON */ public class ChangeActionImplementation extends DefaultActionInterface { public JSONObject execute(ExecutorData executorData) throws Exception { // obtener los datos del cambio en formato API JSONObject changeData = executorData.getDataJSON(); // obtener el campo de impacto JSONObject impact = changeData.get("impact"); // obtener el valor asociado con el impacto String impactName = impact.get("name"); JSONObject returnJSON = new JSONObject(); // Arreglo de operaciones que se realizarán en el activador; actualmente en cambio solo se proporciona la opción UPDATE_ROLES JSONArray operations = new JSONArray(); // JSON para la operación específica JSONObject operation = new JSONObject(); // JSON para proporcionar detalles de la operación JSONObject input_data = new JSONObject(); // JSON para el cambio de entidad JSONObject change = new JSONObject(); // Arreglo de roles que se configurarán JSONArray roles = new JSONArray(); // JSONObject para los detalles del rol JSONObject roleObject = new JSONObject(); // arreglo de usuarios que se configurarán JSAONArray users = new JSONArray(); // JSONObject para los detalles del usuario JSONObject user1 = new JSONObject(); JSONObject user2 = new JSONObject(); if (impactName.equalsIgnoreCase("High") { returnJSON.put("message", "Agregando miembros del CAB de emergencia mediante el activador"); operation.put("operation_name", "UPDATE_ROLES"); roleObject.put('id': ROLEID of CAB); roleObject.put("name": "Nombre del rol, aquí CAB"); user1.put("email": "emailId of user"); user1.put("name": "name of user"); user2.put("id": ID of user); // Ingrese el nombre del usuario. user2.put("name": "name of user"); 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", "Agregando miembros del CAB mediante el activador"); operation.put("operation_name", "UPDATE_ROLES"); roleObject.put("id ", ROLEID of CAB); roleObject.put("name": "Nombre del rol, aquí CAB "); user1.put("email": "emailId of user"); user1.put("name": "name of user"); user2.put("id": ID of user); user2.put("name": "name of user"); 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; } } ``` Los siguientes son los métodos utilizados en la implementación de la clase: * **getDataJSON()** - Para obtener la entrada en formato API, que proporciona información completa sobre el "cambio". * **getDiffJSON()** - Devuelve los detalles de los campos que se modificaron recientemente en el cambio. Para obtener información sobre los campos modificados recientemente en el "cambio". **Haz clic [aquí](https://www.manageengine.com/latam/service-desk/help/adminguide/configurations/problem_changemanagement/sample-class-change.html) para ver los valores devueltos en getDataJSON() y getDiffJSON()** Una vez conocido el formato JSON, la acción puede ejecutarse mediante un archivo de clase o un archivo script. Para realizar acciones, es necesario tener el archivo Script en la ubicación especificada para la implementación de la acción. **En caso de un archivo "script"**: * De manera predeterminada, los scripts deben colocarse en el directorio `[SDP_Home]/integration/custom_scripts/` * Ejemplo: `py addApprovers.py` ![](https://www.manageengine.com/userfiles/866/14262/ckfinder/images/import-gbb3jktbxt6u//configurations/custom-trigger-change-images/sample-script.png) **Haz clic [aquí](https://www.manageengine.com/latam/service-desk/help/adminguide/configurations/problem_changemanagement/sample-script.html) para ver un archivo script de ejemplo para la acción de "Cambio"**