Open the menu

    Sources

    No arquivo douidefinition.xml, o source é definido através do elemento <source>, sob o elemento <sources>, e sua classe é definida através dos atributos type (no caso de sources padrão) e className (no caso de sources não padrão) do elemento <source>. Portanto, o elemento <sources> lista as fontes de dados disponíveis para o serviço, identificando-as pelo atributo id.

    No nível do serviço (sob o elemento <service>), o source deve definir todos os seus campos que poderão ser utilizados nas interfaces. Cada interface, em seu nível de definição (ou seja, sob o elemento <interface>), define quais campos irá utilizar, evitando consultar mais campos que o necessário. Caso não defina, todos os campos definidos a nível de source serão utilizados.

    Cada source possui um identificador único na interface, definido através do atributo id.

    Uma alternativa para recuperação de dados de uma tabela ou arquivo é a utilização de data providers, cuja implementação deve ser referenciada no elemento <dataProviderclassName>. Para definir a classe de um data provider, utiliza-se o elemento <dataProviderClassName> sob o elemento <source>. O atributo type de uma definição de source define não apenas uma classe de source, mas também uma classe de data provider. Portanto, caso seja definido tanto o atributo type quanto o elemento <dataProviderClassName>, este último terá precedência sobre o primeiro.

    Geralmente, cada fonte de dados possui, ao menos, os seguintes elementos: <table>, <fields> e <field>.

    O elemento <table> é utilizado principamente quando o source é do tipo tabular, ou seja atributo type="table".

    O elemento <fields> possui a lista dos campos que fazem parte da tabela e serão utilizados pelo serviço, cada um deles especificado na tag <field>.

    Atributos mais utilizados pela tag <field>

    Verificar o lumisdata/def/lumis/doui/douidefinition.xsd

    id

    Este é o nome do campo da tabela ou de uma consulta SQL.

    name

    Nome do campo.

    dataType

    Utilizado para definir o tipo de dados. Os possíveis tipos de dados são:

    • string
    • integer
    • double
    • date
    • dateTime
    • time
    • guid
    • html
    • text
    • boolean
    • file
    • files
    • image
    • document

    No field cujo dataType é “double”, pode-se colocar um atributo “pattern”, cujo valor define o padrão do número que esse campo utilizará. Esse padrão é composto pelos seguintes caracteres:

    • 0 : dígito, aparece mesmo se zero;
    • # : dígito, se for zero, não aparece;
    • . : separador decimal;
    • , : separador de agrupamento;

    Exemplos:

    “#, ##0.00”: Dinheiro

    O valor 1234,567890 aplicado ao padrão abaixo para português do Brasil

    #,##0.##”: “1.234,57”

    #,##0.#########”: “1.234,56789”

    #,##0.000000000”: “1.234,567890000”

    “000,000”:”001.235”

    “0”:”12345”

    display

    Se o campo será exibido na interface.

    Required

    Determina se o campo vai ser “not null”.

    isSearchable

    Determina se o campo vai fazer parte do índice da busca.

    isPrimarykey

    Um campo quando definido com o atributo isPrimaryKey=“true” será utilizado como identificador do conteúdo. Somente um campo pode ser definido como chave primária por source .

    isPrimaryName

    Um campo quando definido com o atributo isPrimaryName=“true” será utilizado como título do conteúdo. Somente um campo pode ser definido como nome primário por source .

    Além disso, o valor desse campo será utilizado na tag <title> a ser exibido no header html da página de detalhes.

    isIntroduction

    Um campo quando definido com o atributo isIntroduction=“true” será utilizado como texto introdutório ou descrição do conteúdo. Somente um campo pode ser definido como introdução por source .

    Além disso, o valor desse campo será utilizado na meta-tag >description a ser exibido no header html da página de detalhes.

    isKeywords

    Um campo pode ser definido como keyword para que seu valor seja utilizado na meta-tag keywords no header html de uma página de detalhes.

    No exemplo abaixo, o repositório de dados possui característica tabular definido pelo atributo type="table" e os dados estão sendo fornecidos tanto pela tabela "lum_sample" quanto pelo data provider que está recuperando dados de uma outra fonte através da classe lumis.sample.testDataProvider.

    Na interface são especificados os sources que estarão disponíveis para ela. O id do source precisa corresponder ao id de um source definido em service. O primeiro source listado é considerado o source default da interface. Na interface, a definição de um source pode ser alterada. As especificações na definição do source na interface têm prioridade sobre as que estão definidas no source no service. Quando um item não for especificado na definição da interface, será utilizada a especificação definida em service.

    Quando dois sources tipo table possuem um relacionamento e ambos são utilizados em uma interface, no sql a ser gerado para obter seus dados, é realizado um join entre as tabelas dos sources conforme definido em seu relacionamento.

    Acesso a Banco de Dados Externos

    Para configurar outras conexões no portal, basta criar uma pasta com o nome connection na pasta lumisdata/config e criar arquivos xml igual ao lumishibernate.cfg.xml. O nome do arquivo servirá de identificador para a aplicação utilizar.

    Suponha um serviço que exibe dados de uma tabela “Region” de um banco de dados externo. Para isso, o serviço foi implementado pata ter uma interface de lista que exibe as regiões cadastradas.

    Deve-se criar um arquivo com o nome do banco (Ex: sqlnorthwind.xml) em /lumisdata/config/connection (criar este diretório). Este arquivo contém a configuração do hibernate. Essa configuração define como é feita a conexão com o banco de dados.

    Para criar este arquivo, copie o conteúdo do arquivo lumishibernate.cfg.xml e salve com o nome do banco com extensão .XML.

    Verifique que o arquivo copiado possui o seguinte código:

    A classe especificada irá permitir que o cache do hibernate seja corretamente sincronizado em ambiente multi-server.

    No source do douidefinition.xml, deve haver o elemento connectionId contendo tal arquivo conexão.

    Caso não seja utilizado o elemento connectionId, por default o serviço utilizará as configurações de conexão definidas em lumisdata/config/lumishibernate.cfg.xml.

    Segue-se um exemplo do arquivo doudefinition.xml do serviço citado que exibe uma lista de regiões, sendo que essas regiões pertencem a uma tabela de um banco de dados externo.

    Recomenda-se criar um arquivo xml para cada datasource que estará disponível para a aplicação utilizando como nome do arquivo o mesmo nome do datasource.