# Referência: DataSources e APIs de Dataset Fluig

## DataSources JNDI Comuns

| DataSource | Banco | Tipo | Uso |
|---|---|---|---|
| `/jdbc/FluigDSRO` | Fluig | Somente leitura | Consultas em tabelas Fluig |
| `/jdbc/FluigDS` | Fluig | Leitura/escrita | INSERT/UPDATE em tabelas Fluig |
| `java:/jdbc/CorporeRM` | RM/TOTVS | Leitura/escrita | Integração com RM |
| JNDI customizado | Externo | Configurável | Cadastrado no Wildfly/Tomcat |

## DatasetBuilder API

```javascript
// Criar dataset vazio
var ds = DatasetBuilder.newDataset();

// Definir colunas
ds.addColumn("coluna1");
ds.addColumn("coluna2");

// Adicionar linhas
ds.addRow(new Array("valor1", "valor2"));

// Propriedades de leitura
ds.rowsCount;                    // Número de linhas
ds.getValue(indice, "coluna");   // Valor de uma célula
ds.getMap();                     // Retorna Map Java
```

## DatasetFactory API (para chamar datasets)

```javascript
// Criar constraint de filtro
var c = DatasetFactory.createConstraint(
    "campo",          // Nome do campo
    "valorInicial",   // Valor inicial
    "valorFinal",     // Valor final (mesmo para igualdade)
    ConstraintType.MUST  // MUST, SHOULD, MUST_NOT
);

// Chamar dataset
var ds = DatasetFactory.getDataset(
    "nomeDataset",    // Nome registrado no Fluig
    fields,           // Array de campos ou null (todos)
    constraints,      // Array de constraints ou null
    sortFields         // Array de ordenação ou null
);
```

## ConstraintType

| Tipo | Descrição | SQL equivalente |
|---|---|---|
| `ConstraintType.MUST` | Obrigatório | `AND campo = valor` |
| `ConstraintType.SHOULD` | Opcional | `OR campo = valor` |
| `ConstraintType.MUST_NOT` | Negação | `AND campo != valor` |

## Constraints Especiais (prefixo metadata#)

```javascript
// Filtrar por documento/card
DatasetFactory.createConstraint("metadata#id", "123", "123", ConstraintType.MUST);

// Filtrar por versão ativa
DatasetFactory.createConstraint("metadata#active", "true", "true", ConstraintType.MUST);
```

## Datasets Internos do Fluig

| Dataset | Colunas Principais | Uso |
|---|---|---|
| `colleague` | `colleaguePK.colleagueId`, `colleagueName`, `mail`, `login` | Usuários |
| `workflowProcess` | `processInstanceId`, `processId`, `cardDocumentId` | Processos ativos |
| `processHistory` | `processInstanceId`, `movementSequence`, `colleagueId` | Histórico |
| `processTask` | `processInstanceId`, `colleagueId`, `deadline` | Tarefas pendentes |
| `processState` | `stateSequence`, `flowSequence`, `stateName` | Atividades |
| `document` | `documentPK.documentId`, `documentDescription` | Documentos GED |
