Páginas filhas
  • 4.1. Criação de processos

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

Índice

No Fluig é possível utilizar processos que efetuam integração com o Logix. Estes processos são criados utilizando o Fluig Studio, para saber mais sobre esta ferramenta consulta a documentação em: Fluig Studio. Abaixo pode ser encontrado a documentação para a criação de um processo utilizando eventos padrões disponíveis.

Índice
maxLevel2
outlinetrue
exclude1


Script padrão Logix

Para os workflows que necessitem execução de zoom Logix é necessário incluir ao final do HTML o script wfLogixUtil.js e exportar o arquivo Javascript junto ao formulário.

Bloco de código
themeEclipse
languagehtml/xml
<body>
    <!-- Código HTML -->
    <script src="wfLogixUtil.js"></script>
</body>


Estilo padrão

Os estilos dos formulários HTML devem seguir o padrão do guia de estilo do Fluig encontrado no link http://style.fluig.com.


Zooms

Para atribuir zooms aos campos é necessário incluir no elemento o atributo data com as informações do zoom no formato JSON string.

Bloco de código
themeEclipse
languagejavascript
{
    "zoom": {

Para a criação de um novo workflow é necessário desenvolver um formulário HTML e publicá-lo utilizando a função WfCard. Após realizada a publicação, utilizar a função WfProcess com o formulário informado para criar o workflow e definir suas atividades, atribuir responsáveis, adicionar eventos e propriedades específicas. Abaixo segue um exemplo de código fonte para a criação de workflows.

Bloco de código
languagenone
#--------------------------------#
FUNCTION vdp10000_create_process()
#--------------------------------#
    DEFINE la_html   ARRAY[1] OF
                     RECORD
                         name CHAR(50)"name": "zoom_item",
                         code TEXT"selection": [
                     END RECORD
    
    DEFINE la_states ARRAY[3] OF["cod_item_compon","cod_item"],
                     RECORD
                         name           CHAR(050),["den_item","den_item_reduz"]
                         description    CHAR(100)],
                         instruction    CHAR(200),"whereclause": {
                         deadline       INTEGER"fn": "setWhereClause",
                         attribution    INTEGER,"args": ["item"]
                         codattribution CHAR(100)}
                     END RECORD
 
    DEFINE l_form_id INTEGER
    DEFINE l_return  CHAR(100)
 
    LET la_html[1].name = 'clientes.html'
    LET la_html[1].code = _ADVPL_H_VDP10000()

    LET l_form_id = _ADVPL_WfCard('CLIENTES','Formulário de cadastro de clientes','Clientes',la_html)
 
    IF  l_form_id < 1 THEN
        CALL LOG_message(_ADVPL_WfGetError(1),'ERROR',_ADVPL_WfGetError(2),NULL,0)
        RETURN FALSE
    END IF
 
    LET la_states[1].name           = 'inicio'
    LET la_states[1].description    = 'Início'
    LET la_states[1].instruction    = 'Nesta tarefa é necessário informar os dados do cliente'
    LET la_states[1].deadline       = 0
    LET la_states[1].attribution    = 0
    LET la_states[1].codattribution = ''
 
    LET la_states[2].name           = 'revisao'
    LET la_states[2].description    = 'Revisão'
    LET la_states[2].instruction    = 'Nesta tarefa é necessário revisar as informações do cliente'
    LET la_states[2].deadline       = 0
    LET la_states[2].attribution    = 2
    LET la_states[2].codattribution = 'rubens'
 
    LET la_states[3].name           = 'efetivacao'
    LET la_states[3].description    = 'Efetivação'
    LET la_states[3].instruction    = 'Nesta tarefa ocorre a efetivação do cliente no ERP Logix'
    LET la_states[3].deadline       = 0
    LET la_states[3].attribution    = 0
    LET la_states[3].codattribution = ''
 
    LET l_return = _ADVPL_WfProcess('CLIENTES','Clientes','Processo de criação de clientes no ERP Logix.',l_form_id,la_states)
 
    IF  l_return THEN
        CALL LOG_message('Processo criado com sucesso!','INFO',NULL,NULL,0)
    ELSE
        CALL LOG_message(_ADVPL_WfGetError(1),'ERROR',_ADVPL_WfGetError(2),NULL,0)
    END IF
 
    RETURN l_return
END FUNCTION

...

}
}

