Novos métodos na API de Javascript–Processos I

by Pedro Azevedo 4. October 2016 19:30

Boas pessoal,

Há algum tempo atrás realizei alguns posts sobre a API de Javascript no CRM 2013, com o CRM 2015 apareceram novos métodos. A principal alteração foi ao nível da barra de processos de negócio, vamos conhecer melhor estas alterações:

image

Assinalado a vermelho vemos o que foi adicionado entre as versões 2013 e 2015, que tem a ver com os processos, em que estes podem ser divididos em fases (stages) e passos (steps).

image

Começando pelo Xrm.Page.ui.process, onde conseguimos controlar a visibilidade e colocar expandida ou recolhida:

Xrm.Page.ui.process.setDisplayState("collapsed");
Xrm.Page.ui.process.setVisible(false);

image

image

Podemos ver o comportamento com cada um dos código individualmente executados. Para além de definirmos, podemos ver o estado:

//Pode retornar "collapsed" ou "expanded"
Xrm.Page.ui.process.getDisplayState();
 
//Devolve true ou false mediante estar visível ou não
Xrm.Page.ui.process.getVisible();

Passando para o Xrm.Page.data.process, vamos saber qual é o processo selecionado, para isso vamos chamar o seguinte script:

var activeProcess = Xrm.Page.data.process.getActiveProcess();
Xrm.Utility.alertDialog(activeProcess.getId() + " - " + activeProcess.getName());

image

Como podemos ver na imagem temos o guid e o nome do processo que está ativo. Agora vamos forçar que o processo mude para o próximo ou anterior stage, com o seguinte código:

function onload()
    var activeProcess = Xrm.Page.data.process.getActiveProcess;
    if (activeProcess != null) {
        Xrm.Page.data.process.movePrevious(function (result) {
            ReadResult(result)
        });
    }
    
    var activeProcess = Xrm.Page.data.process.getActiveProcess();
    if (activeProcess != null) {
        Xrm.Page.data.process.moveNext(function (result) {
            ReadResult(result)
        });
    }
}
 
function ReadResult(result){
    if (result == "success") {
        Xrm.Utility.alertDialog("Funciona");
    } else {
        Xrm.Utility.alertDialog("Temos um problema");
    }
}

image

Na imagem vemos o que aconteceu quando tentamos ir para o próximo stage do nosso processo. Aqui dá um problema porque para avançar a Lead é necessário Qualificar, ou seja, necessita de uma oportunidade criada.

Neste momento temos estado a mexer no processo que está selecionado. Mas uma das funcionalidades mais interessantes é o utilizador poder mudar de processo, então como posso eu mudar de processo com código? Vamos começar por obter todos os processos que um utilizador pode mudar, com o seguinte código:

Xrm.Page.data.process.getEnabledProcesses(function (processes) {
    for (var processId in processes) {
        Xrm.Utility.alertDialog("id: " + processId + " name: " + processes[processId]);
    }
});

image

image

Com um Id do processo que quero mudar, posso mudar com o seguinte código:

Xrm.Page.data.process.setActiveProcess("c0d9760e-b261-4a3b-8355-f75eb45b9c1c", function(result) {
    if(result == "success") {
     alert("Success");
    } else {
     alert("Invalid");
    }
});

image

Em relação a apenas a parte do processo é tudo, no próximo artigo falarei, sobre os Stages.

 

Até a próxima

Tags: , ,

Add comment

  Country flag

biuquote
  • Comment
  • Preview
Loading

About

Muito bem casado, Pai babado e um gosto muito grande pela tecnologia.

Tenho um lema "Sharing is Learning"

Mais aqui -> http://www.psazevedo.com

Month List