Manual de integração ECM através do Progress

Objetivo

Desenvolvida para que seja possível invocar determinados comportamentos do produto ECM através de programas Progress.

Pré-requisitos

Para que a integração entre ECM e Progress seja realizada é necessário que a tabela configur, contenha os dados referente a conexão com o servidor do ECM.

Para realizar essa configuração é necessário saber:

  1. Nome do servidor
  2. Porta do servidor
  3. Contexto em que a aplicação do ECM foi instalado (normalmente o contexto é “webdesk”)

Altere o código abaixo com as informações do servidor:

CREATE configur.
ASSIGN
    configur.idi_dtsul = NEXT-VALUE(seq_configur)
    configur.idi_dtsul_usuar_mestre = 0
    configur.nom_configur = "ecmServer"
    configur.des_val_configur = "$nome_do_servidor$".
   
CREATE configur.
ASSIGN
    configur.idi_dtsul = NEXT-VALUE(seq_configur)
    configur.idi_dtsul_usuar_mestre = 0
    configur.nom_configur = "ecmPort"
    configur.des_val_configur = "$porta_do_servidor$".   
   
CREATE configur.
ASSIGN
    configur.idi_dtsul = NEXT-VALUE(seq_configur)
    configur.idi_dtsul_usuar_mestre = 0
    configur.nom_configur = "ecmContext"
    configur.des_val_configur = "$nome_do_contexto$".


Detalhamento das Procedures

getActualThread

Objetivo

Tem por objetivo retornar para um determinado processo e estado o número corrente da thread. Esse é necessário pois toda e qualquer movimentação é feita através do número do processo e thread e não através do estado.

Parâmetros

ParâmetroI/OTipo de DadoConteúdo

username

Input

Character

Usuário de integração

password

Input

Character

Senha do usuário de integração

companyId

Input

Integer

Código da empresa

processInstanceId

Input

Integer

Código do processo

stateSequence

Input

Integer

Código do estado

actualThread

Output

Integer

Código da thread referente a este estado

Exemplo

/******************************************************************/
DEFINE VARIABLE username			AS CHARACTER   NO-UNDO.
DEFINE VARIABLE password			AS CHARACTER   NO-UNDO.
DEFINE VARIABLE companyId			AS INTEGER     NO-UNDO.
DEFINE VARIABLE processInstanceId	AS INTEGER     NO-UNDO.
DEFINE VARIABLE nmrAtividade		AS INTEGER     NO-UNDO.
DEFINE VARIABLE actualThread		AS INTEGER     NO-UNDO.
DEFINE VARIABLE hConn				AS HANDLE      NO-UNDO.

ASSIGN 
	username          = “usuario”
	password          = “senha”
	companyId         = 1
	processInstanceId = 204
	nmrAtividade      = 6.

Run “conn-ecm.p” PERSISTENT SET hConn.

RUN getActualThread in hConn (INPUT  username  , 
                     INPUT  password           , 
                     INPUT  companyId          , 
                     INPUT  processInstanceId  , 
                     INPUT  nmrAtividade       , 
                     OUTPUT actualThread       ).  

MESSAGE “Thread atual ” actualThread
    VIEW-AS ALERT-BOX INFO BUTTONS OK.


getAvailableStates

Objetivo

Tem por objetivo retornar uma lista com os estados que a thread corrente pode ser direcionada.

Parâmetros

ParâmetroI/OTipo de DadoConteúdo

username

Input

Character

Usuário de integração

password

Input

Character

Senha do usuário de integração

companyId

Input

Integer

Código da empresa

processId

Input

Character

Nome do processo

processInstanceId

Input

Integer

Código do processo

threadSequence

Input

Integer

Código da thread

states

Output

Integer EXTENT

Lista com os possíveis estados

Exemplo

/******************************************************************/
DEFINE VARIABLE username              AS CHARACTER   NO-UNDO.
DEFINE VARIABLE password              AS CHARACTER   NO-UNDO.
DEFINE VARIABLE companyId             AS INTEGER     NO-UNDO.
DEFINE VARIABLE processId             AS CHARACTER   NO-UNDO.
DEFINE VARIABLE processInstanceId     AS INTEGER     NO-UNDO.
DEFINE VARIABLE threadSequence        AS INTEGER     NO-UNDO.
DEFINE VARIABLE states                AS INTEGER     NO-UNDO EXTENT.
DEFINE VARIABLE hConn                 AS HANDLE      NO-UNDO.

ASSIGN
    username          = “usuario”
    password          = “senha”
    companyId         = 1
    processId         = "teste_3"
    processInstanceId = 204
    threadSequence    = 6.

