Mensagem de erro no log: Dataset colleague não existe

Estou com um problema no Fluig no qual fui na tela de DataSet no painel de controle e na lista de dataset internos não consta o dataset colleague, achei que era algum problema na tela então criei um dataset de teste apenas com o código:


function createDataset(fields, constraints, sortFields) {
    var dataset = DatasetBuilder.newDataset();

    log.info("######################## dsTeste ########################");

    var colleagues = DatasetFactory.getDataset("colleague", null, null, null);

    log.info("colleagues:")

    log.dir(colleagues);

    return colleagues;
}

Além de dar erro no Studio ao efetuar a consulta no log aparece a seguinte frase:


2018-03-22 15:08:22,306 INFO  [com.datasul.technology.webdesk.customization.ScriptingLog] (default task-30) ######################## dsTeste ########################
2018-03-22 15:08:22,310 WARN  [com.datasul.technology.webdesk.dataset.DatasetFactory] (default task-30) Dataset colleague não existe
2018-03-22 15:08:22,311 INFO  [com.datasul.technology.webdesk.customization.ScriptingLog] (default task-30) colleagues:
2018-03-22 15:08:22,319 INFO  [com.datasul.technology.webdesk.customization.ScriptingLog] (default task-30) null
2018-03-22 15:08:22,333 ERROR [com.totvs.technology.ecm.dataservice.ws.DatasetService] (default task-30) Retorno de dataset inválido, verifique sua implementação.: com.datasul.technology.webdesk.dataset.business.DatasetException: Retorno de dataset inválido, verifique sua implementação.
    at com.datasul.technology.webdesk.dataset.service.DatasetServiceDelegate.getDatasetDto(DatasetServiceDelegate.java:68)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.jboss.as.ee.component.ManagedReferenceMethodInterceptor.processInvocation(ManagedReferenceMethodInterceptor.java:52)

Alguém já teve algum problema parecido? Eu acabei de instalar o Fluig na maquina, não coloquei nada nele ainda a não ser o kit_intranet.

Desde já Obrigado.

:warning: Atenção: Esta publicação foi transferida automaticamente do fórum antigo, mas os anexos não foram incluídos.

Olá Aldo,

Pode ficar tranquilo, seu ambiente não está sem o dataset de usuário (colleague).

O retorno do seu dataset precisa ser uma variável que instancie um novo dataset. O retorno de consulta de dataset é um array, e não um dataset.

Segue exemplo de um dataset customizado:


 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;
}

Note que a variável dataset é criada instanciando um dataset do fluig: DatasetBuilder.newDataset();.

Após isso, são adicionadas as colunas:


dataset.addColumn("Sigla");

E depois as linhas (registros do dataset) com valor de cada coluna:


 dataset.addRow(new Array("AM", "Amazonas", "Manaus", 1570746));

Segue um exemplo de dataset customizado consultando usuários:


function createDataset(fields, constraints, sortFields) {

    var datasetColleague = DatasetFactory.getDataset("colleague", null, null, null);
    var newDataset = DatasetBuilder.newDataset();

    newDataset.addColumn("Nome");
    newDataset.addColumn("Login");

    for (var i = 0; i < datasetColleague.rowsCount; i++) {
        newDataset.addRow(new Array(datasetColleague.getValue(i, "colleagueName"), datasetColleague.getValue(i, "login")));
    }

    return newDataset;

}

Se continuar aparecendo a mensagem que o dataset colleague não existe, por favor, compartilhe conosco o log completo do fluig.

Abs,

Marcos

Olá Marcos, o problema não é o retorno do meu dataset.
Repare que eu coloquei dois log.info e um log.dir para marcar a execução no log. E veja que o erro ocorre justamente na linha da chamada do getDataset(colleague) e mais, o valor retornado pela função não é um array como você havia dito, é null.
Já viu esse erro da chamada do getDataset(‘colleague’) retornar null ao invés de um array?
Eu reinstalei a instancia no cliente mas não resolveu, mas também não me aprofundei nos testes. Amanhã eu volto lá e testarei o dataset que você enviou.
Obrigado.

Bom dia Aldo, você teria o log do fluig no momento em que foi criado a empresa? Os Datasets internos são criados nesse momento. Se não, se puder criar uma nova empresa para teste e ver se dá o mesmo problema, e nos enviar o log.

Olá Diego, eu reparei isso mesmo, achei um erro durante a criação da empresa que eu acho que pode estar relacionado. Só não sei como resolver. Eu anexei todo o log de instalação e criação da empresa no post. Se você olhar a linha 12945 existe um erro na entidade DataService na qual ele fala que não conseguiu executar as consulta usando a conexão FluigDSRO. Aqui o Banco é ORACLE e eu alterei a string de conexão conforme a equipe da TI da empresa me passou. Aparentemente a conexão FluigDS está funcionando corretamente, mas não sei para o que cada conexão é usada no Fluig.

Aldo, o fluigdsro é só para leitura e no caso não é usado diretamente pela aplicação. O que acontece é que ele cria um serviço JDBC pra vc utilizar em Datasets no momento da criação da empresa, e o que está ocorrendo é que a URL de conexão do fluigdsro é maior que 255 caracteres e não consegue criar o serviço. Isso na verdade é um bug. Um workround seria diminuir a URL de conexão somente do fluigdsro no domain.xml, reiniciar o fluig, criar a empresa, alterar novamente o domain.xml para a URL original e reiniciar novamente. Isso se for possível diminuir a URL de conexão deixando ela funcional

Diego, era isso mesmo a string do banco era bem grande, conversando com a TI do cliente eles explicaram que era assim porque na string tinha o dns do servidor de produção e do servidor de contingencia, ai me orientaram a tirar a parte do servidor de contingencia. Com a url menor fiz os testes e funcionou corretamente. Fiz igual você orientou, alterei apenas o FluigDSRO reiniciei e criei uma nova empresa, deu certinho. Mas nem voltei ao original mantive ela sem o servidor de contingencia. Obrigado.

@Aldo,

Testei o seu fonte e deu certo aqui.

Tenta criar outro dataset e rodar.

Segue em anexo o que utilizei.

dsTeste2.js

:warning: Atenção: Esta publicação foi transferida automaticamente do fórum antigo, mas os anexos não foram incluídos.

SOLUÇÃO DO PROBLEMA:

Aldo, o fluigdsro é só para leitura e no caso não é usado diretamente pela aplicação. O que acontece é que ele cria um serviço JDBC pra vc utilizar em Datasets no momento da criação da empresa, e o que está ocorrendo é que a URL de conexão do fluigdsro é maior que 255 caracteres e não consegue criar o serviço. Isso na verdade é um bug. Um workround seria diminuir a URL de conexão somente do fluigdsro no domain.xml, reiniciar o fluig, criar a empresa, alterar novamente o domain.xml para a URL original e reiniciar novamente. Isso se for possível diminuir a URL de conexão deixando ela funcional — Diogo Boegershausen

Diego, era isso mesmo a string do banco era bem grande, conversando com a TI do cliente eles explicaram que era assim porque na string tinha o dns do servidor de produção e do servidor de contingencia, ai me orientaram a tirar a parte do servidor de contingencia. Com a url menor fiz os testes e funcionou corretamente. Fiz igual você orientou, alterei apenas o FluigDSRO reiniciei e criei uma nova empresa, deu certinho. Mas nem voltei ao original mantive ela sem o servidor de contingencia. Obrigado. — Aldo Ianelo Guerra