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:
- Nome do servidor
- Porta do servidor
- 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âmetro | I/O | Tipo de Dado | Conteú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âmetro | I/O | Tipo de Dado | Conteú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âmetro | I/O | Tipo de Dado | Conteú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âmetro | I/O | Tipo de Dado | Conteú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âmetro | I/O | Tipo de Dado | Conteú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))