Run “utp/ut-integra-ecm.p” PERSISTENT SET hConn.

RUN getAvailableStates IN hConn (INPUT username, 
                                 INPUT password, 
                                 INPUT companyId, 
                                 INPUT processId, 
                                 INPUT processInstanceId, 
                                 INPUT threadSequence, 
                                 OUTPUT states).

MESSAGE “Estados disponiveis ” EXTENT(states)
    VIEW-AS ALERT-BOX INFO BUTTONS OK.


saveAndSendTask

Objetivo

Tem por objetivo realizar alterações nas informações de uma atividade do processo e também submetê-la para outra atividade.

Parâmetros

ParâmetroI/OTipo de DadoConteúdo

username

Input

Character

Usuário de integração

password

Input

Character

Senha do usuário de integração

companyId

Input

Integer

Código da empresa

processInstanceId

Input

Integer

Código do processo

choosedState

Input

Integer

Código do estado destino

processId

Input

Character

Nome do processo

comments

Input

Character

Comentários da movimentação

usrId

Input

Character


attacments

Input

Longchar

Anexo

cardData

Input

Longchar


colleagues

Input

Character

***** (separados por virgula)

managerMode

Input

Logical


threadSequence

Input

Integer

Código da thread

ecmID

Output

Integer

Id resultante pelo ECM

resultXML

Output

Character

XML resultante da operação

Exemplo

/******************************************************************/
DEFINE VARIABLE username              AS CHARACTER   NO-UNDO.
DEFINE VARIABLE password              AS CHARACTER   NO-UNDO.
DEFINE VARIABLE companyId             AS INTEGER     NO-UNDO.
DEFINE VARIABLE processInstanceId     AS INTEGER     NO-UNDO.
DEFINE VARIABLE choosedState          AS INTEGER     NO-UNDO.
DEFINE VARIABLE processId             AS CHARACTER   NO-UNDO.
DEFINE VARIABLE comments              AS CHARACTER   NO-UNDO.
DEFINE VARIABLE usrId                 AS CHARACTER   NO-UNDO.
DEFINE VARIABLE attacments            AS LONGCHAR    NO-UNDO.
DEFINE VARIABLE cardData              AS LONGCHAR    NO-UNDO.
DEFINE VARIABLE colleagues            AS CHARACTER   NO-UNDO.
DEFINE VARIABLE managerMode           AS LOGICAL     NO-UNDO.
DEFINE VARIABLE threadSequence        AS INTEGER     NO-UNDO.
DEFINE VARIABLE ecmID                 AS INTEGER     NO-UNDO.
DEFINE VARIABLE resultXML             AS CHARACTER   NO-UNDO.
DEFINE VARIABLE hConn                 AS HANDLE      NO-UNDO.

ASSIGN
    username          = “usuario”
    password          = “senha”
    companyId         = 1
    processInstanceId = 204
    choosedState      = 2
    processId         = "teste_3"
    comments          = “Comentário para a movimentação”
    usrId             = “usuario”
    colleagues        = “usuario1,usuario2,usuario3”
    threadSequence    = 6.

Run “utp/ut-integra-ecm.p” PERSISTENT SET hConn.
RUN saveAndSendTask IN hConn (INPUT username          , 
                              INPUT password          , 
                              INPUT companyId         , 
                              INPUT processInstanceId , 
                              INPUT choosedState      , 
                              INPUT processId         , 
                              INPUT comments          , 
                              INPUT usrId             , 
                              INPUT attacments        , 
                              INPUT cardData          , 
                              INPUT colleagues        , 
                              INPUT managerMode       , 
                              INPUT threadSequence    , 
                              OUTPUT ecmID            , 
                              OUTPUT resultXML        ).

MESSAGE “ECM ID ” ecmID SKIP
        “XML resultante ” resultXML
    VIEW-AS ALERT-BOX INFO BUTTONS OK.


sendTaskByActivityNmr

Objetivo

Tem por objetivo disponibilizar um meio de movimentar a atividade do processo tendo apenas o numero do estado corrente como informação.

Parâmetros

ParâmetroI/OTipo de DadoConteúdo

username

Input

Character

Usuário de integração

password

Input

Character

Senha do usuário de integração

companyId

Input

Integer

Código da empresa

processId

Input

Character

Nome do processo

processInstanceId

Input

Integer

Código do processo

stateSequence

Input

Integer

Código do estado destino

comments

Input

Character

Comentários da movimentação

usrId

Input

Character


colleagues

Input

Character

***** (separados por virgula)

managerMode

