Árvore de páginas

Versões comparadas

Chave

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

CONTEÚDO

Índice
minLevel2


01. Objetivos


As procedures da API foram desenvolvidas para que seja possível invocar determinados comportamentos do produto ECM através de programas Progress.

02. 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:
    • Nome do servidor.
    • Porta do servidor.
    • Contexto em que a aplicação de ECM foi instalada (normalmente o contexto é "webdesk").
  • Alterar o fonte a seguir com as informações do servidor
Bloco de código
languageyml
linenumberstrue
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$".

03. Detalhamento das procedures


Expandir
titleVisualizar Procedure 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
usernameInputCharacterUsuário de integração
passwordInputCharacterSenha do usuário de integração
companyIdInputIntegerCódigo da empresa
processInstanceIdInputIntegerCódigo do processo
stateSequenceInputIntegerCódigo do estado
actualThreadOutputIntegerCódigo da thread referente a este estado


Exemplo: 

Bloco de código
languageruby
themeEclipse
linenumberstrue
/******************************************************************/
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.

Expandir
titleVisualizar Procedure 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
usernameInputCharacterUsuário de integração
passwordInputCharacterSenha do usuário de integração
companyIdInputIntegerCódigo da empresa
processIdInputCharacterNome do processo
processInstanceIdInputIntegerCódigo do processo
threadSequenceInputIntegerCódigo da thread
statesOutputInteger EXTENTLista com os possíveis estados


Exemplo: 

Bloco de código
languageruby
themeEclipse
linenumberstrue
/******************************************************************/
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.
  
Expandir
titleVisualizar Procedure 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
usernameInputCharacterUsuário de integração
passwordInputCharacterSenha do usuário de integração
companyIdInputIntegerCódigo da empresa
processInstanceIdInputIntegerCódigo do processo
chooseStateInputIntegerCódigo do estado destino
processIdInputCharacterNome do processo
commentsInputCharacterComentários da movimentação
usrIdInputCharacter
attacmentsInputLongcharAnexo
cardDataInputLongchar
colleaguesInputCharacter***** (separados por virgula)
managerModeInputLogical
threadSequenceInputIntegerCódigo da thread
ecmIDOutputIntegerId resultante pelo ECM
resultXMLOutputCharacterXML resultante da operação


Exemplo: 

Bloco de código
languageruby
themeEclipse
linenumberstrue
/******************************************************************/
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.

  
Expandir
titleVisualizar Procedure 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
usernameInputCharacterUsuário de integração
passwordInputCharacterSenha do usuário de integração
companyIdInputIntegerCódigo da empresa
processIdInputCharacterNome do processo
processInstanceIdInputIntegerCódigo do processo
stateSequenceInputIntegerCódigo do estado destino
commentsInputCharacterComentários da movimentação
usrIdInputCharacter
colleaguesInputCharacter***** (separados por virgula)
managerModeInputLogical
ecmIDOutputIntegerId resultante pelo ECM
resultXMLOutputCharacterXML resultante da operação


Exemplo: 

Bloco de código
languageruby
themeEclipse
linenumberstrue
/******************************************************************/ 
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.

Expandir
titleVisualizar Procedure startProcess

Objetivo: 

Parâmetros: 

ParâmetroI/OTipo de DadoConteúdo
usernameInputCharacterUsuário de integração
passwordInputCharacterSenha do usuário de integração
companyIdInputIntegerCódigo da empresa
processIdInputCharacterNome do processo
commentsInputCharacterComentários da movimentação
usrIdInputCharacter
attachmentsInputLongcharAnexo
cardDataInputLongchar
colleaguesInputCharacter***** (separados por virgula)
ecmIDOutputIntegerId resultante pelo ECM
resultXMLOutputCharacterXML resultante da operação


Exemplo: 

Bloco de código
languageruby
themeEclipse
linenumberstrue
/******************************************************************/
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.


04. Exemplos


Expandir
titleVisualizar Criando uma tarefa

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

Exemplo: 

Bloco de código
languageruby
themeEclipse
linenumberstrue
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    ).
Expandir
titleVisualizar Movimentando uma tarefa

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

Exemplo: 

Bloco de código
languageruby
themeEclipse
linenumberstrue
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        ).