# Regras de Negócio - ação Executar Script Com a ação **Executar Script** nas regras de negócio, você pode validar solicitações e atualizar valores de campos para automatizar os fluxos de trabalho das solicitações. Você pode usar scripts para validação de solicitações que envolvam condições complexas ou solicitações que usem entradas de aplicativos de terceiros. Você pode executar scripts de regras de negócio em solicitações recebidas por navegador, API, dispositivo móvel e e-mail. ## Casos de uso: - ### Atualizar campos da solicitação com base em valores de campos de um módulo diferente ou de um aplicativo. Um usuário registra uma solicitação de serviço para um ativo. Nesse caso, você pode escrever um script para verificar automaticamente a disponibilidade do ativo, depois alocá-lo à solicitação e atualizar o status do ativo no módulo **Ativo**. - ### Interromper uma operação de solicitação em qualquer momento. Você pode simplesmente definir o que não é permitido para um solicitante ou técnico, seja modificação de dados ou a própria operação, em qualquer estágio do processamento da solicitação. Um usuário registra uma solicitação de serviço para um novo laptop. Durante o processamento dessa solicitação, você pode usar a execução de script de Regras de Negócio nos seguintes casos: - Depois que o aprovador aprovar a solicitação, o técnico ou o solicitante não deverá conseguir alterar a entrada da solicitação. - O técnico não deve ter permissão para alterar o status da solicitação para **Aguardando Compra**, a menos que a solicitação seja aprovada. - Quando o técnico entregar o item ao solicitante, o técnico só deve ter permissão para alterar o status da solicitação para **Resolvida** e não para **Fechada**. Somente o solicitante deve ter permissão para fechar a solicitação após verificar o item recebido. - ### Impedir a criação de uma solicitação desde o início. Para evitar duplicação de solicitações quando o mesmo solicitante abrir uma solicitação para a mesma categoria, subcategoria e item. ## Para adicionar um comando em uma regra de negócio - Vá para **Ações**, clique em Selecionar **Ações Personalizadas** >> **Executar Script**. - Na caixa de texto exibida, insira o nome do arquivo que contém o script e clique em **Salvar**. ### Configuração de exemplo: Considere o caso de abrir um chamado no Jira a partir do ServiceDesk Plus. Para configurar um script personalizado para essa ação: 1. Crie um arquivo de texto com o comando abaixo: ```bash py CreateJiraTicket.py $COMPLETE_V3_JSON_FILE ``` 2. Salve o arquivo como **create-jira-ticket.txt** e coloque-o no diretório **[SDP_HOME]/integration/custom_scripts/executor_files**. 3. Ao configurar a ação personalizada, insira o nome do arquivo no campo executor. 4. Clique em **Salvar** após fornecer todos os outros detalhes. ![](https://www.manageengine.com/userfiles/866/14262/ckfinder/images/qu/2021_10_18_11_05_441.png) Durante a execução, o aplicativo buscará o comando no arquivo de texto fornecido. ## Parâmetro suportado — $COMPLETE_V3_JSON_FILE $COMPLETE_V3_JSON_FILE indica o caminho de um arquivo que contém os detalhes completos da solicitação, valores anteriores e atualizados dos campos no formato JSON. O arquivo é temporário e será excluído automaticamente após a execução do script. O arquivo JSON temporário é criado no diretório `SDP_Home\integration\custom_scripts\request\`, com o nome de arquivo `.json`. **Estrutura de $COMPLETE_V3_JSON_FILE** ```json { "request": { }, "diff": { "old": { "request": { "priority": { "id": "4", "name": "Alta" }, "urgency": { "id": "3", "name": "Normal" }, "impact_details": "Alto impacto para servidores" } }, "new": { "request": { "priority": { "id": "1", "name": "Baixa" }, "urgency": { "id": "4", "name": "Baixa" }, "impact_details": "Baixo impacto para servidores" } } }, "LOGIN_NAME": "administrator", "LOGGEDIN_USER_TYPE": "Técnico", "LOGGEDIN_USER_NAME": "administrator", "OPERATION_TYPE": "add" } ``` ## Entrada fornecida ao arquivo temporário $COMPLETE_V3_JSON_FILE A entrada está em JSON. Aqui, a chave **request** contém os campos fornecidos pelo usuário e os campos preenchidos pelo sistema no formato da API V3. ### Informações adicionais fornecidas no arquivo de entrada a. LOGIN_NAME b. LOGGEDIN_USER_NAME c. LOGIN_USER_ID d. LOGGEDIN_USER_TYPE e. OPERATION_TYPE ## Formato JSON de saída para scripts personalizados O script do arquivo de solicitações deve retornar um JSON que contenha o status de sucesso/falha e uma mensagem que será exibida na guia de histórico da solicitação. Formato geral: ```json { "result": "success", "message": "Mensagem" } ``` - Result indica o status de sucesso/falha da ação. - Message é a informação a ser exibida na guia de histórico da solicitação. O script do servidor deve gravar o JSON de saída (se houver) no mesmo arquivo temporário fornecido ao script. Você não deve invocar chamadas de API externas para atualizar a mesma solicitação, porque isso não permitirá que os valores atualizados sejam levados adiante para as regras de negócio em cascata. ## Operações suportadas Você pode realizar operações de **Atualização** e **Negação** usando o retorno JSON. Todos os campos que podem ser atualizados via API de solicitação também podem ser atualizados usando scripts personalizados. **Exemplo de operação de Atualização** ```json { "result": "success", "message": "Script Python de exemplo", "operation": [ { "OPERATION_NAME": "UPDATE", "INPUT_DATA": [ { "request": { "urgency": { "name": "Alta" }, "group": { "name": "Rede" }, "priority": { "name": "Alta" } } } ] } ] } ``` **Exemplo de operação de Negação** ```json { "result": "success", "operation": [ { "OPERATION_NAME": "NEGATE", "REASON": "Motivo da negação" } ] } ``` Clique [aqui](https://www.manageengine.com/br/service-desk/help/adminguide/sample_python_script.html) para ver o script de exemplo para o caso de uso abaixo: O técnico não deve ter permissão para alterar o status da solicitação para **Aguardando Compra**, a menos que a solicitação seja aprovada. Para saber mais sobre como escrever um script personalizado, clique [aqui](https://www.manageengine.com/br/service-desk/help/adminguide/writing_custom_script_for_business_rules.html).