Input

Logical


ecmID

Output

Integer

Id resultante pelo ECM

resultXML

Output

Character

XML resultante da operação

Exemplo

/******************************************************************/
DEFINE VARIABLE username              AS CHARACTER   NO-UNDO.
DEFINE VARIABLE password              AS CHARACTER   NO-UNDO.
DEFINE VARIABLE companyId             AS INTEGER     NO-UNDO.
DEFINE VARIABLE processId             AS CHARACTER   NO-UNDO.
DEFINE VARIABLE processInstanceId     AS INTEGER     NO-UNDO.
DEFINE VARIABLE stateSequence         AS INTEGER     NO-UNDO.
DEFINE VARIABLE comments              AS CHARACTER   NO-UNDO.
DEFINE VARIABLE usrId                 AS CHARACTER   NO-UNDO.
DEFINE VARIABLE colleagues            AS CHARACTER   NO-UNDO.
DEFINE VARIABLE managerMode           AS LOGICAL     NO-UNDO.
DEFINE VARIABLE ecmId                 AS INTEGER     NO-UNDO.
DEFINE VARIABLE resultXML             AS CHARACTER   NO-UNDO.
DEFINE VARIABLE hConn                 AS HANDLE      NO-UNDO.

ASSIGN
    username          = “usuario”
    password          = “senha”
    companyId         = 1
    processId         = "teste_3"
    processInstanceId = 204
    stateSequence     = 2
    comments          = “Comentário para a movimentação”
    usrId             = “usuario”
    colleagues        = “usuario1,usuario2,usuario3”
    managerMode       = TRUE.

Run “utp/ut-integra-ecm.p” PERSISTENT SET hConn.

ASSIGN

RUN sendTaskByActivityNmr IN hConn (
                            INPUT  username          ,   
                            INPUT  password          ,   
                            INPUT  companyId         ,   
                            INPUT  processId         ,   
                            INPUT  processInstanceId ,   
                            INPUT  stateSequence     ,   
                            INPUT  comments          ,   
                            INPUT  usrId             ,   
                            INPUT  colleagues        ,   
                            INPUT  managerMode       ,   
                            OUTPUT ecmId             ,   
                            OUTPUT resultXML         ).   

MESSAGE “ECM ID ” ecmId SKIP
        “XML resultante ” resultXML
    VIEW-AS ALERT-BOX INFO BUTTONS OK.


startProcess

Objetivo

Tem por objetivo disponibilizar um meio de criar um processo de workflow.

Parâmetro 

ParâmetroI/OTipo de DadoConteúdo

username

Input

Character

Usuário de integração

password

Input

Character

Senha do usuário de integração

companyId

Input

Integer

Código da empresa

processId

Input

Character

Nome do processo

comments

Input

Character

Comentários da movimentação

usrId

Input

Character


attacments

Input

Longchar

Anexo

cardData

Input

Longchar


colleagues

Input

Character

***** (separados por virgula)

ecmID

Output

Integer

Id resultante pelo ECM

resultXML

Output

Character

XML resultante da operação

Exemplo

/******************************************************************/
DEFINE VARIABLE username              AS CHARACTER   NO-UNDO.
DEFINE VARIABLE password              AS CHARACTER   NO-UNDO.
DEFINE VARIABLE companyId             AS INTEGER     NO-UNDO.
DEFINE VARIABLE processId             AS CHARACTER   NO-UNDO.
DEFINE VARIABLE comments              AS CHARACTER   NO-UNDO.
DEFINE VARIABLE usrId                 AS CHARACTER   NO-UNDO.
DEFINE VARIABLE attachments           AS LONGCHAR    NO-UNDO.
DEFINE VARIABLE cardData              AS LONGCHAR    NO-UNDO.
DEFINE VARIABLE colleagues            AS CHARACTER   NO-UNDO.
DEFINE VARIABLE ecmId                 AS INTEGER     NO-UNDO.
DEFINE VARIABLE resultXML             AS CHARACTER   NO-UNDO.
DEFINE VARIABLE hConn                 AS HANDLE      NO-UNDO.

ASSIGN
    username          = “usuario”
    password          = “senha”
    companyId         = 1
    processId         = "teste_3"
    comments          = “Comentário”
    usrId             = “usuario”
    colleagues        = “usuario1,usuario2,usuario3”.

Run “utp/ut-integra-ecm.p” PERSISTENT SET hConn.

