Mule Data Integrator – The DADS-U Transformation

My colleague (Luc Boutier) and myself worked end of last year on a POC around Mule Data Integrator (MDI).

MDI is a graphical tool to ease data transformation which is proposed by MuleSoft. It support out of the box several descriptive format to easily import the data structure.

This paper is about the mapping of a french data structure called DADS-U. It’s used by government to collect company’s informations (company structure, employees informations, etc…) for french retirement system.
The greatest difficulty we encountered was to map this structure which uses a proprietary format composed by <key,value> pairs and does not match default formats implemented by MDI (like CSV etc…).

BEGIN FILE
	S10.G01.00.001.001,'732829320'
	S10.G01.00.001.002,'00010'
	S10.G01.00.002,'Unknown'
	S10.G01.00.003.001,'Service du Personnel'
	S10.G01.00.003.002,' '
	S10.G01.00.003.003,'285'
	S10.G01.00.003.005,' '
	S10.G01.00.003.006,'Unknown'
	S10.G01.00.003.008,' '
	S10.G01.00.003.010,'75000'
	S10.G01.00.003.011,' '
	S10.G01.00.003.012,'PARIS'
	S10.G01.00.004,' '
	(...)
END FILE

And could correspond to this logical tree: for exemple « S10.G01.00.00X » could be a branch or a leaf.

BEGIN FILE
	S10
	|	`- S10.G01.00.001
	|	|		`- S10.G01.00.001.001 -> value
	|	|		`- S10.G01.00.001.002 -> value
	|	`- S10.G01.00.002 -> value
	|	`- (...)
	S20
	|	`- (...)
	S30
	|	`- (...)
	S90
	|	`- S90.G01.00.001 -> value
	|	`- S90.G01.00.002 -> value
END FILE

Because this file could have a more than 10MB size we had to create MDI structure semi-automatically using intermediate MDI structures & maps.

So this is the method to do:

  • Firstly you must import this file and create a new structure using MDI software and add several other element to recognize pairs line by line. You must have a MDI structure composed by:
    BEGIN MDI STRUCTURE
    	Line (0:*)
    	|	`- Element: Row (0:*)
    	|	|	`- Element: Key_part1
    	|	|	`- Element: Separator
    	|	|	`- Element: Key_part2
    	|	|	`- Element: Separator
    	|	|	`- Element: Key_part3
    	|	|	`- Element: Separator
    	|	|	`- Element: Key_part4
    	|	|	`- Element: Separator
    	|	|	`- Element: Key_part5
    	|	`- Element: Separator
    	|	`- Element: Value
    END MDI STRUCTURE

    Example for the first line:

    BEGIN MDI STRUCTURE
    	Line: 1
    	|	`- Element
    	|	|	`- Element: "S10"
    	|	|	`- Element: "."
    	|	|	`- Element: "G01"
    	|	|	`- Element: "."
    	|	|	`- Element: "00"
    	|	|	`- Element: "."
    	|	|	`- Element: "001"
    	|	|	`- Element: "."
    	|	|	`- Element: "001"
    	|	`- Element: ","
    	|	`- Element: "732829320"
    END MDI STRUCTURE
  • Secondly you must create a new structure like below and apply a « Drag and Drop » mapping via MDI to apply these calculation:
    BEGIN MDI STRUCTURE
    	Line (0:*)
    	|	`- Element: Row (0:*)
    	|	|	`- Element: Key
    	|	|	`- Element: Index -> Integer - range of the key
    	|	|	`- Element: Leaf -> boolean - if the line is a branch or a leaf
    	|	`- Element: Separator
    	|	`- Element: Value
    END MDI STRUCTURE

    Example for the first line:

    BEGIN MDI STRUCTURE
    	Line: 1
    	|	`- Element
    	|	|	`- Element: "S10.G01.00"
    	|	|	`- Element: 1
    	|	|	`- Element: false
    	|	`- Element
    	|	|	`- Element: "001"
    	|	|	`- Element: 2
    	|	|	`- Element: false
    	|	`- Element
    	|	|	`- Element: "001"
    	|	|	`- Element: 3
    	|	|	`- Element: true
    	|	`- Element: ","
    	|	`- Element: "732829320"
    END MDI STRUCTURE
  • Thirdly you must make a new mapping using « Drag and Drop » mode from the previous structure to a default MDI structure (« Builtin » default project -> « Structures/UpdateImporter »).
    • For optimal functioning, it’s important that the different loops beyond final structure have MDI « Sequences » type.
    • It will be composed of three loops (Dadsu, Line, Element) and each loop corresponds to the element « Element(0:*) » of the « UpdateImporter » structure.

Finally you have a DADS-U structure (of any size):

BEGIN MDI STRUCTURE
	Dadsu
	|	`- Lines
	|	|	`- S10.G01.00
	|	|	|	`- 001
	|	|	|	|	`- 001
	|	|	|	|	`- 002
	|	|	|	`- 002
	|	|	|	`- 003
	|	|	|	|	`- 001
	|	|	|	|	`- 002
	|	|	|	|	`- 003
	|	|	|	|	`- (...)
	|	(...)
END MDI STRUCTURE

The aim of this paper is not to describe how to use MDI, but rather to show an approach to adapt a proprietary format of MDI and avoid creating a structure by adding items one by one. Which can be time consuming if the structure you want to map is consistent.

Xavier

Voeux 2011

Chers collègues et amis de FastConnect,

Je tenais à vous présenter mes meilleurs voeux pour cette Année 2011 qui s’annonce trépidante et stratégique pour FastConnect.

Après une formidable Année 2010 où nous avons plus que jamais validé notre stratégie unique en son genre, je suis réellement impatient de vivre à vos côtés cette période charnière qui va se dérouler.

Un survol rapide de notre Année 2010 fait ressortir plusieurs étapes clés:

  • Adossement au groupe Ambitio qui nous permet aujourd’hui d’accélérer notre développement de la manière la plus sereine possible.
  • Franchissement du cap des 50 salariés avec une activité de recrutement de qualité et une cooptation active.
  • Mise en place de nos Centres d’Expertise Orientés Service avec des succès majeurs sur la plate-forme SOA TIBCO et la plate-forme GigaSpaces, notamment à la Société Générale.
  • Renforcement de nos partenariats existants grâce à notre positionnement unique et la valeur ajoutée qui en découle pour le client et pour l’éditeur.
  • Développement de nouveaux partenariats sur des solutions toujours plus innovantes avec Optier pour le Business Transaction Management (BTM).
  • Implication sur nouveaux projets et des nouveaux secteurs d’activité.

Un petit teaser de ce qui nous attend en 2011:

  • Implantation d’une Agence à Toulouse pour servir nos clients de la région toulousaine sous la direction d’un Manager local.
  • Mise en place d’un centre de Support et R&D basé à Rennes avec le recrutement d’un Manager local pour prendre en charge toute l’Activité Support Editeur mais également structurer toutes nos activités R&D et piloter certains de nos développements au forfait.
  • Développement actif de nos projets dans le domaine du Cloud privé et public et de la supervision métier de bout en bout au sein d’architectures distribuées toujours plus complexes.
  • Implication plus forte au sein de nouvelles industries (e-commerce, telecoms, e-gaming).
  • Développement de notre activité au travers de nouveaux partenariats et de rapprochements stratégiques, toujours dans la continuité de notre construction d’une architecture de référence permettant d’adresser nos besoins de réactivité, flexibilité, performance, haute-disponibilité, évolutivité, le tout à coût maitrisé.

Merci pour votre implication sans laquelle tout cela ne serait pas possible et Bonne Année à tous !

Jerome S.