Histórico da Página
...
Nota |
---|
OBS: Para testar os webservices deve-se utilizar um aplicativo que utilize protocolo Soap SOAP nas chamadas. Indicamos o SoapUI ou o “WS TOTVS Client” disponibilizado na pasta de instalação do RM. |
...
Obs: o campo “NOME_DATASERVER” é o ID obtido de acordo com o passo 2 “Localizando o serviço RM que deseja integrar”
function createDataset(fields, constraints, sortFields)
{
...
var NOME_DATASERVER = "FisEtdDataBR";
try
...
{
...
// carrega o webservice...
...
var authService = getWebService();
// monta o filtro...
...
var parsedConstraints = parseConstraints(constraints, true);
// faz a leitura...
...
var result = authService.readView(NOME_DATASERVER, parsedConstraints.filter, parsedConstraints.context);
// carrega o xml...
...
var xmlResultados = new XML(result);
// verifica se a tabela é válida...
...
if(xmlResultados.GETD == null){
...
return logError("A tabela GETD nao foi encontrada: " + NOME_SERVICO + " - " + CAMINHO_SERVICO);
...
}
// inicializa o dataset do resultado...
...
var dataset = DatasetBuilder.newDataset();
...
dataset.addColumn("DESCRICAO");
...
dataset.addColumn("CODETD");
// preenche o dataset...
...
for each(item in xmlResultados.GETD)
...
{
...
dataset.addRow(new Array(
...
item.DESCRICAO.toString()
...
, item.CODETD.toString()
...
));
...
}
// retorna...
...
return dataset;
...
}
...
catch (e)
...
{
...
if (e == null)
...
e = "Erro desconhecido!";
...
var mensagemErro = "Ocorreu um erro ao ler dados do RM: " + e;
...
return logError(mensagemErro);
...
}
}
function logError(mensagemErro)
{
...
var dataset = DatasetBuilder.newDataset();
...
dataset.addColumn("erro");
...
dataset.addRow(new Array(mensagemErro));
...
log.error(mensagemErro);
...
return dataset;
}
// carrega o web service
function getWebService(){
...
var NOME_SERVICO = "WSDATASERVER";
...
var CAMINHO_SERVICO = "com.totvs.WsDataServer";
var dataServerService = ServiceManager.getServiceInstance(NOME_SERVICO);
...
if(dataServerService == null){
...
throw "Servico nao encontrado: " + NOME_SERVICO;
...
}
...
...
var serviceLocator = dataServerService.instantiate(CAMINHO_SERVICO);
...
if(serviceLocator == null){
...
throw "Instancia do servico nao encontrada: " + NOME_SERVICO + " - " + CAMINHO_SERVICO;
...
}
var service = serviceLocator.getRMIwsDataServer();
...
...
if(service == null){
...
throw "Instancia do dataserver do invalida: " + NOME_SERVICO + " - " + CAMINHO_SERVICO;
...
}
var serviceHelper = dataServerService.getBean();
...
if(serviceHelper == null){
...
throw "Instancia do service helper invalida: " + NOME_SERVICO + " - " + CAMINHO_SERVICO;
...
}
var authService = serviceHelper.getBasicAuthenticatedClient(service, "com.totvs.IwsDataServer", 'mestre', 'totvs');
...
if(serviceHelper == null){
...
throw "Instancia do auth service invalida: " + NOME_SERVICO + " - " + CAMINHO_SERVICO;
...
}
...
...
return authService;
}
//Transforma o conceito de constraints do Fluig para o Filtro do TBC.
function parseConstraints(constraints, filterRequired)
{
...
// inicializa o resultado...
...
var result = [];
...
result.context = "";
...
...
// inicializa o filtro...
...
var filter = "";
...
...
// varre as contraints...
for
...
each(con in constraints) {
...
var fieldName = con.getFieldName().toUpperCase();
...
if (fieldName == "RMSCONTEXT")
...
{
...
result.context = con.getInitialValue();
...
continue;
...
}
...
...
filter += "(";
...
...
if (fieldName == "RMSFILTER")
...
{
...
filter += con.getInitialValue();
...
}
...
else
...
{
...
if (con.getInitialValue() == con.getFinalValue() || isEmpty(con.getFinalValue()))
...
{
...
filter += con.getFieldName();
...
var isLike = false;
...
switch(con.getConstraintType())
...
{
...
case ConstraintType.MUST:
...
filter += " = ";
...
break;
...
case ConstraintType.MUST_NOT:
...
filter += " = ";
...
break;
...
case ConstraintType.SHOULD:
...
filter += " LIKE ";
...
isLike = true;
...
break;
...
case ConstraintType.SHOULD_NOT:
...
filter += " NOT LIKE ";
...
isLike = true;
...
break;
...
}
...
filter += getFormattedValue(con.getInitialValue(), isLike);
...
}
...
else
...
{
...
filter += con.getFieldName();
...
filter += " BETWEEN ";
...
filter += getFormattedValue(con.getInitialValue(), false);
...
filter += " AND ";
...
filter += getFormattedValue(con.getFinalValue(), false);
...
}
...
}
...
...
filter += ") AND ";
...
}
if (filter.length == 0)
{
...
if(filterRequired){
...
filter = "1=2";
...
}
...
else{
filter = "1=1";
...
}
}
else
...
filter = filter.substring(0, filter.length-5);
// guarda o filtro...
result.filter = filter;
// retorna o resultado...
return result;
}
function isEmpty(str) {
return (!str || 0 === str.length);
}
function getFormattedValue(value, isLike){
...
if(isLike){
...
return "'%" + value + "%'";
...
}
...
else{
...
return "'" + value + "'";
...
}
}
...
...
Passo 2
Utilizar o serviço cadastrado nos pontos requeridos no escopo da integração.
...
Mais informações sobre customização Fluig podem ser obtidas em Customização de Workflow.
ERP RM acessando Fluig
O processo de integração do ERP SAP RM com o Fluig ocorre por chamada dos Web Services Fluig padrão SOA pelo ERP SAP.
Nota
Mais informações sobre os Web Services Fluig podem ser obtidas em Utilização de Web Services.
...