Custom Edifact Disassembler/Assembler
Mikkel B. Mikkelsen
How to create a custom disassembler/assembler in Link
Needed assemblies:Â
- Bizbrains.LinkAssembler.Base.dll (part of the Biztalk package)
If you want to create your own disassembler or assembler you have the following options:
- Implement the interface: Bizbrains.LinkAssembler.Base.ILinkDisassembler
- Implement the interface: Bizbrains.LinkAssembler.Base.ILinkAssembler
Link has two implementations of each interface out-of-the-box. See Edifact Disassembler/Assembler
How to use a custom edifact disassembler/assembler in Link
At the time writing it is a manual process to register the disassembler/assembler.
This is done on the FormatTypes directly in the database.
Table name: DistributionModel.tFormatTypes
In this table there are two columns:
- FullyQualifiedNameDisassembler
- FullyQualifiedNameAssembler
In these columns you can register the ILinkDisassembler or ILinkAssembler implementation.
This is the fully qualified class and assembly name - eg:
Bizbrains.LinkAssembler.Edifact.SeeburgerEdifact, Bizbrains.LinkAssembler.Edifact, Version=1.0.0.0, Culture=neutral, PublicKeyToken=7685f304a6e7e148
When this done you need to restart the host-instance in Biztalk. And you are ready to go.
Build-in disassemblers/assemblersÂ
Needed assemblies (all deployed automatically with Link 2.9)
- Bizbrains.EdifactDisassembler.dll (NETSTANDARD dll)Â
Bizbrains.LinkAssembler.Edifact.dll (.NET 4.6.1 dll)
- Bizbrains.LinkAssembler.Base.dll (.NET 4.5 dll)
The build-in assemblers/disassemblers are written in .NET Standard, which means that you should either install the .NET standard library on the server or you can install the "netstandard.dll" directly in the GAC.
You can download the netstandard.dll here if you want to install it manually.
Implementations
Link has at the moment two implementations of both a disassembler and an assembler:
Microsoft Edifact
Both ILinkDisassembler and ILinkAssembler are implemented in this class:
Bizbrains.LinkAssembler.Edifact.MicrosoftEdifact, Bizbrains.LinkAssembler.Edifact, Version=1.0.0.0, Culture=neutral, PublicKeyToken=7685f304a6e7e148
LinkSetting key
The following LinkSetting key is needed to tell the assembler/disassembler where to look for XML Schemas:
LinkEdifact_DisassembleSchemaPath_Microsoft and LinkEdifact_AssembleSchemaPath_Microsoft
The value should be a path to a folder - eg. c:\edifact\microsoft\schemas
Naming convention of XML Schemas
The schemas for the Microsoft edifact should be named:
"EFACT_{MessagerVersionNumber}Â {MessageReleaseNumber}_{MessageType}_{AssociationAssignedCode}.xsd" (eg. EFACT_D96A_INVOIC_EN.xsd)
or
"EFACT_{MessagerVersionNumber} {MessageReleaseNumber}_{MessageType}.xsd" (eg. EFACT_D96A_INVOIC.xsd)
Seeburger Edifact
Both ILinkDisassembler and ILinkAssembler are implemented in this class:
Bizbrains.LinkAssembler.Edifact.SeeburgerEdifact, Bizbrains.LinkAssembler.Edifact, Version=1.0.0.0, Culture=neutral, PublicKeyToken=7685f304a6e7e148
LinkSetting key
The following LinkSetting key is needed to tell the assembler/disassembler where to look for XML Schemas:
LinkEdifact_DisassembleSchemaPath_Seeburger and LinkEdifact_AssembleSchemaPath_Seeburger
The value should be a path to a folder - eg. c:\edifact\seeburger\schemas
Naming convention of XML Schemas
The schemas for the Seeburger edifact should be named:
"XML_SEE_{MessagerVersionNumber} {MessageReleaseNumber}_{MessageType}_{AssociationAssignedCode}.xsd" (eg. XML_See_D96A_INVOIC_EN.xsd)
or
"XML_SEE_{MessagerVersionNumber} {MessageReleaseNumber}_{MessageType}.xsd" (eg. XML_See_D96A_INVOIC.xsd)
Content on this page:
The information on this page is based on Link 2.10