Pegando valor do Sub-processo

Tenho um processo X que deve chamar o sub-processo Y num determinado momento, terminado o sub-processo y, o processo x passa para a proxima atividade...

Preciso que o processo x pegue o "numero da solicitação" do sub-processo gerado e inclua num input dizendo que o sub-processo esta concluido...!

fluxo.png

displayFields:


function displayFields(form,customHTML){
    var activity = getValue('WKNumState');
    var nsol = getValue('WKNumProces');

    if (activity == 3 || activity == 0) { //inicio
        form.setValue('num_sol', getValue('WKNumProces'));
        if (nsol == 0){ form.setValue('num_sol', "Aguardando");}
        form.setValue('nome_sol', getValue('WKUser'));
        preencheSolicitante(form,customHTML);
    }
    if (activity == 7) { //planejar vide imagem
        form.setValue('num_sol', getValue('WKNumProces'));
        form.setEnabled('setor_sol', false);
        form.setEnabled('data_sol', false);
        form.setEnabled('desc_res', false);
        form.setEnabled('equipol', false);
        form.setEnabled('ramal', false);
        customHTML.append("<script>document.getElementById('icdata').style.display = 'none';</script>");
    }
    if (activity == 14) { //finalizar vide imagem
        form.setEnabled('setor_sol', false);
        form.setEnabled('data_sol', false);
        form.setEnabled('desc_res', false);
        form.setEnabled('equipol', false);
        form.setEnabled('ramal', false);
        customHTML.append("<script>document.getElementById('icdata').style.display = 'none';</script>");
        customHTML.append("<script>SubProcesso();</script>");
    }

HTML do numero da solicitação


<div class="form-field" data-field-name="num_sol" data-show-properties="">
                                <div class="form-input">
                                <div class="form-group">
                                    <label>Número da Solicitação</label>
                                    <input name="num_sol" class="form-control" type="text" placeholder="" value=""  analytics="true" gooddataid="1" id="num_sol" readonly>
                                </div></div></div>

Função ajustada


function SubProcesso(){
                // pega o numero da solicitacao do processo principal que esta armazenada no campo 'nr_solicitacao_processo_principal' do formulario
                var nr_solicitacao_processo_principal = document.getElementById("num_sol").value;
                var c1 = DatasetFactory.createConstraint("sourceProcess",nr_solicitacao_processo_principal, nr_solicitacao_processo_principal, ConstraintType.MUST);
                var constraints = new Array(c1);
                var dataset = DatasetFactory.getDataset("workflowProcess",null, constraints, null);

                var registro = dataset.values;
                var num_solicitacao_sub_processo = registro[0].processInstanceId; // pega o retorno do dataset, que traz o numero da solicitacao do subprocesso

                document.getElementById("num_req").value = num_solicitacao_sub_processo;
            }

:warning: Atenção: Esta publicação foi transferida automaticamente do fórum antigo, mas os anexos não foram incluídos.

@Arnaldo, vc fazer essa consulta no dataset workflowProcess, onde a coluna 'sourceProcess' é o numero da solicitação processo principal, e a coluna 'processInstancedId' é o numero da solicitação do subprocesso.



function retornaNumSolicitacaoSubProcesso(){

        // pega o numero da solicitacao do processo principal que esta armazenada no campo 'nr_solicitacao_processo_principal' do formulario
        var nr_solicitacao_processo_principal = document.getElementById("nr_solicitacao_processo_principal").value;

        var c1 = DatasetFactory.createConstraint("sourceProcess",nr_solicitacao_processo_principal, nr_solicitacao_processo_principal, ConstraintType.MUST);
        var constraints = new Array(c1);
        var dataset = DatasetFactory.getDataset("workflowProcess",null, constraints, null);

        var registro = dataset.values;
        var num_solicitacao_sub_processo = registro[0].processInstanceId; // pega o retorno do dataset, que traz o numero da solicitacao do subprocesso

        alert("Numero solicitacao sub processo é: " + num_solicitacao_sub_processo);
    }

vc precisa adicionar essa biblioteca no seu formulário:



<script src="http://ip_fluig:porta/webdesk/vcXMLRPC.js"></script>

a funcao citada na resposta acima é colocada no javascript do seu formulário, e pode ser chamada no evento display fields da seguinte forma:



customHTML.append('$(function(){');
customHTML.append("retornaNumSolicitacaoSubProcesso();");
customHTML.append('});');

Então, (visto a imagem que mandei) quando chego na atividade “finalizar”, eu adicionei essa programação mas não apresenta nada no input “num_req”.


function showNewDatasetFull() {
    var div = document.getElementById("num_req");
     
    //Busca o dataset
    try {
        var dataset = DatasetFactory.getDataset("processInstanceId");
        div.innerHTML = showDataset(dataset);
    } catch(erro) {
        div.innerHTML = erro;
    }
}

O que há de errado?

editei minha resposta com uma função que retorna o numero da solicitação do subprocesso

Esta função é para ir no displayfields?

Ele apresenta erro… acredito que deve ser na linha abaixo…


        var nr_solicitacao_processo_principal = document.getElementById("nr_solicitacao_processo_principal").value;

Não precisa incluir nenhum biblioteca a mais não?

editei minha resposta com os codigos necessarios

Ja havia adicionado a biblioteca mas não to conseguindo fazer chamar a função no displayfields… passa direto… tentei incluir “” mais não chama…

posta aqui o codigo completo do seu display fields

Robson, consegui fazer funcionar a função, estava faltando o id…mais agora ta retornando o alerta como “Numero solicitacao sub processo é: undefined”… mesmo código

qual é o nome do campo do formulário que vc armazena o numero da solicitação do processo pai?

editei a pergunta

Robson, tive que fazer alguns ajustes na sua resposta e a função adicionei no displayField e funcionou... obrigado


function displayFields(form,customHTML){
    var activity = getValue('WKNumState');
    var nsol = getValue('WKNumProces');

    if (activity == 3 || activity == 0) {
        form.setValue('num_sol', getValue('WKNumProces'));
        if (nsol == 0){ form.setValue('num_sol', "Aguardando");}
        form.setValue('nome_sol', getValue('WKUser'));
        preencheSolicitante(form,customHTML);
    }
    if (activity == 7) {
        form.setValue('num_sol', getValue('WKNumProces'));
        form.setEnabled('setor_sol', false);
        form.setEnabled('data_sol', false);
        form.setEnabled('desc_res', false);
        form.setEnabled('equipol', false);
        form.setEnabled('ramal', false);
        customHTML.append("<script>document.getElementById('icdata').style.display = 'none';</script>");
    }
    if (activity == 14) {
        form.setEnabled('setor_sol', false);
        form.setEnabled('data_sol', false);
        form.setEnabled('desc_res', false);
        form.setEnabled('equipol', false);
        form.setEnabled('ramal', false);
        customHTML.append("<script>document.getElementById('icdata').style.display = 'none';</script>");
        SubProcesso();
    }

    function SubProcesso(){

        var nr_solicitacao_processo_principal = getValue('WKNumProces');
        var c1 = DatasetFactory.createConstraint("sourceProcess", nr_solicitacao_processo_principal, nr_solicitacao_processo_principal, ConstraintType.MUST);
        var constraints = new Array(c1);
        var dataset = DatasetFactory.getDataset("workflowProcess", null, constraints, null);

        form.setValue("num_req",dataset.getValue(0, "workflowProcessPK.processInstanceId"));
    }
}