|
![]() |
#1 |
Moderator
|
К сожалению, вы на верном пути. MS помешаны на строгой типизации вплоть до апсурда: нужно создавать Property нужного типа, чтобы его потом серелизовать в строку, чтобы потом платформа все равно преобразовывала его в объект. Когда я решал задачу интеграции 2 систем, то использовал следующий подход:
1. Системы обмениваются через шину неким стандартным xml, который содержит тип сообщения, данные о объекте и метаданные... Например: Код: <?xml version="1.0" encoding="utf-8" ?> <Message xmlns="http://tempuri.org/EntitySchema.xsd"> <Entity type="contact"> <Attributes> <Attribute name="crm_id" type="Key"> <Value>{19F7FABE-6530-DD11-9D00-001B7895C8E2}</Value> </Attribute> <Attribute name="altair_id" type="String"> <Value>12345677</Value> </Attribute> </Attributes> </Entity> <Metadata> <Event type="CreateResponse" errorcode="0" errormessage="Карасавчег" /> <Sourcedata source="Altair" user="AtrairUser" /> </Metadata> </Message> 3. Для приведения типов полей используется еще одна XML следующего вида: Код: <?xml version="1.0" encoding="utf-8" ?> <Entitys xmlns="http://tempuri.org/AttributeMap.xsd"> <Entity Name="account" TypeCode="1"> <Attribute internalName="ics_synch" externalName="ics_synch" Type="bool" /> <Attribute internalName="ics_altair" externalName="altair_id" Type="String"/> <Attribute internalName="accountid" externalName="crm_id" Type="Key" /> <Attribute internalName="name" externalName="name" Type="String" /> <Attribute internalName="ics_fullname" externalName="fullname" Type="String" /> <Attribute internalName="telephone1" externalName="telephone" Type="String" /> <Attribute internalName="fax" externalName="fax" Type="String" /> <Attribute internalName="emailaddress1" externalName="email" Type="String" /> <Attribute internalName="statecode" externalName="statecode" Type="State" /> <Attribute internalName="ics_industry" externalName="industry" Type="String" /> <Attribute internalName="ics_governmentid" externalName="governmentid" Type="String" /> <Attribute internalName="sic" externalName="firmid" Type="String" /> <Attribute internalName="ics_fulladdress" externalName="address" Type="String" /> <Attribute internalName="ics_fulladdressfact" externalName="address2" Type="String" /> </Entity> <Entity Name="contact" TypeCode="2"> <Attribute internalName="ics_synch" externalName="ics_synch" Type="bool"/> <Attribute internalName="ics_altair" externalName="altair_id" Type="String"/> <Attribute internalName="contactid" externalName="crm_id" Type="Key"/> <Attribute internalName="firstname" externalName="firstname" Type="String"/> <Attribute internalName="lastname" externalName="lastname" Type="String"/> <Attribute internalName="middlename" externalName="middlename" Type="String"/> <Attribute internalName="jobtitle" externalName="jobtitle" Type="String"/> <Attribute internalName="department" externalName="department" Type="String"/> <Attribute internalName="telephone1" externalName="telephone" Type="String"/> <Attribute internalName="emailaddress1" externalName="email" Type="String"/> <Attribute internalName="fax" externalName="fax" Type="String"/> <Attribute internalName="birthdate" externalName="birthday" Type="DateTime"/> <Attribute internalName="parentcustomerid" externalName="parentcustomerid" Type="GUID"/> <Attribute internalName="ics_documenttype" externalName="documenttype" Type="String"/> <Attribute internalName="ics_documentnumber" externalName="documentnumber" Type="String"/> <Attribute internalName="ics_documentseries" externalName="documentseries" Type="String"/> <Attribute internalName="ics_issuedate" externalName="issuedate" Type="DateTime"/> <Attribute internalName="ics_issueplace" externalName="issueplace" Type="String"/> </Entity> </Entitys> p.p.s.Для преобразования XML возможно использовать XSLT, возможно удатся сократить количество строк кода.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. ![]() ![]() |
|
Теги |
com connector, интеграция, сущность |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|