|
|
#2 |
|
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, снятие/наведение порчи. Быстро, дорого, гарантия. ![]() MS Certified Dirty Magic Professional
|
|
|
| Теги |
| com connector, интеграция, сущность |
|
|
|