As informações que devem ser atribuídas para o correto funcionamento do zoom são:

  • name: nome do zoom cadastrado no metadado Logix.
  • selection:
    • lista com os campos que serão carregados ao selecionar o registro no zoom, o primeiro item é o nome do campo do formulário e o segundo é o nome do campo no zoom do qual o primeiro item receberá o valor.
  • whereclause:
    • fn: função JavaScript que será executada quando o zoom for acionado para retornar o filtro SQL a ser considerado na apresentação dos registros do zoom.
    • args: lista com valores que serão passados como parâmetros para a função definida no atributo fn.

Nota

Além das informações do zoom acima é necessário incluir nos elementos o atributo data-input-zoom
para que seja possível identificar quais campos possuirão zoom.


Exemplo
Bloco de código
themeEclipse
languagehtml/xml
<div>
    <label for="cod_item_compon">Componente atual:</label>
    <input type="text" name="cod_item_compon" data='{"zoom":{"name":"zoom_item","selection":[["cod_item_compon","cod_item"],["den_item","den_item_reduz"]],"whereclause":{"fn":"setWhereClause","args":["item"]}}}' data-input-zoom>
</div>


Zoom em formulários Pai x Filho

Em formulários Pai Filho os campos filhos são criados dinamicamente e consequentemente o comportamento destes campos não segue o mesmo padrão dos outros campos do formulário. Para solucionar este problema é recomendável seguir os passos abaixo:

1. Criar o botão e evento de inclusão de campos filhos manualmente

    • Para isto deve-se incluir no elemento de tabela do formulário o atributo noaddbutton com o valor true;
    • Na ação do botão, informar o evento addItem enviando por parâmetro o nome da tabela filha.


Exemplo
Bloco de código
themeEclipse
languagehtml/xml
<div>
    <input type="button" onclick="addItem('itens');" value="Adicionar item"/>
</div>

<table noaddbutton="true" tablename="itens">
    <!-- Código HTML -->
</table>


2. Criar o evento JavaScript para incluir e alterar o estilos dos campos filhos

    • Para incluir novos itens filhos, utilizar a função padrão wdkAddChild passando por parâmetro o nome definido no atributo tablename;
    • O evento wdkAddChild irá criar os itens filhos e retornar o número da linha criada;
    • Após, executar a função initLogixHtml passando um objeto com o número da linha e o nome da tabela definido no atributo tablename.


Exemplo
Bloco de código
themeEclipse
languagejavascript
function addItem(tablename) {
    var row = wdkAddChild(tablename);
    initLogixHtml({ "tablename": tablename, "row": row });
}

Seguindo os passos acima, os itens filhos irão se comportar normalmente assim como o restante dos campos do formulário.

 

Defindo o código da empresa

Para utilizar as rotinas do Logix a partir do workflow é necessário que haja o código da empresa que será utilizada na rotina. Para isso, deve criar um campo no formulário onde será informado o código da empresa e incluir para este campo o atributo data-cod-empresa. O valor informado no campo que possuir este atributo será considerado o código da empresa na rotina durante a execução.

Exemplo
Bloco de código
themeEclipse
languagehtml/xml
<div>
    <label for="cod_empresa">Empresa:</label>
	<input type="text" name="cod_empresa" data='{"zoom":{"name":"zoom_empresa","selection":[["cod_empresa","cod_empresa"],["den_empresa","den_empresa"]]}}' data-cod-empresa data-input-zoom>
</div>


Anexos