feat: upgrade to async extractor, add RAG processing, link healing and Docker support
This commit is contained in:
@@ -0,0 +1,720 @@
|
||||
# Biblioteca de Snippets: JAVASCRIPT
|
||||
|
||||
## Origem: Acessando Datasets
|
||||
```javascript
|
||||
var newDataset = DatasetBuilder.newDataset();
|
||||
newDataset.addColumn("Document ID");
|
||||
newDataset.addColumn("Document version");
|
||||
newDataset.addColumn("Document Name");
|
||||
newDataset.addColumn("Document Type");
|
||||
|
||||
var listDocuments = datasets.get("document").search({
|
||||
"documentType": ["1", "2"]
|
||||
});
|
||||
|
||||
for(var index = 0; index < listDocuments.length; index++) {
|
||||
newDataset.addRow([
|
||||
listDocuments[index]["documentPK.documentId"],
|
||||
listDocuments[index]["documentPK.version"],
|
||||
listDocuments[index].documentDescription,
|
||||
listDocuments[index].documentType
|
||||
]);
|
||||
}
|
||||
|
||||
return newDataset;
|
||||
```
|
||||
|
||||
## Origem: Acessando Datasets
|
||||
```javascript
|
||||
var newDataset = DatasetBuilder.newDataset();
|
||||
newDataset.addColumn("Document ID");
|
||||
newDataset.addColumn("Document version");
|
||||
newDataset.addColumn("Document Name");
|
||||
newDataset.addColumn("Document Type");
|
||||
|
||||
var listDocuments = datasets.get("document").search({
|
||||
"documentDescription": {
|
||||
"value": "%API%",
|
||||
"like": true
|
||||
},
|
||||
"limit": 5
|
||||
});
|
||||
|
||||
for(var index = 0; index < listDocuments.length; index++) {
|
||||
newDataset.addRow([
|
||||
listDocuments[index]["documentPK.documentId"],
|
||||
listDocuments[index]["documentPK.version"],
|
||||
listDocuments[index].documentDescription,
|
||||
listDocuments[index]["documentType"]
|
||||
]);
|
||||
}
|
||||
|
||||
return newDataset;
|
||||
```
|
||||
|
||||
## Origem: Construção do Dataset Avançado
|
||||
```javascript
|
||||
function createDataset(fields, constraints, sortFields) {
|
||||
var dataset = DatasetBuilder.newDataset();
|
||||
|
||||
//Cria as colunas
|
||||
dataset.addColumn("Sigla");
|
||||
dataset.addColumn("Estado");
|
||||
dataset.addColumn("Capital");
|
||||
dataset.addColumn("Area");
|
||||
|
||||
//Cria os registros
|
||||
dataset.addRow(new Array("AM", "Amazonas", "Manaus", 1570746));
|
||||
dataset.addRow(new Array("PA", "Pará", "Belém", 1247690));
|
||||
dataset.addRow(new Array("MT", "Mato Grosso", "Cuiabá", 903358));
|
||||
dataset.addRow(new Array("TO", "Tocantins", "Palmas", 277621));
|
||||
dataset.addRow(new Array("PI", "Piauí", "Teresina", 251529));
|
||||
|
||||
return dataset;
|
||||
}
|
||||
```
|
||||
|
||||
## Origem: Construção do Dataset Avançado
|
||||
```javascript
|
||||
function createDataset(fields, constraints, sortFields) {
|
||||
var company;
|
||||
var initialDate;
|
||||
var finalDate;
|
||||
if (constraints != null) {
|
||||
for (var i = 0; i < constraints.length; i++) {
|
||||
if (constraints[i].fieldName == "company") {
|
||||
company = constraints[i].initialValue;
|
||||
}
|
||||
else if (constraints[i].fieldName == "date") {
|
||||
initialDate = constraints[i].initialValue;
|
||||
finalDate = constraints[i].finalValue;
|
||||
}
|
||||
}
|
||||
}
|
||||
.
|
||||
.
|
||||
.
|
||||
}
|
||||
```
|
||||
|
||||
## Origem: Construção do Dataset Avançado
|
||||
```javascript
|
||||
function createDataset(fields, constraints, sortFields) {
|
||||
var dataset = DatasetBuilder.newDataset();
|
||||
dataset.addColumn("DDD");
|
||||
dataset.addColumn("Fone");
|
||||
dataset.addColumn("Nome");
|
||||
|
||||
var tempDataset = getDefaultValues(); // consulta a fonte de dados do dataset
|
||||
|
||||
if(constraints!=null && constraints.length){ //se tiver constraint filtra
|
||||
|
||||
if(constraints[0].constraintType==ConstraintType.MUST) { // implementação somente para o MUST
|
||||
|
||||
for(var a=0;a< tempDataset.length;a++){
|
||||
// se o valor inicial da constraint for igual ao valor do campo na constraint adiciona a linha
|
||||
if(constraints[0].initialValue==tempDataset[a][constraints[0].fieldName]){
|
||||
dataset.addRow(new Array(tempDataset[a]["DDD"], tempDataset[a]["Fone"],tempDataset[a]["Nome"]));
|
||||
}
|
||||
}
|
||||
}
|
||||
} else { // se não tiver constraint adiciona todas as linhas
|
||||
for(var a=0;a< tempDataset.length;a++){
|
||||
dataset.addRow(new Array(tempDataset[a]["DDD"], tempDataset[a]["Fone"],tempDataset[a]["Nome"]));
|
||||
}
|
||||
}
|
||||
|
||||
return dataset;
|
||||
}
|
||||
|
||||
function getDefaultValues(){ // retorna valores default para serem filtrados
|
||||
return [{
|
||||
DDD: "47",
|
||||
Fone: "1111-1111",
|
||||
Nome: "Marcos"
|
||||
},
|
||||
{
|
||||
DDD: "47",
|
||||
Fone: "2222-2222",
|
||||
Nome: "Roberto"
|
||||
},
|
||||
{
|
||||
DDD: "41",
|
||||
Fone: "3333-3333",
|
||||
Nome: "Maria"
|
||||
},
|
||||
{
|
||||
DDD: "31",
|
||||
Fone: "4444-4444",
|
||||
Nome: "Francisco"
|
||||
},
|
||||
{
|
||||
DDD: "11",
|
||||
Fone: "5555-5555",
|
||||
Nome: "Michel"
|
||||
}];
|
||||
}
|
||||
```
|
||||
|
||||
## Origem: Construção do Dataset Avançado
|
||||
```javascript
|
||||
function createDataset(fields, constraints, sortFields) {
|
||||
var c1 = DatasetFactory.createConstraint("DDD", "47", "47", ConstraintType.MUST);
|
||||
|
||||
var dataset = DatasetFactory.getDataset("exemploFiltro", null, new Array(c1), null);
|
||||
return dataset;
|
||||
}
|
||||
```
|
||||
|
||||
## Origem: Construção do Dataset Avançado
|
||||
```javascript
|
||||
function createDataset(fields, constraints, sortFields) {
|
||||
var companyId = getValue("WKCompany");
|
||||
var currentUser = getValue("WKUser");
|
||||
.
|
||||
.
|
||||
.
|
||||
}
|
||||
```
|
||||
|
||||
## Origem: Construção do Dataset Avançado
|
||||
```javascript
|
||||
function createDataset(fields, constraints, sortFields) {
|
||||
var newDataset = DatasetBuilder.newDataset();
|
||||
try{
|
||||
var dataset = "";
|
||||
var filter = [];
|
||||
var currentUser = getValue("WKUser"); //Código do usuário logado
|
||||
var currentCompany = getValue("WKCompany"); //Código da empresa do usuário logado
|
||||
|
||||
var groupCode = "grupo"; //Código do grupo que o usuário precisa pertencer para passar na validação.
|
||||
dataset = "colleagueGroup" //Nome do dataset que pesquisa a relação de grupos e usuários.
|
||||
|
||||
filter= [DatasetFactory.createConstraint("colleagueGroupPK.companyId", currentCompany , currentCompany, ConstraintType.MUST),
|
||||
DatasetFactory.createConstraint("colleagueGroupPK.colleagueId", currentUser , currentUser, ConstraintType.MUST),
|
||||
DatasetFactory.createConstraint("colleagueGroupPK.groupId", groupCode, groupCode, ConstraintType.MUST)]; //Cria o filtro para empresa, usuário e grupo.
|
||||
|
||||
/** Codigo para pesquisar por papel ao invés de grupo.
|
||||
*
|
||||
var roleCode = "papel"; //Código do papel que o usuário precisa pertencer para passar na validação.
|
||||
dataset = "workflowColleagueRole" //Nome do dataset que pesquisa a relação de papéis e usuários.
|
||||
|
||||
filter= [DatasetFactory.createConstraint("workflowColleagueRolePK.companyId", currentCompany , currentCompany, ConstraintType.MUST),
|
||||
DatasetFactory.createConstraint("workflowColleagueRolePK.colleagueId", currentUser , currentUser, ConstraintType.MUST),
|
||||
DatasetFactory.createConstraint("workflowColleagueRolePK.roleId", roleCode, roleCode, ConstraintType.MUST)];
|
||||
*/
|
||||
var validation = DatasetFactory.getDataset(dataset, null, filter, null); //Realiza a chamada do dataset
|
||||
|
||||
if(validation.rowsCount==1){ //Se tiver uma linha quer dizer que o usuário logado faz parte do grupo/papel informado
|
||||
//Esse retorno é só para informar que passou da validação, mas aqui dentro ficaria o codigo que o usuário tem permissão de acesso.
|
||||
newDataset.addColumn("SUCCESS");
|
||||
newDataset.addRow(["ok"]);
|
||||
} else {
|
||||
//Esse retorno é só para informar que o usuário não faz parte do grupo/papel.
|
||||
newDataset.addColumn("ERROR");
|
||||
newDataset.addRow(["sem permissão"]);
|
||||
}
|
||||
|
||||
} catch(e) {
|
||||
newDataset.addColumn("ERROR");
|
||||
newDataset.addRow(["chamada incorreta"]);
|
||||
return newDataset;
|
||||
}
|
||||
return newDataset;
|
||||
}
|
||||
```
|
||||
|
||||
## Origem: Construção do Dataset Avançado
|
||||
```javascript
|
||||
function createDataset(fields, constraints, sortFields) {
|
||||
var c1 = null;
|
||||
var c2 = null;
|
||||
var filter = null;
|
||||
|
||||
if (constraints.length > 0)
|
||||
{
|
||||
c1 = DatasetFactory.createConstraint("mail", "%" + constraints[0].initialValue + "%" , "%" + constraints[0].finalValue + "%", ConstraintType.SHOULD);
|
||||
c2 = DatasetFactory.createConstraint("mail", "%%", "%%", ConstraintType.SHOULD);
|
||||
|
||||
|
||||
c1.setLikeSearch(true);
|
||||
c2.setLikeSearch(true);
|
||||
filter = new Array (c1, c2);
|
||||
}
|
||||
var dataset = DatasetFactory.getDataset("colleague", null, filter, sortFields);
|
||||
|
||||
return dataset;
|
||||
}
|
||||
```
|
||||
|
||||
## Origem: Construção do Dataset Avançado
|
||||
```javascript
|
||||
function createDataset(fields, constraints, sortFields) {
|
||||
|
||||
//Cria as colunas
|
||||
var dataset = DatasetBuilder.newDataset();
|
||||
dataset.addColumn("NumFormulario");
|
||||
dataset.addColumn("Id");
|
||||
dataset.addColumn("Peca");
|
||||
dataset.addColumn("Quantidade");
|
||||
|
||||
//Cria a constraint para buscar os formulários ativos
|
||||
var cst = DatasetFactory.createConstraint("metadata#active", true, true, ConstraintType.MUST);
|
||||
var constraints = new Array(cst);
|
||||
|
||||
var datasetPrincipal = DatasetFactory.getDataset("dsExemploPaiFilho", null, constraints, null);
|
||||
|
||||
for (var i = 0; i < datasetPrincipal.rowsCount; i++) {
|
||||
var documentId = datasetPrincipal.getValue(i, "metadata#id");
|
||||
var documentVersion = datasetPrincipal.getValue(i, "metadata#version");
|
||||
|
||||
//Cria as constraints para buscar os campos filhos, passando o tablename, número da formulário e versão
|
||||
var c1 = DatasetFactory.createConstraint("tablename", "tabelaPecas" ,"tabelaPecas", ConstraintType.MUST);
|
||||
var c2 = DatasetFactory.createConstraint("metadata#id", documentId, documentId, ConstraintType.MUST);
|
||||
var c3 = DatasetFactory.createConstraint("metadata#version", documentVersion, documentVersion, ConstraintType.MUST);
|
||||
var constraintsFilhos = new Array(c1, c2, c3);
|
||||
|
||||
//Busca o dataset
|
||||
var datasetFilhos = DatasetFactory.getDataset("dsExemploPaiFilho", null, constraintsFilhos, null);
|
||||
|
||||
for (var j = 0; j < datasetFilhos.rowsCount; j++) {
|
||||
//Adiciona os valores nas colunas respectivamente.
|
||||
dataset.addRow(new Array(
|
||||
documentId,
|
||||
datasetFilhos.getValue(j, "wdk_sequence_id"),
|
||||
datasetFilhos.getValue(j, "peca"),
|
||||
datasetFilhos.getValue(j, "qtde")));
|
||||
}
|
||||
}
|
||||
|
||||
return dataset;
|
||||
}
|
||||
```
|
||||
|
||||
## Origem: Datasets acessando banco de dados externo
|
||||
```javascript
|
||||
function createDataset(fields, constraints, sortFields) {
|
||||
var newDataset = DatasetBuilder.newDataset();
|
||||
log.info("QUERY: " + myQuery);
|
||||
var dataSource = "/jdbc/MeuDataSet";
|
||||
var ic = new javax.naming.InitialContext();
|
||||
var ds = ic.lookup(dataSource);
|
||||
var created = false;
|
||||
var myQuery = "select * from pessoas";
|
||||
try {
|
||||
var conn = ds.getConnection();
|
||||
var stmt = conn.createStatement();
|
||||
var rs = stmt.executeQuery(myQuery);
|
||||
var columnCount = rs.getMetaData().getColumnCount();
|
||||
while (rs.next()) {
|
||||
if (!created) {
|
||||
for (var i = 1; i <= columnCount; i++) {
|
||||
newDataset.addColumn(rs.getMetaData().getColumnName(i));
|
||||
}
|
||||
created = true;
|
||||
}
|
||||
var Arr = new Array();
|
||||
for (var i = 1; i <= columnCount; i++) {
|
||||
var obj = rs.getObject(rs.getMetaData().getColumnName(i));
|
||||
if (null != obj) {
|
||||
Arr[i - 1] = rs.getObject(rs.getMetaData().getColumnName(i)).toString();
|
||||
} else {
|
||||
Arr[i - 1] = "null";
|
||||
}
|
||||
}
|
||||
newDataset.addRow(Arr);
|
||||
}
|
||||
} catch (e) {
|
||||
log.error("ERRO==============> " + e.message);
|
||||
} finally {
|
||||
if (rs != null) {
|
||||
rs.close();
|
||||
}
|
||||
if (stmt != null) {
|
||||
stmt.close();
|
||||
}
|
||||
if (conn != null) {
|
||||
conn.close();
|
||||
}
|
||||
}
|
||||
return newDataset;
|
||||
}
|
||||
```
|
||||
|
||||
## Origem: Sincronização de datasets
|
||||
```javascript
|
||||
function onSync(lastSyncDate) {
|
||||
var dataset = DatasetBuilder.newDataset();
|
||||
var integracao = ServiceManager.getService('FLUIG3');
|
||||
var serviceLocator = integracao
|
||||
.instantiate('pkgWkfSolicPagamento.FLUIGLocator');
|
||||
var service = serviceLocator.getFLUIGSOAP();
|
||||
var cdEmp = 1; // código empresa pagadora
|
||||
var cdFilial = 0; // todas as filiais
|
||||
var cdTitulo = 0; // todos os titulos
|
||||
var cdPrefixo = ""
|
||||
var cnpj = 0; // cnpj fornecedor
|
||||
var codForn = 0; // cod universal para todos os fornecedores
|
||||
var lojaForn = 0; // loja fornecedor
|
||||
// Invocando o servico passando a data da ultima sincronização com a plataforma.
|
||||
// O webservice foi preparado para trazer apenas os dados desde a ultima
|
||||
// sincronização.
|
||||
var retorno = service.CONSPAG(cdEmp, cdFilial, cdTitulo, cdPrefixo, cnpj,
|
||||
codForn.toString(), lojaForn.toString(), lastSyncDate);
|
||||
var arrayListaTitulo = retorno.getLISTACPAG();
|
||||
for (var i = 0; i < arrayListaTitulo.length; i++) {
|
||||
var r = arrayListaTitulo[i];
|
||||
if (r.getCE_TIPO() == "ADD") {
|
||||
dataset.addRow(new Array(r.getCE_CODIGO(), r.getCE_LOJA(), r
|
||||
.getCE_NUMTIT(), r.getCE_PARCELA(), r.getCE_PEFIXO(), r
|
||||
.getCE_TIPO(), r.getCE_VALOR(), r.getCE_INSS(), r
|
||||
.getCE_ISS(), r.getCE_IRRF(), new java.util.Date(r.getDT_TITULO()), r
|
||||
.getCE_PIS(), r.getCE_COFINS()));
|
||||
} else if (r.getCE_TIPO() == "MOD") {
|
||||
|
||||
dataset.updateRow(new Array(r.getCE_CODIGO(), r.getCE_LOJA(), r
|
||||
.getCE_NUMTIT(), r.getCE_PARCELA(), r.getCE_PEFIXO(), r
|
||||
.getCE_TIPO(), r.getCE_VALOR(), r.getCE_INSS(), r
|
||||
.getCE_ISS(), r.getCE_IRRF(), new java.util.Date(r.getDT_TITULO()), r
|
||||
.getCE_PIS(), r.getCE_COFINS()));
|
||||
|
||||
} else if (r.getCE_TIPO() == "DEL") {
|
||||
|
||||
dataset.deleteRow(new Array(r.getCE_CODIGO(), r.getCE_LOJA(), r
|
||||
.getCE_NUMTIT(), r.getCE_PARCELA(), r.getCE_PEFIXO(), r
|
||||
.getCE_TIPO(), r.getCE_VALOR(), r.getCE_INSS(), r
|
||||
.getCE_ISS(), r.getCE_IRRF(), new java.util.Date(r.getDT_TITULO()), r
|
||||
.getCE_PIS(), r.getCE_COFINS()));
|
||||
|
||||
} else {
|
||||
// Estado do registro é desconhecido no cache
|
||||
dataset.addOrUpdateRow(new Array(r.getCE_CODIGO(), r.getCE_LOJA(), r
|
||||
.getCE_NUMTIT(), r.getCE_PARCELA(), r.getCE_PEFIXO(), r
|
||||
.getCE_TIPO(), r.getCE_VALOR(), r.getCE_INSS(), r
|
||||
.getCE_ISS(), r.getCE_IRRF(), new java.util.Date(r.getDT_TITULO()), r
|
||||
.getCE_PIS(), r.getCE_COFINS()));
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return dataset;
|
||||
}
|
||||
```
|
||||
|
||||
## Origem: Sincronização de datasets
|
||||
```javascript
|
||||
function onSync(lastSyncDate) {
|
||||
var dataset = DatasetBuilder.newDataset();
|
||||
dataset.addRow(new Array(2256, "SÃO PAULO", 1058, "6", "ESPORTE"));
|
||||
dataset.addRow(new Array(1874, "RECIFE", 1258, "1247690", "2", "CALÇADOS"));
|
||||
dataset.addRow(new Array(1205, "RIO DE JANEIRO", 2594, "10", "MOVEIS"));
|
||||
dataset.addRow(new Array(985, "FLORIANOPOLIS", 2269, "10", , "ELETRONICOS"));
|
||||
|
||||
return dataset;
|
||||
}
|
||||
```
|
||||
|
||||
## Origem: Eventos de Formulário
|
||||
```javascript
|
||||
function displayFields(form, customHTML) {
|
||||
if ( form.getFormMode() == “MOD” ) {
|
||||
form.setValue('RNC_colab_abertura', new java.lang.Integer(1));
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Origem: Eventos de Formulário
|
||||
```javascript
|
||||
function displayFields(form, customHTML) {
|
||||
form.setVisible("campoA", false);
|
||||
form.setVisibleById("linha___1", false);
|
||||
}
|
||||
```
|
||||
|
||||
## Origem: Eventos de Formulário
|
||||
```javascript
|
||||
**displayFields.js - Clique para expandir** Expandir origem
|
||||
```
|
||||
|
||||
## Origem: Eventos de Formulário
|
||||
```javascript
|
||||
Conforme explicado, o *customHTML* permite personalizar o formulário diretamente pelo método displayFields. Este exemplo, adaptado dos nos [Exemplos Avançados](../Plataforma Documentação técnica/Recurso de Processos (BPM).md)/Desenvolvimento de Workflow/Exemplos avançados.md), mostra como usar o displayFields para, no formulário, ter acesso ao modo de visualização, código do solicitante e número da atividade. Além de preencher alguns campos da solicitação com a data atual e o nome do solicitante:
|
||||
```
|
||||
|
||||
## Origem: Eventos de Formulário
|
||||
```javascript
|
||||
Para que os dados sejam carregados e apresentados em tela, principalmente em dispositivos *mobile*, é necessário chamar as funções que irão carregá-los dentro de uma estrutura de *read*.
|
||||
|
||||
A invocação dos métodos que irão popular o formulário deve estar contida dentro de uma chamada $(function(), garantindo assim o carregamento dos arquivos exigidos pelo formulário antes das funções.
|
||||
|
||||
Por exemplo, deseja-se carregar dados de produtos em um formulário. Para que isto ocorra, foi criada uma função *loadProdutos()* que irá preencher um *grid* inserido no formulário HTML. Neste caso a chamada desta função dentro do *displayFields* ficaria:
|
||||
```
|
||||
|
||||
## Origem: Eventos de Formulário - Exemplo de novo modelo
|
||||
```javascript
|
||||
function displayFields(form, customHTML) {
|
||||
if ( form.getFormMode() == “MOD” ) {
|
||||
form.setValue('RNC_colab_abertura', new java.lang.Integer(1));
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Origem: Eventos de Formulário - Exemplo de novo modelo
|
||||
```javascript
|
||||
function displayFields(form, customHTML) {
|
||||
form.setVisible("campoA", false);
|
||||
form.setVisibleById("linha___1", false);
|
||||
}
|
||||
```
|
||||
|
||||
## Origem: Eventos de Formulário - Exemplo de novo modelo
|
||||
```javascript
|
||||
**displayFields.js - Clique para expandir** Expandir origem
|
||||
```
|
||||
|
||||
## Origem: Eventos de Formulário - Exemplo de novo modelo
|
||||
```javascript
|
||||
Conforme explicado, o *customHTML* permite personalizar o formulário diretamente pelo método displayFields. Este exemplo, adaptado dos nos [Exemplos Avançados](../Plataforma Documentação técnica/Recurso de Processos (BPM).md)/Desenvolvimento de Workflow/Exemplos avançados.md), mostra como usar o displayFields para, no formulário, ter acesso ao modo de visualização, código do solicitante e número da atividade. Além de preencher alguns campos da solicitação com a data atual e o nome do solicitante:
|
||||
```
|
||||
|
||||
## Origem: Eventos de Formulário - Exemplo de novo modelo
|
||||
```javascript
|
||||
Para que os dados sejam carregados e apresentados em tela, principalmente em dispositivos *mobile*, é necessário chamar as funções que irão carregá-los dentro de uma estrutura de *read*.
|
||||
|
||||
A invocação dos métodos que irão popular o formulário deve estar contida dentro de uma chamada $(function(), garantindo assim o carregamento dos arquivos exigidos pelo formulário antes das funções.
|
||||
|
||||
Por exemplo, deseja-se carregar dados de produtos em um formulário. Para que isto ocorra, foi criada uma função *loadProdutos()* que irá preencher um *grid* inserido no formulário HTML. Neste caso a chamada desta função dentro do *displayFields* ficaria:
|
||||
```
|
||||
|
||||
## Origem: formController.getCardData()
|
||||
```javascript
|
||||
function displayFields(form, customHTML) {
|
||||
var mapaForm = new java.util.HashMap();
|
||||
mapaForm = form.getCardData();
|
||||
log.info("### getCardData ###: " + mapaForm);
|
||||
}
|
||||
```
|
||||
|
||||
## Origem: Integração de aplicativos externos com o Fluig
|
||||
```javascript
|
||||
function displayFields(form,customHTML){
|
||||
|
||||
var CURRENT_STATE = getValue("WKNumState") ? getValue("WKNumState") : 0;
|
||||
var CURRENT_USER = getValue("WKUser");
|
||||
|
||||
customHTML.append('<script>' +
|
||||
' var NUM_PROCES = ' + getValue("WKNumProces") + '; ' +
|
||||
' var CURRENT_USER = \'' + CURRENT_USER + '\'; ' +
|
||||
' var CURRENT_STATE = ' + CURRENT_STATE + '; ' +
|
||||
'</script>');
|
||||
}
|
||||
```
|
||||
|
||||
## Origem: Básico - Integração Fluig x Protheus: Centro de custo
|
||||
```javascript
|
||||
function defineStructure() {}
|
||||
|
||||
function onSync(lastSyncDate) {}
|
||||
|
||||
function createDataset(fields, constraints, sortFields) {
|
||||
var dataset = DatasetBuilder.newDataset();
|
||||
|
||||
dataset.addColumn("InternalId");
|
||||
dataset.addColumn("CompanyInternalId");
|
||||
dataset.addColumn("CompanyId");
|
||||
dataset.addColumn("RegisterSituation");
|
||||
dataset.addColumn("Class");
|
||||
dataset.addColumn("Code");
|
||||
dataset.addColumn("Name");
|
||||
|
||||
var sendData = {
|
||||
companyId: String(fluigAPI.getSecurityService().getCurrentTenantId()),
|
||||
serviceCode: "API_PROTHEUS_REST",
|
||||
endpoint: "/api/ctb/v1/costcenters/",
|
||||
method: "GET"
|
||||
};
|
||||
|
||||
// Fornece acesso aos serviços externos com autenticação oauth, documentação: http://127.0.0.1:8080/api/sdk/com/fluig/sdk/service/AuthorizeClientSdkService.html
|
||||
var clientService = fluigAPI.getAuthorizeClientService();
|
||||
|
||||
// Realizar a integração
|
||||
// Documentação da API: https://api.totvs.com.br/apidetails/CostCenter_v1_000.json
|
||||
var vo = clientService.invokeService(JSON.stringify(sendData));
|
||||
// Armazenar o status HTTP da integração, esse passo é muito importante para idenficar se tudo ocorreu como deveria!
|
||||
// Fique atento!!! Cada API pode ter um retorno diferente, a melhor prática é consultar documentação oficial em api.totvs.com.br e checar
|
||||
// os seus respectivos métodos e retornos possíveis.
|
||||
// O método getHttpStatusResult é da classe AuthorizeClientSdkServiceVO (Variavel clientService do nosso código)
|
||||
// Documentação completa: http://127.0.0.1:8080/api/sdk/com/fluig/sdk/api/authorizeclient/AuthorizeClientSdkServiceVO.html
|
||||
var status = String(vo.getHttpStatusResult());
|
||||
if (status == "200") {
|
||||
var jsonResponse = JSON.parse(vo.getResult());
|
||||
if (jsonResponse.items && jsonResponse.items.length > 0) {
|
||||
for (var i = 0; i < jsonResponse.items.length; i++) {
|
||||
var item = jsonResponse.items[i];
|
||||
dataset.addRow(new Array(
|
||||
item.InternalId,
|
||||
item.CompanyInternalId,
|
||||
item.CompanyId,
|
||||
item.RegisterSituation,
|
||||
item.Class,
|
||||
item.Code,
|
||||
item.Name
|
||||
));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
var errorMsg = "Erro desconhecido durante a integracao.";
|
||||
try {
|
||||
var parseResult = JSON.parse(vo.getResult());
|
||||
var parseError = JSON.parse(parseResult.errorMessage);
|
||||
errorMsg = parseError.detailedMessage;
|
||||
} catch (e) {
|
||||
errorMsg = vo.getResult();
|
||||
}
|
||||
|
||||
dataset.addRow(new Array(
|
||||
status,
|
||||
errorMsg,
|
||||
"", "", "", "", ""
|
||||
));
|
||||
}
|
||||
|
||||
return dataset;
|
||||
}
|
||||
|
||||
function onMobileSync(user) {}
|
||||
```
|
||||
|
||||
## Origem: Integração com Aplicativos Externos
|
||||
```javascript
|
||||
function createDataset(fields, constraints, sortFields) {
|
||||
// Cria o dataset
|
||||
var dataset = DatasetBuilder.newDataset();
|
||||
dataset.addColumn("Element Name");
|
||||
dataset.addColumn("Symbol");
|
||||
dataset.addColumn("Atomic Number");
|
||||
dataset.addColumn("Atomic Weight");
|
||||
// Conecta o servico e busca os livros
|
||||
var periodicService = ServiceManager.getService('PeriodicTable');
|
||||
var serviceHelper = periodicService.getBean();
|
||||
var serviceLocator = periodicService.instantiate('net.webservicex.Periodictable');
|
||||
var service = serviceLocator.getPeriodictableSoap();
|
||||
// Invoca o serviço
|
||||
try {
|
||||
var result = service.getAtomicNumber("sodium"); // O termo "sodium" corresponde ao parâmetro do tipo String esperado na assinatura do método getAtomicNumber
|
||||
var xml = new XML(result);
|
||||
for ( var index in xml.Table) {
|
||||
var element = xml.Table[index];
|
||||
dataset.addRow(new Array(element.ElementName.toString(), element.Symbol.toString(), element.AtomicNumber
|
||||
.toString(), element.AtomicWeight.toString()));
|
||||
}
|
||||
} catch (erro) {
|
||||
dataset.addRow(new Array(erro));
|
||||
}
|
||||
return dataset;
|
||||
}
|
||||
```
|
||||
|
||||
## Origem: Métodos de contorno de lentidão na plataforma
|
||||
```javascript
|
||||
2022-11-23 15:59:03,511 WARN [com.fluig.monitoring.jschronos.JSChronos] (JSChronos.CustomizationManagerImpl.invokeFunction.createDataset) CustomizationManagerImpl.invokeFunction.createDataset ja esta sendo executado por 2211 segundos params: [[[Ljava.lang.String;@268d1e17, null, null], Thread = default task-6727, datasetId = dsDatabase]
|
||||
2.211 segundos
|
||||
|
||||
2022-11-24 08:51:22,088 WARN [com.fluig.monitoring.jschronos.JSChronos] (JSChronos.CustomizationManagerImpl.invokeFunction.createDataset) CustomizationManagerImpl.invokeFunction.createDataset ja esta sendo executado por 60 segundos params: [[[Ljava.lang.String;@7cec0760, [Lcom.totvs.technology.foundation.dataset.SearchConstraint;@64de871c, null], Thread = default task-35, datasetId = dsChecklistCRUD]
|
||||
|
||||
2023-02-14 09:17:47,722 WARN [com.fluig.monitoring.jschronos.JSChronos] (JSChronos.CustomizationManagerImpl.invokeFunction.createDataset) CustomizationManagerImpl.invokeFunction.createDataset ja esta sendo executado por 300 segundos params: [[null, [Lcom.totvs.technology.foundation.dataset.SearchConstraint;@67eb8082, null], Thread = default task-389, datasetId = ds_sql_update]
|
||||
|
||||
2023-02-14 09:17:56,587 WARN [com.fluig.monitoring.jschronos.JSChronos] (JSChronos.CustomizationManagerImpl.invokeFunction.servicetask64) CustomizationManagerImpl.invokeFunction.servicetask64 ja esta sendo executado por 120 segundos params: [[Process id = alteracao_de_preco, Process Version = 23, Process Current UserId = usuario.user], Thread = default task-413, datasetId = workflowColleagueRole]
|
||||
```
|
||||
|
||||
## Origem: Métodos de contorno de lentidão na plataforma
|
||||
```javascript
|
||||
2023-05-29 09:30:53,414 WARN [com.fluig.monitoring.jschronos.JSChronos] (default task-39) CustomizationManagerImpl.invokeFunction.createDataset executou por 32 segundos
|
||||
2023-05-29 09:30:53,414 WARN [com.fluig.monitoring.jschronos.JSChronos] (default task-39) params: [[[Ljava.lang.String;@6c45e716, [Lcom.totvs.technology.foundation.dataset.SearchConstraint;@a1b6a73, null], Thread = default task-39, datasetId = ds_RMConsulta]
|
||||
2023-05-29 09:30:53,437 WARN [com.fluig.monitoring.jschronos.JSChronos] (default task-39) DatasetFactory.getDataset.ds_RMConsulta executou por 32 segundos
|
||||
2023-05-29 09:30:53,437 WARN [com.fluig.monitoring.jschronos.JSChronos] (default task-39) params: [[TBC012.05, 1, T], [FIELD_NAME=COLIGADA; INITIAL_VALUE=1; FINAL_VALUE=1; CONSTRAINT_TYPE=MUST; IS_LIKE_SEARCH=false; ], null]
|
||||
2023-05-29 09:31:24,672 INFO [com.datasul.technology.webdesk.dataset.business.DatasetBO] (default task-39) Executando Dataset com ID ds_RMConsulta do tipo Avançado.
|
||||
2023-05-29 09:31:24,672 INFO [com.datasul.technology.webdesk.dataset.business.DatasetBO] (default task-39) Builder rodando sem o mobile
|
||||
2023-05-29 09:31:24,719 INFO [com.datasul.technology.webdesk.customization.ScriptingLog] (default task-39) uf-log | Chamada do DataSet ds_RMConsulta
|
||||
2023-05-29 09:31:24,734 INFO [com.datasul.technology.webdesk.dataset.business.DatasetBO] (default task-39) Executando Dataset com ID ds_RMConecta do tipo Avançado.
|
||||
2023-05-29 09:31:24,735 INFO [com.datasul.technology.webdesk.dataset.business.DatasetBO] (default task-39) Builder rodando sem o mobile
|
||||
2023-05-29 09:31:24,786 INFO [org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean] (default task-39) Creating Service {http://www.totvs.com/}wsConsultaSQL from WSDL: http://peg54p-prd-ws.totvscloud.com.br:8083/wsConsultaSQL/MEX?wsdl
|
||||
2023-05-29 09:31:24,800 WARNING [org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean] (default task-39) No method was found for the WSDL operation {http://www.totvs.com/}RealizarConsultaSQLContexto.
|
||||
2023-05-29 09:31:24,805 INFO [org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean] (default task-39) Creating Service {http://www.totvs.com/}IwsConsultaSQLService from class com.totvs.IwsConsultaSQL
|
||||
2023-05-29 09:31:24,812 INFO [com.datasul.technology.webdesk.customization.ScriptingLog] (default task-39) uf-log | Dados da chamada ao serviço wsConsultaSQL:
|
||||
2023-05-29 09:31:24,812 INFO [com.datasul.technology.webdesk.customization.ScriptingLog] (default task-39) uf-log | CODSENTECA: TBC012.03
|
||||
2023-05-29 09:31:24,812 INFO [com.datasul.technology.webdesk.customization.ScriptingLog] (default task-39) uf-log | CODCOLIGADA: 1
|
||||
2023-05-29 09:31:24,812 INFO [com.datasul.technology.webdesk.customization.ScriptingLog] (default task-39) uf-log | APLICACAO: T
|
||||
2023-05-29 09:31:24,812 INFO [com.datasul.technology.webdesk.customization.ScriptingLog] (default task-39) uf-log | PARAMETRO:
|
||||
2023-05-29 09:31:24,922 INFO [com.datasul.technology.webdesk.customization.ScriptingLog] (default task-39) uf-log | Chamada realizada com sucesso.
|
||||
2023-05-29 09:31:24,923 INFO [com.datasul.technology.webdesk.customization.ScriptingLog] (default task-39) uf-log | Quantidade de registros retornados: 57
|
||||
```
|
||||
|
||||
## Origem: Conversão TOTVS ECM para plataforma TOTVS Fluig
|
||||
```javascript
|
||||
function createDataset(fields, constraints, sortFields) {
|
||||
var query = "SELECT login,email FROM fdn_usertenant LIMIT 100";
|
||||
var dataSource = "jdbc/FluigDSRO";
|
||||
var newDataset = DatasetBuilder.newDataset();
|
||||
var ic = new javax.naming.InitialContext();
|
||||
var ds = ic.lookup(dataSource);
|
||||
|
||||
try {
|
||||
var conn = ds.getConnection();
|
||||
var stmt = conn.createStatement();
|
||||
var rs = stmt.executeQuery(query);
|
||||
|
||||
newDataset.addColumn("Login");
|
||||
newDataset.addColumn("Email");
|
||||
|
||||
while (rs.next()) {
|
||||
newDataset.addRow([ rs.getString("login"), rs.getString("email") ]);
|
||||
}
|
||||
|
||||
} catch(e) {
|
||||
newDataset.addColumn("erro");
|
||||
newDataset.addRow([e.message]);
|
||||
} finally {
|
||||
if(rs != null) rs.close();
|
||||
if(stmt != null) stmt.close();
|
||||
if(conn != null) conn.close();
|
||||
}
|
||||
|
||||
return newDataset;
|
||||
}
|
||||
```
|
||||
|
||||
## Origem: Personalização de formulários - Nova versão
|
||||
```javascript
|
||||
function displayFields(form,customHTML) {
|
||||
// Obtendo o usuario via dataset
|
||||
filter = new java.util.HashMap();
|
||||
filter.put("colleaguePK.colleagueId","adm");
|
||||
usuario = getDatasetValues('colleague',filter);
|
||||
form.setValue('RNC_colab_abertura',usuario.get(0).get("colleaguePK.colleagueId"));
|
||||
}
|
||||
```
|
||||
|
||||
## Origem: Personalização de formulários - Nova versão
|
||||
```javascript
|
||||
function displayFields(form,customHTML) {
|
||||
// Obtendo o usuario via dataset
|
||||
filter = new java.util.HashMap();
|
||||
filter.put("RNC_nr_solicitacao",new java.lang.Integer(20));
|
||||
registrosform = DatasetFactory.getDatasetValues(Number(676),filter);
|
||||
log.info("Usuário de Abertura: "+ registrosform.get(0).get("RNC_colab_abertura"));
|
||||
}
|
||||
```
|
||||
|
||||
## Origem: Personalização de formulários - Nova versão
|
||||
```javascript
|
||||
function displayFields(form,customHTML) {
|
||||
// Obtendo o usuario via dataset
|
||||
filter = new java.util.HashMap();
|
||||
filter.put("RNC_nr_solicitacao",new java.lang.Integer(20));
|
||||
registrosform = getDatasetValues(Number(676),filter);
|
||||
log.info("Usuário de Abertura: "+ registrosform.get(0).get("RNC_colab_abertura"));
|
||||
}
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user