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.


#--------------------------------#
FUNCTION vdp10000_create_process()
#--------------------------------#
    DEFINE la_html   ARRAY[1] OF
                     RECORD
                         name CHAR(50),
                         code TEXT
                     END RECORD
    
    DEFINE la_states ARRAY[3] OF
                     RECORD
                         name           CHAR(050),
                         description    CHAR(100),
                         instruction    CHAR(200),
                         deadline       INTEGER,
                         attribution    INTEGER,
                         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