Erro no loading de Views

Postman

Causa provável - View (cshtml) com resources erradas ou não geradas;

Identificação da origem do problema - Localizar a View em questão em 'Product>\Host\Views\\' - Unminify da View e pesquisar por erros em Localizable Resources [RES_]

Correção 1 (resources) - No módulo da View, executar os Text Templates (.tt) referentes a Localization; - Compilar novamente o projeto Domain.Entities do módulo; - Executar Elevation / Nuget / Replace Assemblies in Local Repository;

Postman

Correção 2 (cshtml) - Caso o problema seja uma resource que já não existe ou foi substituída, executar a Text Template View.ttm do projeto Host; - Copiar a view em questão ('view'.cshtml) para a respetiva pasta no produto (manualmente ou com script powershell);

Postman

Dessincronização de modelos

Campos novos ou alterados de uma entidade não ficam disponíveis/atualizados em (ex.): - Services Model - Resource, List Operation, Service Operation - Presentation Model – View, List Operation

Causa provável

Uma ou mais entidades foram alteradas no Entities Model e/ou Services Model e não foi feita a sincronização para o Presentation Model;

Correção

  • Garantir que o json do Entites Model e/ou Services Model foi transformado;

Postman

  • Services Model – no menu de contexto selecionar Synchronize All Columns Information
  • Presentation Model – no menu de contexto selecionar consoante o caso:
  • Operations (Editor) -> Synchronize All Operations Information
  • Operations (List) -> Synchronize All Create Actions and List Views
  • Operations (Extension) -> Synchronize Captions For All Extensions

Postman

Atributos de Entidades e Interfaces em módulos dependentes

Problema

• As propriedades de uma Entidade foram adicionadas/removidas/alteradas e estão referenciadas noutro módulo dependente;

• As propriedades de uma Interface foram adicionadas/removidas ou alterado algum atributo e estão referenciadas noutro módulo dependente;

Solução

Vamos tomar como exemplo um módulo base (FinancialCore) e um módulo dependente (Accounting). Para qualquer uma das anteriores alterações se reflectir no módulo dependente, existem 2 opções.

Opção 1 Check-in das alterações. Requisitar build do módulo base e de seguida do módulo dependente;

Opção 2(*) Para evitar o pedido de builds, efetuar os seguintes passos: 1. Executar a TextTemplate (.tt) referente ao EntitiesModel do módulo base (FinancialCore).

Postman

  1. Copiar o ficheiro .json respetivo para a pasta correspondente do módulo dependente (Accounting)

Postman

  1. Executar os TextTemplates (todos) no módulo base por forma a gerar novamente as entidades e as suas novas ou alteradas propriedades;

Postman

  1. Compilar o projeto do módulo base (FinancialCore);

  2. Executar Elevation / Nuget / Replace Assemblies in Local Repository;

  3. Garantir, no projeto Models do módulo dependente (Accounting), que as referências para o módulo base (FinancialCore) estão a apontar para o path correto (…/packages/…).

  4. Por vezes a cache no Visual Studio não permite um refresh automático: fechar o VS, e voltar a abrir no modelo de Entidades (EntitiesModel);

  5. Por fim, verificar se as novas propriedades da entidade ou da interface estão disponíveis no módulo dependente (Accounting):

Postman

Postman

UI Rules – Parent e ParentModel

Parent

Na definição de uma UI Rule por vezes é necessário referenciar propriedades de entidades que são do tipo Master/Detail. A notação correta nestes casos é:

Postman

ParentModel

Quando é necessário referenciar propriedades de uma VIEW parent (e.g. JournalEntryLine), para executar uma UI Rule sobre a representação de uma propriedade (e.g. financialAccount) de uma VIEW MODAL (detalhe de linha).

Postman

UI Rules vs API

As regras presentes nas UI Rules são aplicáveis somente do lado cliente. No entanto, podem conter alguma lógica de negócio que é importante identificar e aplicar sob forma de Custom Validation nos Managers. Isto garante uniformidade com os requests via API.

Um exemplo concreto: Módulo: Accounting Entidade: JournalEntryLine

UI Rule

Postman

Validation

Postman

Atenção: evitar na medida do possível esta duplicação de Regras (UI Rules) e respetivas Custom Validations. Deve ser dada preferência à Custom Validation.

AssemblyInfo não atualizadas

Se os ficheiros AssemblyInfo de um módulo não estiverem a ser atualizados com a versão correta da build, devem ser seguidos os seguintes passos para poder executar localmente:

  1. Alterar todas as AssemblyInfo no módulo com a versão correta e gravar;
  2. Compilar a solução
  3. Fazer Check out do nuget.config no produto
  4. Adicionar LocalPackages às package sources: Package Manager Console > Clicar na roldana das definições > Inserir os LocalPackages

AssemblyInfo

  1. Fazer Update dos packages a apontar para os LocalPackages Menu ELEVATION > NuGet > Update Packages to Latest Version > selecionar LocalPackages

AssemblyInfo

  1. Fazer restore dos packages na consola (Package Manager Console)
  2. Se houver código no módulo diferente do da última build, compilar o módulo e através do menu ELEVATION > NuGet > Replace Assemblies in Local Repository...
  3. Correr o produto.