A classe de Adapter poderá herdar de diferentes classes base de adapter EAI. Para o Recebimento temos EAIAdapterDataServerObjBase, EAIAdapterSimpleBase, EAIAdapterProcessBase Na utilização do EAIAdapterDataServerObjBase para recebimento utilizando um Model (Muito utilizado em cadastros), e com utilização de DataServer, temos: 1 - Criar um Model que represente o Envio e Recebimento da Mensagem que pode ser trafegada em JSon ou XML. 2 - Definir a Herança como Type do Model criado. Exemplo: StockGroup_Receive_1000 : EAIAdapterDataServerObjBase<StockGroup_Model_V1_BusinessContent> 3 - Informar no cabeçalho da Classe os atributos para Nome Versão, e Descrição com Resource (Tradução) do Adapter. [AdapterAttr(typeof(Properties.Resources), "sEstAdapterGrupoDeProdutoName", "STOCKGROUP", "1.000")] 4 - O método DoGetPrimaryKeysByBusinessContent se implementado possibilitara que um registro seja recebido e processado, mesmo que o registro já exista e seu De/Para não exista. Utilizado por exemplo para entidades que já vem com informações na Base de Dados como é o caso das Unidades de Médida. Neste exemplo de Grupo de Produto também foi implementado por se achar interessante, visto que é uma entidade simples, de chave simples. 5 - É recomentado a utilização do método DoPrepareDataset para atribuição dos valores a classe já possui a propriedade BusinessContent que representa o Model já carregado com as informações recebendo como parâmetro o DataSet já com a linha carregada, caso exista o registro, ou com um registro com valores default caso seja uma inclusão. 6 - O método DoGetInfoTableDePara define a chave primeira e estrangeiras que são utilizadas na tabela, para definição do de/para do registro e para definição de recuperação de de/paras referente a chave estrangeira. Em situações especiais, caso o padrão da LIB não consiga resolver e popular os respectivos valores dos campos relacionados a chaves estrangeiras, podemos sobrescrever o método DoBuildKeys adaptando-o de acordo com o XML. Observer o trecho de código abaixo utilizado no adapter de recebimento. Bloco de código |
---|
language | c# |
---|
themefirstline | Eclipse100 |
---|
title | Model |
---|
linenumbers | true |
---|
DoBuildKeys |
| protected override ListInfoTableDePara DoGetInfoTableDePara()
{
ListInfoTableDePara lstTable = new ListInfoTableDePara();
lstTable.Add(GetInfoFKsBusinessContent());
lstTable.Add(GetInfoCustoEquipamento());
return lstTable;
}
private InfoTableDePara GetInfoFKsBusinessContent()
{
InfoTableDePara itemTable = new InfoTableDePara(TableName, "BUSINESSCONTENT");
itemTable.DescriptionName = "BUSINESSCONTENT";
InfoColumnDePara itemColumn = new InfoColumnDePara("COMPANYINTERNALID", "CODCOLIGADA|CODFILIAL", "GFILIAL");
itemColumn.ForeignKeyDePara = true;
itemTable.ColumnsName.Add(itemColumn);
InfoColumnDePara AssetColumn = new InfoColumnDePara("ASSETINTERNALID", "|IDPATRIMONIO", "IPATRIMONIO");
AssetColumn.ConsistirForeignKeyDePara = true;
AssetColumn.ForeignKeyDePara = true;
itemTable.ColumnsName.Add(AssetColumn);
return itemTable;
[System.SerializableAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
[System.Xml.Serialization.XmlRootAttribute(ElementName = "BusinessContent", IsNullable = false)]
[MessageContentTypeAttr("STOCKGROUP", 1, MessageTypeEnum.tmBusinessMessage)]
public partial class StockGroup_Model_V1_BusinessContent : EAIBusinessContentModelBase
{
[ColumnAttr("INTERNALID")]
public string InternalId { get; set; }
[ColumnAttr("COMPANYINTERNALID")]private InfoTableDePara GetInfoCustoEquipamento()
public{
string CompanyInternalId { get; set; }
InfoTableDePara itemTable = new [ColumnAttrInfoTableDePara(TableName, "CODTB2FATASSETMONTHLYUNDIRECTCOSTS")];
public string CodeitemTable.DescriptionName { get; set; }
[ColumnAttr("INATIVO", 0)]= Properties.Resources.sPrjCustoDiretoEquipamento;
InfoColumnDePara internalid = new InfoColumnDePara(EAIConsts.ctINTERNALID, "CODCOLIGADA|IDPRJ|MESANO|IDPATRIMONIO|CODCCUSTOBEM", TableName);
public int Inativointernalid.ForeignKeyDePara {= get; set; }false;
itemTable.ColumnsName.Add(internalid);
[ColumnAttr("DESCRICAO")] InfoColumnDePara ccustoColumn = new InfoColumnDePara("COSTCENTERINTERNALID", "|CODCCUSTO", "GCCUSTO");
public string Description { get; set; }
[ColumnAttr("CAMPOLIVRE")]// ccustoTable.InternalIdForeignKeyObrigatorio = true;
// ccustoTable.ConsistirForeignKeyDePara = true;
ccustoColumn.FieldsForeignKey = "|CODCCUSTOBEM";
ccustoColumn.ForeignKeyDePara = true;
itemTable.ColumnsName.Add(ccustoColumn);
public stringreturn FamilyClassificationCodeitemTable;
{ get; set; }
protected override void DoBuildKeys(ref EAIPrepareDataServerObjResult }
[System.SerializableAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
[System.Xml.Serialization.XmlRootAttribute(ElementName = "ReturnContent", IsNullable = false)]
[MessageContentTypeAttr("STOCKGROUP", 1, MessageTypeEnum.tmResponseMessage)]
public partial class StockGroup_V1_ReturnContent : EAIReturnContentWithListModelBase
{
} |
|