Importer des business objects avec une relation m-to-n
Cet exemple décrit une importation d'un fichier Excel avec un questionnaire et ses questions (sélection simple).
Des questions peuvent être associées à plusieurs questionnaires. Ainsi il y a un tableau de lien m-to-n (QuestionnaireQuestion) entre le questionnaire et la question.
Ce tableau QuestionnaireQuestion m-to-n, a part des liens au questionnaire et à la question a également un champ pour le numéro de séquence.
Le fichier Excel est plat et ressemble à ceci :
Le fichier Excel doit être transformé afin de créer un fichier XML de trois niveaux parce que trois business objects doivent être saisis.
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/
1999/XSL/Transform">
<xsl:output method="xml" />
<xsl:template match="Questionnaire">
<Questionnaire>
<QNCode><xsl:value-of select="QNCode" /></QNCode>
<QNDescription><xsl:value-of select="QNDescription" />
</QNDescription>
<QNDomain><xsl:value-of select="QNDomain" /></QNDomain>
<QN_QS_LINK>
<Question>
<QSCode><xsl:value-of select="QSCode" /></QSCode>
<QSDescription><xsl:value-of select="QSDescription" />
</QSDescription>
<QSMandatory><xsl:value-of select="QSMandatory" />
</QSMandatory>
<QSType><xsl:value-of select="QSType" /></QSType>
</Question>
<SequenceNumber><xsl:value-of select="SequenceNumber" />
</SequenceNumber>
</QN_QS_LINK>
</Questionnaire>
</xsl:template>
</xsl:stylesheet>
Le document aura 4 travailleurs :
• ExcelReaderWorker
• XSLWorker
• XMLToPOJOConvertor
• PlanonWriterWorker
Et trois définitions de business obect :
• Questionnaire
• Question
• QN_QS_LINK
QN_QS_LINK se réfère au tableau de lien QuestionnaireQuestion m-to-n. Les questions sont ajoutées (dans cet exemple) comme singleSelectQuestions.
A côté d'ajouter des champs au Questionnaire et à la Question, des champs doivent être ajoutés au business object QuestionnaireQuestion. Il faut ajouter deux champs de référence à ce business object : un au business object Question et Questionnaire et le champ VQuestionnaireQuestion.