Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Consultant informatique
    Inscrit en
    novembre 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : novembre 2016
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Pas de fichiers dans mon dossier de sortie mais aucune erreur dans Biztalk ou de message "suspended"
    Bonjour,

    Je viens de débuter avec BizTalk et lorsque je dépose un fichier dans mon dossier d'entrée, je n'obtiens rien dans mon dossier de sortie et je n'ai aucune erreur venant de BizTalk. J'ai déjà fait d'autres petits tests avant et la cela fonctionnait, j'avais bien un fichier dans mon dossier de sortie. Les tests en question était un simple "copier/coller" de mon fichier XML pour voir si ma configuration fonctionnait et de l'extraction de données (Combien y a-t-il de propriétaires, de chats, créé un xml avec uniquement les propriétaires/les chats).

    Voici mon contexte:
    J'ai un fichier XML en entrée contenant des propriétaires et des chats (pour les besoins de l'exercice, j'ai créé ce fichier moi-même) et le but, dans un premier temps est d'extraire les propriétaires et de les mettre dans un fichier XML différent en sortie pour chacun des propriétaires.

    Le fichier XML que j'ai créé se présente comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <?xml version="1.0" encoding="UTF-8" ?>
    <CatManager xmlns="http://Manager.CatManager">
        <Owners>
            <Owner>
                 .....
            </Owner>
            <Owner>
                 .....
            </Owner>
     </Owners>
     <Cats>
            <Cat>
                .....
            </Cat>
            <Cat>
                .....
            </Cat>
    </Cats>
    Les 2 schémas que j'ai créé:
    CatManager.xsd
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
      <?xml version="1.0" encoding="utf-16" ?> 
    - <xs:schema xmlns="http://Manager.CatManager" xmlns:b="http://schemas.microsoft.com/BizTalk/2003" xmlns:cm="http://www.catmanager.fr/" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://Manager.CatManager" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    - <xs:element name="CatManager">
    - <xs:complexType>
    - <xs:sequence>
    - <xs:element minOccurs="0" name="Owners">
    - <xs:complexType>
    - <xs:sequence>
    - <xs:element maxOccurs="unbounded" name="Owner">
    - <xs:complexType>
    - <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="OwnerID" type="xs:string" /> 
      <xs:element name="Name" type="xs:string" /> 
      <xs:element name="Location" type="xs:string" /> 
    - <xs:element name="Phones">
    - <xs:complexType>
    - <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="1" name="Home" type="xs:long" /> 
      <xs:element minOccurs="1" maxOccurs="1" name="Mobile" type="xs:long" /> 
      <xs:element minOccurs="0" maxOccurs="1" name="Pro" type="xs:long" /> 
      </xs:sequence>
      </xs:complexType>
      </xs:element>
      </xs:sequence>
      </xs:complexType>
      </xs:element>
      </xs:sequence>
      </xs:complexType>
      </xs:element>
    - <xs:element minOccurs="0" name="Cats">
    - <xs:complexType>
    - <xs:sequence>
    - <xs:element maxOccurs="unbounded" name="Cat">
    - <xs:complexType>
    - <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="CatID" type="xs:string" /> 
      <xs:element name="Name" type="xs:string" /> 
      <xs:element name="Breed" type="xs:string" /> 
      <xs:element name="Birthdate" type="xs:date" /> 
    - <xs:element name="Colors">
    - <xs:complexType>
    - <xs:sequence>
      <xs:element maxOccurs="1" name="Color1" type="xs:string" /> 
      <xs:element minOccurs="0" name="Color2" type="xs:string" /> 
      </xs:sequence>
      </xs:complexType>
      </xs:element>
      <xs:element name="Neutered" type="xs:boolean" /> 
      <xs:element name="OwnerID" type="xs:string" /> 
      </xs:sequence>
      </xs:complexType>
      </xs:element>
      </xs:sequence>
      </xs:complexType>
      </xs:element>
      </xs:sequence>
      </xs:complexType>
      </xs:element>
      </xs:schema>
    Owners.xsd
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
      <?xml version="1.0" encoding="utf-16" ?> 
    - <xs:schema xmlns="http://Manager.Owners" xmlns:b="http://schemas.microsoft.com/BizTalk/2003" targetNamespace="http://Manager.Owners" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    - <xs:element name="Owners">
    - <xs:complexType>
    - <xs:sequence>
    - <xs:element name="Owner">
    - <xs:complexType>
    - <xs:sequence>
      <xs:element name="OwnerID" type="xs:string" /> 
      <xs:element name="Name" type="xs:string" /> 
      <xs:element name="Location" type="xs:string" /> 
    - <xs:element name="Phone">
    - <xs:complexType>
    - <xs:sequence>
      <xs:element name="Home" type="xs:string" /> 
      <xs:element name="Mobile" type="xs:string" /> 
      <xs:element name="Pro" type="xs:string" /> 
      </xs:sequence>
      </xs:complexType>
      </xs:element>
      </xs:sequence>
      </xs:complexType>
      </xs:element>
      </xs:sequence>
      </xs:complexType>
      </xs:element>
      </xs:schema>

    Les variables que j'ai créé:
    Nom : variables.PNG
