Zim 8.50 – Diretórios DIRETÓRIOS Um diretório é um objeto do aplicativo. Diretórios de aplicativos são usados para organizar os objetos definidos no Dicionário de Objetos para a aplicação. Diretórios ZIM ZIM 8 proporciona uma melhor manipulação de diretórios ZIM (local e estrangeiro), aumentando o número de diretórios disponíveis 100-240. Estabelecer um diretório de aplicativo Chamar o IDE, selecionar diretórios dos objetos drop-down menu, e usar as ferramentas do Centro de Desenvolvimento para definir o diretório desejado. Campos do objeto Diretórios atributos Descrição DirName Localização de diretório de aplicativos da constante OwnerDirName Localização de diretório de aplicativos do diretório assunto DirId Um identificador numérico para o diretório (2-240) DirId - O identificador numérico para o diretório. Valores válidos - Um valor na faixa de 0 a 254 (default = 0) Observações - Cada diretório acessado por um aplicativo deve ter uma DirId único. Se você escolher um DirId de 0, o ID interno do diretório é definido para corresponder ao número atribuído ao arquivo correspondente do sistema operacional (ou seja, ZIMnnnn onde nnnn é tipicamente um número entre 0100 e 9999). Dentro de cada aplicação, a identificação interna de todos os diretórios de aplicativos acessados ao mesmo tempo deve ser exclusivo. Se o item foreign (estrangeiro) é definido como YES, o DirId deve conter o valor 2 a 254. Se foreign é definido como NO, mas se o diretório irá ser exportado como um diretório estrangeiro para outros bancos de dados, DirId ainda deve estar entre 2 a 254. Diretórios estrangeiros Zim 8.50 – Diretórios Cada banco de dados Zim tem seu próprio dicionário de objetos. Todos os objetos (conjuntos de entidades ou seja, formas, variáveis e assim por diante) que são descritas no dicionário de objetos são criados em um diretório Zim. Normalmente, um desenvolvedor de aplicativo cria os diretórios Zim que são usados dentro de um banco de dados particular. Um diretório estrangeiro, por outro lado, é um diretório Zim, que é definida por um banco de dados, mas é usado por outros bancos de dados. Ao acessar um diretório estrangeiro, você ganha acesso a todos os objetos criados nesse diretório. DIRS.ZIM Arquivo de configuração igual que as versões anteriores do ZIM. Ele descreve os diretórios estrangeiros que está sendo acessado por esta aplicação. Se existente, ele está localizado no <path absoluto> (em outras palavras, cada <path absolut> pode ter um arquivo dirs.zim); Por que usar um diretório estrangeiro? Há muitas situações em que um diretório estrangeiro pode ser útil. Um exemplo comum é a caixa de ferramentas, um banco de dados contendo programas aplicativos que são úteis, e, portanto, compartilhado entre, muitos bancos de dados diferentes. Por exemplo, ao desenvolver um aplicativo, você pode ter criado um diretório contendo programas utilitários. Estes utilitários podem ser úteis em outras situações, mas você não quer recriá-las para cada novo banco de dados. Seguindo os procedimentos descritos abaixo, o diretório de utilidade pode ser definida como estrangeiros em outros bancos de dados. O diretório pode ser usado em outros bancos de dados do que aquele em que ela foi criada. Como os diretórios estrangeiros são usados. O procedimento descrito abaixo é uma visão geral de como os diretórios estrangeiros são usados. O restante desta seção descreve isso com mais detalhes. Em geral, o uso de um diretório de um banco de dados (banco de dados de host) dentro de outro banco de dados (banco de dados de conexão) envolve cinco etapas: 1) No Dicionário de Objetos do banco de dados host, definir o diretório de destino, incluindo um número ID especial do diretório. Crie o diretório, usando o comando CREATE. 2) No Dicionário de Objetos do banco de dados de conexão, definir o diretório de destino novamente. Esta definição deve ser idêntico ao que no banco de dados host, exceto que o diretório deve ser definido como estrangeiros. 3) No banco de dados de conexão, criar o diretório, usando o comando CREATE. 4) No prompt do sistema operacional, va para o diretório do sistema operacional que contém o banco de dados de conexão. Use seu editor de texto para editar o arquivo diretórios estrangeiros (chamados dirs.zim), adicionando uma entrada que dá a localização do diretório de estrangeiros no sistema de arquivos. Zim 8.50 – Diretórios 5) Voltar para o banco de dados de conexão. Use o comando ACCESS para acessar o diretório estrangeiros. Um banco de dados de conexão poderá acessar muitos diretórios estrangeiros em simultâneo, desde que cada diretório tem um número de identificação único diretório. Um único diretório pode ser acessado como um diretório estrangeiros simultaneamente por muitos bancos de dados. Definição de um Dicionário Estrangeiro Descrição detalhada. Um diretório estrangeiro consiste em dois componentes. O primeiro componente é o diretório original criado no banco de dados host. É nesse diretório que é acessado por usuários de outros bancos de dados. O segundo componente é um diretório que é criado como estrangeiro no banco de dados de conexão. No banco de dados host. Se um diretório específico deve ser usado de dentro de outros bancos de dados, o diretório deve ser criado no banco de dados host, utilizando o procedimento descrito abaixo. O diretório é criado, essencialmente, de uma forma normal, no entanto, ele deve ser atribuído um número de identificação especial diretório. 1) Adicionar um registro para EntitySet Diretórios no Dicionário de Objetos. Este registro deve ser definido assim: - DirName = nome do diretório - DirId = número de ID de diretório. Este número deve estar entre 2 e 254. O DirId não deve entrar em conflito com a DirId de qualquer outro diretório para o qual um usuário pode se conectar ao mesmo tempo. - Foreign = NO 2) Crie o diretório da forma normal, usando o comando CREATE. Se os diretórios estrangeiros arquivo (dirs.zim) pertencentes ao banco de dados host contém uma entrada que corresponda DirId deste diretório, o arquivo do sistema operacional que corresponde a esse diretório é transferida para essa entrada. Nota: O diretório raiz (ou seja, Zim) não pode ser usado como um diretório estrangeiro. Você deve assumir que o diretório a ser usado em outros bancos de dados é um sub-diretório. No banco de dados Conexão. Para permitir que usuários de um outro banco de dados se conectem a um diretório (estrangeiro) Zim 8.50 – Diretórios existente, continue o procedimento acima com os seguintes passos: 1) No banco de dados conectado, adicionar um registro para Diretórios conjunto de entidades no Dicionário de Objetos. Este registro deve definir - DirName ao nome do diretório estrangeiros - DirId a ID de diretório do diretório estrangeiros - Foreign para YES 2) Crie o diretório da maneira normal. Porque o campo estrangeiro no registro de diretórios tem sido definida como Yes, não são criados arquivos para este novo diretório. Nota: O DirName e DirId do diretório estrangeiro deve ser o mesmo que o DirName e DirId no banco de dados host. A nível do Sistema Operacional Antes que um usuário do banco de dados de conexão possa empregar o comando ACCESS para se conectar a um diretório estrangeiro, o banco de dados de conexão deve conter uma diretório estrangeiro (dirs.zim) arquivo com uma entrada descrevendo a localização de cada diretório estrangeiro. Para criar este arquivo, use um editor de texto no nível do sistema operacional. O arquivo deve ser armazenado no diretório do sistema operacional que contém o banco de dados de conexão. Cada entrada no arquivo de diretórios estrangeiros tem o formato: dirid file# path onde: dirid é o dirid do diretório estrangeiro. file# é o número do arquivo que corresponde ao diretório no banco de dados host (ou seja, a zimnnnn nnnn). Para determinar o arquivo#, execute o utilitário ZIMFILES no banco de dados host ou use o comando: out $filename (nome do diretório) ou $filepath(objname) Por exemplo, a entrada: 11 126 \usr\tools significa que o diretório cujo dirid = 11 pode ser encontrada no arquivo \usr\tools\zim0126. Acessar um diretório Estrangeiro Uma vez que um diretório estrangeiro foi definido e criado no host e nos bancos de dados de conexão, e o arquivo de diretório estrangeiro existe com a entrada apropriada, o diretório Zim 8.50 – Diretórios estrangeiro é acessível a partir do banco de dados de conexão. Para acessar o diretório estrangeiro, use o seguinte procedimento: 1) Entre no Zim no banco de dados de conexão. 2) Use o comando ACCESS para acessar o diretório estrangeiro pelo nome, como mostrado no exemplo a seguir: access Utilities read. Este comando Abre um diretório de aplicativos Zim, permitindo o acesso aos objetos nele criados. sintaxe ACC dirname [READ | UPDATE] parâmetros dirname É o nome de um diretório Zim que deve ser colocado na lista de diretórios. READ Indica que o diretório será acessado somente para leitura,não sendo permitidas alterações. Este é o valor assumido, se nenhum dos dois for informado (valor padrão). UPDATE Especifica que o diretório será acessado tanto para leitura como para alterações(CREATE, ERASE,ADD,CHANGE ou DELETE). comentários Diretórios estrangeiros são sempre acessados como READ, ou seja, em modo de leitura. exemplo Para acessar ProjectControl diretório em modo somente leitura, use: access ProjectControl read ou simplemesmente access ProjectControl Para acessar o diretório pessoal no modo de atualização, use: access Pessoal update Todos os objetos definidos no diretório estrangeiro estão agora disponíveis a partir do banco de dados de conexão. A localização de arquivos associados a um diretório Estrangeiro. O arquivo dirs.zim especifica a localização do sistema operacional (OS) de arquivo que corresponde ao diretório estrangeiro. Mas onde é que o sistema deve ver os arquivos que Zim 8.50 – Diretórios correspondem aos conjuntos de entidades, relacionamentos, programas e assim por diante que são definidas no diretório estrangeiro?. Por padrão, o Zim procura por esses arquivos no caminho especificado no arquivo dirs.zim para o arquivo do diretório estrangeiros em si. É possível, no entanto, para distribuir esses arquivos para outras partes do sistema de arquivos usando um arquivo de áreas com nomes de documentos de arquivo especial no banco de dados host. O procedimento para utilizar um arquivo de áreas em um banco de dados host é exatamente como descrito para bancos de dados independentes na distribuição de arquivos de banco de dados. Exemplo Para ilustrar, vejamos um exemplo da base Utilities. Considere as informações apresentadas a seguir: - O diretório utilitários no banco de dados host é definido no diretório do sistema operacional D:\UTILPROG. A ID do diretório Utilities é 30. - No diretório Utilities, três documentos são definidos como mostrado abaixo: > List all docs Docname ======== DictReport ReportOut UserLog FileName DirName ======= ======= dict.rep Utilities )Utilitários report.out "user.log Utilities - No diretório Utilities, dois conjuntos de entidades são também definidas como mostrado abaixo: UtilEnt1 (armazenado no arquivo do sistema operacional ZIM0129) UtilEnt2 (armazenado no arquivo do sistema operacional ZIM0130) - No banco de dados host tem um arquivo associado que está localizado, com diretório Utilities, no diretório do sistema operacional D:/UTILPROG. O arquivo areas.zim contém a entrada de: 129 C:\UTZIM - O banco de dados de conexão, no arquivo dirs.zim contem uma entrada associado ao diretório estrangeiro: 30 117 D:\UTILPROG. - O diretório de trabalho do usuário que se conecta é C:\APPLDIR\USER1. Dada esta situação, os bancos de dados de conexão e host, ambos contêm um arquivo de áreas.zim que realoca os arquivos associados a conjuntos de entidades. No banco de dados de conexão, um arquivo de diretórios estrangeiro D:\UTILPROG estabelece como o local padrão para todos os arquivos associados a objetos no diretório estrangeiro Utilities. O objeto Zim 8.50 – Diretórios estrangeiro ReportOut (um documento) é definida como sendo localizado no diretório de trabalho de conexão do usuário, similarmente, UserLog é definido como sendo localizado no diretório do banco de dados de conexão do usuário. Acessando Entidades estrangeiras Ao se conectar a um diretório estrangeiro, você ganha acesso aos dados das Entidades e dos relacionamentos com campos que são definidos nesse diretório. Para obter acesso Read/write a campos de banco de dados estrangeiro, você pode declarar esses arquivos como não-compartilhado nas áreas de arquivo associado com o banco de dados do host. Por exemplo, para obter acesso leitura/gravação para um EntitySet estrangeiro chamado UtilEnt cujo arquivo correspondente do sistema operacional tem o nome ZIM0185, você colocaria a entrada: 185 D:\UTILPROG 185 /usr3/utilprog/ % Este é um exemplo Zim em Windows. % Este é um exemplo Zim em UNIX. nas áreas de arquivo associado com o banco de dados do host. No Zim 8, as bases de dados estrangeiras pode ser de leitura ou gravação (read/write) como qualquer banco de dados normal. Limitações de Diretórios Extrangeiros. As seguintes limitações se aplicam ao uso de diretórios estrangeiros: 1) Cada diretório acessado por um aplicativo deve ter um ID de diretório único entre todos os diretórios que está sendo acessado ao mesmo tempo. Diretórios, neste caso, incluir subdiretórios de diretórios estrangeiros. 2) Um banco de dados não podem se conectar ao diretório raiz (diretório Zim) de outro banco de dados (ou seja, o diretório raiz não pode ser um diretório estrangeiro). 3) Diretórios estrangeiros não podem ser atualizados usando o COMPILE, UNCOMPILE, CREATE, ERASE, permissão ou comando RENAME. Você não pode atualizar a definição de objetos definidos em um diretório estrangeiro. 4) Um banco de dados de conexão não pode se conectar aos diretórios estrangeiros definidos dentro do diretório estrangeiro do banco de dados host. Zim 8.50 – Diretórios 5) Arquivos de banco de dados estrangeiro que foram criptografados com um comando ENCRYPT pode ser acessado a partir de um banco de dados conectando somente se as bases de dados de conexão e de acolhimento foram ambos inicializados usando a mesma chave de criptografia. A chave de criptografia é especificado quando o utilitário ZIMINIT é executado para inicializar um novo objeto Dictionary. ZimServer Agora aceita os mesmos diretórios estrangeiros a ser referenciado por mais de um arquivo dirs.zim, ou seja, mais de um banco de dados têm as mesmas referências do diretórios estrangeiros. Configuration Files. A relação entre os arquivos de configuração é o seguinte: ZIMDB.ZIM descreve onde os bancos de dados estão. Cada banco de dados contém um arquivo zimconfig.zim, além de um DIRS.ZIM opcional e um AREAS.ZIM opcional. Cada entrada no DIRS.ZIM aponta para um diretório estrangeiro que por sua vez (o diretório estrangeiro) pode ter um AREAS.ZIM. Observação: - Nas versões do Zim 7.11 e anteriores, o DIRID para Diretórios estrangeiros era definido com valor igual o maior a 10000, agora o valor varia de 1 a 254 para todos os tipos de diretórios. - Comentários colocados no final das linhas no arquivo dirs.zim serão interpretados como parte do caminho do caminho do banco de dados Zim; - Consultar: $ProgramFileName, $filepath() Exemplo prático: A) No banco de dados estrangeiro (chamado neste exemplo como “C:\baseteste”) entre no Zim e crie um diretório local, caso não esteja criado. - Add dirs let dirname=”Dirteste” Ownerdirname=”ZIM” DirId=3 foreing=”no” - Create dir Dirteste - Out $filepath(Dirteste) C:\baseteste\zim0100 B) Na base Local (chamado neste exemplo como “C:\baselocal”), entre no zim e crie o diretório estrangeiro. - Add dirs let dirname=”Dirteste” Ownerdirname=”ZIM” DirId=3 foreing=”Yes” - Create directory Dirteste C) Sair do Zim na base local e nesta mesma base de dados crie o arquivo dirs.zim com as seguintes informações: - 3 100 C:\baseteste Zim 8.50 – Diretórios Onde, é o Nr DirId dos dirs em ambas as bases 3 é o Nr. do arquivo externo do dir. da base estrangeira “baseteste” 100 C:\baseteste é o local e nome da base estrangeira. D) E) F) G) Execute Stop Zimserver Execute Start Zimserver Entre no zim em ambas as bases de dados (baseteste e baselocal) Na base Local execute: acc Dirteste Read Observação: o nome dos diretórios (Dirteste) e o Nr DirId (3) tem que ser iguais em ambas as bases. O diretório estrangeiro criado na base local, é criada como "zim0000", não tendo nenhum arquivo externo relacionado com ela, o que significa que a criação de mais de um diretório externo, sempre vai criar internamente como "zim0000", como é diretório estrangeiro, localmente não precisa destes arquivos de diretórios.