Localizando o serviço RM que deseja integrar Os serviços do RM são disponibilizados por três formas: Deck of Cards |
---|
| Card |
---|
id | Dataservers |
---|
label | Dataservers |
---|
title | Dataservers |
---|
| DataServers: Todos os CRUDS dos cadastros desenvolvidos na tecnologia .NET do RM são disponibilizados através do Web Services WsDataServer. Basicamente, oferece quatro métodos principais: - GetSchema: responsável por retornar o schema (XSD) do XML necessário para salvar um registro (saverecord).
- ReadView: responsável por efetuar a leitura do cadastro do RM e retornar um XML contendo registros de acordo com o contexto e o filtro informado.
- ReadRecord: responsável por efetuar a leitura do cadastro do RM e retornar um XML contendo registros de acordo com a chave primária e o contexto informado.
- SaveRecord: responsável por efetuar alterações de registros do cadastro do RM de acordo com o XML informado.
A lista de dataservers (com o ID) disponíveis pode ser obtido aqui ou usando a opção de localizar do aplicativo “TOTVS WS Client”
Nota |
---|
Importante: o passo 4 marca o nome do ID que deverá ser passado no parâmetro “DataServer” dos Web Services acima. |
|
|
Passo 3: Importando os arquivos dos aceleradores para o Fluig: Após salvar os arquivos, basta importar o arquivo “*.fluigprj” para dentro do seu projeto. Caso deseje fazer a integração manualmente, pode se fazer da seguinte forma: Fazendo a comunicação via “Web Services SOAP” do aplicativo. Neste tipo de integração utilizando Web Service padrão SOAP disponibilizado pelo ERP, o acesso do Fluig a estes serviços é direto. A seguir são apresentadas as configurações do Fluig para acesso ao Web Service padrão SOAP: Passo 1: Cadastrar um serviço do tipo Web Services dentro do Fluig pelo Fluig Studio (opção Incluir Serviços na aba Visualizar Serviços) apontando para WSDL doWeb Service SAP disponibilizado para integração. Nota: A criação de DataSets que consomem WebServices do RM pode ser obtidos modificando o template abaixo: Obs: o campo “NOME_DATASERVER” é o ID obtido de acordo com o passo 2 “Localizando o serviço RM que deseja integrar” function createDataset Bloco de código |
---|
language | js |
---|
theme | Eclipse |
---|
title | Criar Dataset |
---|
| function createDataset(fields, constraints, sortFields) | var NOME
var NOME_DATASERVER = "FisEtdDataBR"; |
try { // carrega o
try
{
// carrega o webservice... | var authService =
var authService = getWebService(); |
o var parsedConstraints =
var parsedConstraints = parseConstraints(constraints, | a var result =
var result = authService.readView(NOME_DATASERVER, parsedConstraints.filter, parsedConstraints.context); |
o var xmlResultados = new XML
var xmlResultados = new XML(result); |
a tabela é return logError
return logError("A tabela GETD nao foi encontrada: " + NOME_SERVICO + " - " + CAMINHO_SERVICO); |
} o dataset do o dataset do resultado... | var dataset =
var dataset = DatasetBuilder.newDataset(); |
dataset.addColumn("DESCRICAO"); |
dataset.addColumn("CODETD"); |
o for item xmlResultados { Array( Array(
item.DESCRICAO.toString() | , } return dataset; } catch
return dataset;
}
catch (e) |
{ if e = "Erro desconhecido!"; | var mensagemErro =
var mensagemErro = "Ocorreu um erro ao ler dados do RM: " + e; | return logError
return logError(mensagemErro); | logError var dataset =
var dataset = DatasetBuilder.newDataset(); |
dataset.addColumn("erro"); | Array return dataset; } // carrega o web service function getWebService(){ var NOME_SERVICO = "WSDATASERVER"; var CAMINHO_SERVICO =
return dataset;
}
// carrega o web service
function getWebService(){
var NOME_SERVICO = "WSDATASERVER";
var CAMINHO_SERVICO = "com.totvs.WsDataServer"; |
var dataServerService =
var dataServerService = ServiceManager.getServiceInstance(NOME_SERVICO); | throw
throw "Servico nao encontrado: " + NOME_SERVICO; |
} var serviceLocator =
}
var serviceLocator = dataServerService.instantiate(CAMINHO_SERVICO); | throw
throw "Instancia do servico nao encontrada: " + NOME_SERVICO + " - " + CAMINHO_SERVICO; |
} var service =
}
var service = serviceLocator.getRMIwsDataServer(); | throw
throw "Instancia do dataserver do invalida: " + NOME_SERVICO + " - " + CAMINHO_SERVICO; |
} var serviceHelper =
}
var serviceHelper = dataServerService.getBean(); | throw
throw "Instancia do service helper invalida: " + NOME_SERVICO + " - " + CAMINHO_SERVICO; |
} var authService =
}
var authService = serviceHelper.getBasicAuthenticatedClient(service, "com.totvs.IwsDataServer", 'mestre', 'totvs'); | throw
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 =
}
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
if (fieldName == "RMSCONTEXT") |
{
{
result.context = con.getInitialValue(); |
continue; } filter += "("; if (fieldName == "RMSFILTER") { filter +=
continue;
}
filter += "(";
if (fieldName == "RMSFILTER")
{
filter += con.getInitialValue(); |
} else { if
}
else
{
if (con.getInitialValue() == con.getFinalValue() || isEmpty(con.getFinalValue())) |
{ filter +=
{
filter += con.getFieldName(); |
var isLike = false;
var isLike = false;
switch(con.getConstraintType()) |
{ case ConstraintType.MUST: filter += " = "; break; case ConstraintType
{
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 +=
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 +=
}
else
{
filter += con.getFieldName(); | filter filter
filter += getFormattedValue(con.getInitialValue(), | filter filter
filter += getFormattedValue(con.getFinalValue(), | } } filter += ") AND "; } if
}
}
filter += ") AND ";
}
if (filter.length == 0) |
{ filter = } else{ filter = } } else filter =
}
}
else
filter = filter.substring(0, filter.length-5); |
o o return result; } function isEmpty
return result;
}
function isEmpty(str) | { return {
return (!str || 0 === str.length); |
function getFormattedValue
function getFormattedValue(value, isLike){ | return
return "'%" + value + "%'"; |
} else{ return
}
else{
return "'" + value + "'"; | |