RUN startProcess IN hConn (INPUT  username          ,   
                           INPUT  password          ,   
                           INPUT  companyId         ,   
                           INPUT  processId         ,   
                           INPUT  comments          ,   
                           INPUT  usrId             ,   
                           INPUT  attachments       ,   
                           INPUT  cardData          ,   
                           INPUT  colleagues        ,   
                           OUTPUT ecmId             ,   
                           OUTPUT resultXML         ).   

MESSAGE “ECM ID ” ecmID SKIP
        “XML resultante ” resultXML
    VIEW-AS ALERT-BOX INFO BUTTONS OK.



Exemplos

Criando uma tarefa

Objetivo

Tem por objetivo iniciar um novo processo de workflow dentro do ECM.

Exemplo

DEFINE VARIABLE hConn           AS HANDLE      NO-UNDO.
DEFINE VARIABLE username        AS CHARACTER   NO-UNDO.
DEFINE VARIABLE password        AS CHARACTER   NO-UNDO.
DEFINE VARIABLE companyId       AS INTEGER     NO-UNDO.
DEFINE VARIABLE processId       AS CHARACTER   NO-UNDO.
DEFINE VARIABLE comments        AS CHARACTER   NO-UNDO.
DEFINE VARIABLE usrId           AS CHARACTER   NO-UNDO.
DEFINE VARIABLE attachments     AS LONGCHAR    NO-UNDO.
DEFINE VARIABLE cardData        AS LONGCHAR    NO-UNDO.
DEFINE VARIABLE colleagues      AS CHARACTER   NO-UNDO.
DEFINE VARIABLE ecmId           AS INTEGER     NO-UNDO.
DEFINE VARIABLE auxResult       AS CHARACTER   NO-UNDO.

RUN "utp/ut-integra-ecm.p" PERSISTENT SET hConn.

ASSIGN
    username            = "usuario"
    password            = "senha"
    companyId           = 1
    processId           = "teste_3"
    comments            = "Comentário de Criação"
    usrId               = "usuario1"
    colleagues          = "usuario2,usuario3,usuario4".

RUN startProcess IN hConn (
                        INPUT  username     ,
                        INPUT  password     ,
                        INPUT  companyId    ,
                        INPUT  processId    ,
						INPUT  comments     ,
                        INPUT  usrId        ,
                        INPUT  attachments  ,
                        INPUT  cardData     ,
                        INPUT  colleagues   ,
                        OUTPUT ecmId        ,
                        OUTPUT auxResult    ).

Movimentando uma tarefa

Objetivo

Tem por objetivo movimentar um processo de workflow dentro do ECM.

Exemplo

DEFINE VARIABLE hConn               AS HANDLE     NO-UNDO.
DEFINE VARIABLE username            AS CHARACTER  NO-UNDO.
DEFINE VARIABLE password            AS CHARACTER  NO-UNDO.
DEFINE VARIABLE companyId           AS INTEGER    NO-UNDO.
DEFINE VARIABLE processId           AS CHARACTER  NO-UNDO.
DEFINE VARIABLE processInstanceId   AS INTEGER    NO-UNDO.
DEFINE VARIABLE nmrAtividade        AS INTEGER    NO-UNDO.
DEFINE VARIABLE comments            AS CHARACTER  NO-UNDO.
DEFINE VARIABLE usrId               AS CHARACTER  NO-UNDO.
DEFINE VARIABLE colleagues          AS CHARACTER  NO-UNDO.
DEFINE VARIABLE managerMode         AS LOGICAL    NO-UNDO INIT TRUE.
DEFINE VARIABLE ecmId               AS INTEGER    NO-UNDO.
DEFINE VARIABLE auxResult           AS CHARACTER  NO-UNDO.

RUN "utp/ut-integra-ecm.p" PERSISTENT SET hConn.

ASSIGN
    username            = "usuario"
    password            = "senha"
    companyId           = 1
    processId           = "teste_3"
    comments            = "Comentário de Geração"
    usrId               = "usuario1"
    colleagues          = "usuario2,usuario3"
    processInstanceId   = 207
    nmrAtividade        = 3.

RUN sendTaskByActivityNmr IN hConn (
                            INPUT  username         ,   
                            INPUT  password         ,   
                            INPUT  companyId        ,   
                            INPUT  processId        ,   
                            INPUT  processInstanceId,   
                            INPUT  nmrAtividade     ,   
                            INPUT  comments         ,   
                            INPUT  usrId            ,   
                            INPUT  colleagues       ,   
                            INPUT  managerMode      ,   
                            OUTPUT ecmId            ,   
                            OUTPUT auxResult        ).





#trackbackRdf ($trackbackUtils.getContentIdentifier($page) $page.title $trackbackUtils.getPingUrl($page))