Affichages : 21
Taille : 14,3 Ko

    Ports:
    • prtExtractSingleOwner: Comunication direction est à "Send" | Communication Pattern est à "One-Way" | Port Type est à "Manager.prtExtractOwner"
    • prtIN: Comunication direction est à "Receive" | Communication Pattern est à "One-Way" | Port Type est à "Manager.prtCtoO"
    • prtOUT: Comunication direction est à "Send" | Communication Pattern est à "One-Way" | Port Type est à "Manager.prtCtoO"


    Messages:
    • msgIN: Message Type est à "Manager.CatManager"
    • msgOUT: Message Type est à "Manager.Owners"



    Variables:
    • correlationID: String
    • counter: Int32
    • counterString: String
    • responseCount: Int32


    Port Type:
    • prtCtoO: Communication Pattern est à "One-Way" | rqtCtoO: Message Type est à "Manager.CatManager"
    • prtExtractOwner: Communication Pattern est à "One-Way" | rqtCtoO: Message Type est à "Manager.Owners"



    Mon orchestration:
    Nom : orchestration.PNG
Affichages : 16
Taille : 53,2 Ko

    Dans la shape "rcv XML":
    Message: msgIN
    Operation: prtIN.processCtoO.rqtCtoO

    Dans la shape "Count Owners":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    responseCount = xpath(msgIN, "count(/*[local-name()='CatManager' and namespace-uri()='http://Manager.CatManager']/*[local-name()='Owners' and namespace-uri()='']/*[local-name()='Owner' and namespace-uri()=''])");
    counter = 1;
    counterString = "1";
    Dans la shape "Loop":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    counter <= responseCount
    Dans la shape "Construct SingleOwner":
    Message Constructed: msgOUT

    Dans la shape "Assign SingleOwner":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    msgOUT = xpath(msgIN, "/*[local-name()='CatManager' and namespace-uri()='http://Manager.CatManager']/*[local-name()='Owners' and namespace-uri()='']/*[local-name()='Owner' and namespace-uri()=''][" + counterString + "]");
    Dans la shape "Map to OUT":
    Input Messages: msgIN
    Map Name: Manager.ExtractOwners
    Output Messages: msgOUT

    Dans la shape "Increment counter":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    counter = counter + 1;
    counterString = counter.ToString();
    Dans la shape "sndOUTCtoO":
    Message: msgOUT
    Operation: prtExtractSingleOwner.processExtractOwner.rqtExtractOwner


    Dans Biztalk, j'ai bien mes ports physiques qui sont créés et configurés, le "Receive Port" est en "One-Way" avec un "Receive Pipeline" qui est en "XMLReceive". Le "Send Port" est en "One-Way" avec un "Receive Pipeline" qui est en "PassThruTransmit".

    Voilà j'espère avoir été suffisamment clair dans l'explication de mon problème. N'hésitez pas à me dire si vous avez besoin d'en savoir plus sur mon contexte.
    Merci d'avance à ceux qui me répondront.

  2. #2
    Futur Membre du Club
    Femme Profil pro
    Consultant informatique
    Inscrit en
    novembre 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : novembre 2016
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Solution en partie trouvé mais nouveau petit soucis

    Pour ceux qui aurait le même problème que moi, il faut faire attention au binding des Outbound Maps dans le Send Ports. Comme j'avais créé une nouvelle map, je devais la changeais à cet endroit.

    Ensuite j'ai eu un second soucis dû à 2 mauvais xpath:
    Le premier dans ma shape "Count Owners"
    Le bon code est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    responseCount = xpath(msgIN, "count(/*[local-name()='CatManager' and namespace-uri()='http://Manager.CatManager']/*[local-name()='Owners']/*[local-name()='Owner'])");
    Le namespace-uri() ne se met qu'au noeud root apparement.

    Le second dans ma shape "Assign SingleOwner"
    Le bon code est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xpath(msgIN, "/*[local-name()='CatManager' and namespace-uri()='http://Manager.CatManager']/*[local-name()='Owners']/*[local-name()='Owner'][counterString]");
    Et pour finir il fallait aussi retirer la shape "Map To OUT", celle-ci écrasait mon fichier généré par "Assign SingleOwner" et j'obtenais en sortie 3 fichiers XML avec mes 3 owner dans chaque fichiers.

    Voilà pour l'explication de mon soucis initial."


    Maintenant mon dernier soucis
    Toujours dans ma shape "Assign SingleOwner", j'ai modifié le code comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    xmlBody = xpath(msgIN, "/*[local-name()='CatManager' and namespace-uri()='http://Manager.CatManager']/*[local-name()='Owners']/*[local-name()='Owner'][counterString]");
    xmlTemp.LoadXml("<ns0:CatManager xmlns:ns0=\"http://Manager.CatManager\"> + xmlBody + </ns0:CatManager>");
    msgOUT = xmlTemp;
    Je me retrouve donc en sortie avec 3 fichiers xml contenant chacun ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <ns0:CatManager xmlns:ns0="http://Manager.CatManager"> + xmlBody + </ns0:CatManager>
    Au lieu d'avoir le contenu de ma variable, j'obtiens son nom. J'ai modifié plusieurs fois cette partie du code mais ça ne change rien soit il m'affiche toujours le nom de la variable soit j'ai cette erreur dans BizTalk:
    Exception type: NullReferenceException
    Source: Manager
    Target Site: Microsoft.XLANGs.Core.StopConditions segment1(Microsoft.XLANGs.Core.StopConditions)
    The following is a stack trace that identifies the location where the exception occured

    at Manager.ManagerOrchestration.segment1(StopConditions stopOn)
    at Microsoft.XLANGs.Core.SegmentScheduler.RunASegment(Segment s, StopCondition
    Je suis sûr que le problème vient de ce bout de code mais je n'arrive pas à le résoudre

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Consultant informatique
    Inscrit en
    novembre 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : novembre 2016
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Problème résolu!

    Il manquait juste la concaténation de counterString dans ma requète xpath:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xmlBody = xpath(msgIN, "/*[local-name()='CatManager' and namespace-uri()='http://Manager.CatManager']/*[local-name()='Owners']/*[local-name()='Owner'][" + counterString + "]");

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 12/02/2015, 15h51
  2. Réponses: 1
    Dernier message: 10/10/2011, 12h11
  3. Réponses: 3
    Dernier message: 16/03/2009, 17h37
  4. Je trouve pas les .class dans mon dossier classes
    Par amine84 dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 15/12/2007, 14h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo