BlackTDN Search

segunda-feira, 13 de setembro de 2010

Protheus :: RPCSetEnv vs PREPARE ENVIRONMET vs WFPrepEnv

"Ola, Naldo...
como vc postou muita coisa sobre WS gostaria de saber qual diferença (se é q tem diferença) entre as funções a seguir:

RpcSetEnv, Prepare Environment, WfPrepEnv e RPCSetType.

[]´s e parabéns pelo Blog. É fantástico.

Marcelo Vicente"

PREPARE ENVIRONMENT é um "Comando Definido Pelo Usuário" ou, usando a sua sigla em Ingês "UDC", que está definido no arquivo de cabeçalho (Clipper Header) "TBICONN.CH". No processo de compilação do Programa o "pré-processador" irá substituir o Comando pela real instrução que poderá ser:

RpcSetEnv(...) ou oEnvSrv:CallProc(...). A segunda opção vai depender da Cláusula SERVER. Então podemos afirmar que PREPARE ENVIRONMET e RpcSetEnv() ou oEnvSrv:CallProc() são, para o compilador, a mesma coisa.

WFPrepEnv() é uma função em ADVPL criada para "preparar o ambiente" para o "WorkFlow do Protheus" que faz alguns tratamentos extras, mas que, no final das contas, também fará referência a PREPARE ENVIRONMENT e conseqüentemente a RpcSetEnv() ou oEnvSrv:CallProc().

Por final, RPCSetType() não "prepara o ambiente". A sua função é passar alguma informação para o Server sobre a "Remote Procedure Call" a ser executada. Normalmente utiliza-se RPCSetType(3) para informar ao Server que a RPC não consumirá licenças (mas não sei se de fato isso funciona).

[]
иαldσ dj

5 comentários:

  1. Naldo
    Apesar do atraso na pergunta, gostaria de saber como usar a função Pergunte em uma rotina que tenha sido invocada usando RpcSetEnv de modo que os parâmetros para entrada do usuário sejam exibidos.

    ResponderExcluir
    Respostas
    1. Por padrão RPCSetEnv é executado em modo Blind. Então, se quer forçar o sistema a apresentar as perguntas mesmo que nesse modo, altere o conteúdo da variável Pública __cInterNet de "Automatico" para __cInterNet := NIL.

      Excluir
  2. Naldo, boa tarde.

    Sei que o post é antigo, mas gostaria de saber o seguinte.

    Quando uso esse método, para abrir minha rotina sem que o usuario tenha que fazer login, eu percebo que a aparência do sistema, fica diferente, fica mais 'flat' e os campos desabilitador por exemplo não ficam com fundo 'cinza'. Os botões desabillitados tambem ficam 'estranhos.

    Gostaria de saber se isso tem algo a ver com o tema, que utilizamos p10 e como entro sem escolher o tema, talvez ele esteja entrando com o tema antigo?

    Ou se não tem nada a ver, e o motivo é outro?

    Desde já, agradeço a atenção.

    ResponderExcluir
  3. Gostaria de saber, eu tenho uma rotina que tem um botão que chama uma rotina padrão, no entanto como estou chamando a rotina padrão dentro de uma outra rotina que já possui uma oDlg, essa rotina padrão (Ex: MATA300) abre dentro da minha oDlg. Alguém conhece alguma função para abrir uma outra (aba) para essa rotina padrão, ao invés de abrir na janela ativa?

    ResponderExcluir
    Respostas
    1. Altere o nome da sua variável oDlg para outra coisa. Ex.: oDlgCustom

      Excluir