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:
Les 2 schémas que j'ai créé:
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>
CatManager.xsd
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
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>
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éé:
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:
Dans la shape "rcv XML":
Message: msgIN
Operation: prtIN.processCtoO.rqtCtoO
Dans la shape "Count Owners":
Dans la shape "Loop":
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 "Construct SingleOwner":
Code : Sélectionner tout - Visualiser dans une fenêtre à part counter <= responseCount
Message Constructed: msgOUT
Dans la shape "Assign SingleOwner":
Dans la shape "Map to OUT":
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 + "]");
Input Messages: msgIN
Map Name: Manager.ExtractOwners
Output Messages: msgOUT
Dans la shape "Increment counter":
Dans la shape "sndOUTCtoO":
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 counter = counter + 1; counterString = counter.ToString();
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.
Partager