Dataset a partir de tabela de banco de dados

Pessoal, tem como eu criar um dataset buscando informações de um banco de dados do Fluig? tabela PROCESS_OBSERVATION


Dataset=>
function createDataset(fields, constraints, sortFields) {
    var newDataset = DatasetBuilder.newDataset();
    log.info("QUERY: " + myQuery);
    var dataSource = "/jdbc/dsHistoricoChamados";
    var ic = new javax.naming.InitialContext();
    var ds = ic.lookup(dataSource);
    var created = false;
    var myQuery = "select * from ML001459";
    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 (stmt != null) {
            stmt.close();
        }
        if (conn != null) {
            conn.close();
        }
    }
    return newDataset;
}


Domain.xml ==>
<datasource jta="false" jndi-name="java:/jdbc/dsHistoricoChamados" pool-name="dsHistoricoChamados" enabled="true" use-java-context="false">
                        <connection-url>jdbc:mysql://localhost:3306/minhabase</connection-url>
                        <driver>mysqlDriver</driver>
                        <pool>
                            <min-pool-size>5</min-pool-size>
                            <max-pool-size>15</max-pool-size>
                        </pool>
                        <security>
                            <user-name>usuário do bd</user-name>
                            <password>senha</password>
                        </security>
                        <validation>
                            <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker"/>
                            <validate-on-match>true</validate-on-match>
                            <background-validation>false</background-validation>
                        </validation>
                        <timeout>
                            <blocking-timeout-millis>30000</blocking-timeout-millis>
                        </timeout>
                        <statement>
                            <share-prepared-statements>false</share-prepared-statements>
                        </statement>
                    </datasource>

1 curtida

@Quemuel,

É possível sim, e pode ser feito consulta em BD externo também.

Segue link explicando:

http://tdn.totvs.com/display/public/fluig/Datasets+acessando+banco+de+dados+externo

@Gabriel, depois de alterado o domain.xml, é necessário para os serviços do fluig e iniciar novamente?

No caso a conexão com o Fluig já está configurada no domain.xml. Caso configurar a conexão com outro BD, após alterar o domain.xml, você deve reiniciar os serviços do Fluig.

@Gabriel, acrescentei na pergunta meus códigos do dataset e domain.xml. Está com erro “internal server error”

Não, está errado isso, volte o arquivo original. Você não precisa mexer nesse arquivo se quiser consultar dados do BD do Fluig

Volte o arquivo original e reinicie os serviços do Fluig. E pra consultar a tabela do Fluig você utiliza assim:


var dataSource = "/jdbc/FluigDS"; // padrão do Fluig

Outra coisa, pra cada versão do formulário do Fluig ele irá criar uma tabela diferente, então vão faltar dados se você fizer select somente nessa tabela ML001459, se mudar de versão do formulário irá criar outra tabela.

@Gabriel, obrigado deu certo! Vou utilizar a tabela PROCESS_OBSERVATION, lá contém as informações que necessito. Obrigado!

1 curtida

Que bom que deu certo. Tmj… Abraço

@Quemuel,

Pelo que vi seu banco é MySQL. Coloque o nome da tabela em minúsculo para testar.

Outra coisa, utilize o Datasource já existente no XML do Fluig:


var dataSource  = "java:/jdbc/FluigDS";