Looping Functoid
Contoh & gambaran umum
Functoid Perulangan menggabungkan beberapa rekaman atau bidang dalam skema sumber ke dalam satu rekaman dalam skema tujuan.
Gambar berikut menunjukkan functoid Loopingyang digunakan dalam peta untuk menggabungkan alamat yang dikumpulkan dari dua survei berbeda ke dalam satu daftar alamat master.
Catatan
Functoid Looping dan Value Mapping (Flattening) tidak boleh digunakan bersama-sama. Jika keduanya digunakan bersama-sama, itu menghasilkan peta yang dikompilasi yang mengasumsikan tidak ada dependensi perulangan sumber untuk simpul target yang berada di bawah looping functoid.
Rekaman perulangan FoodSurvey dan FlowerSurvey dari skema sumber dipetakan ke rekaman Alamat perulangan dari skema tujuan. Jika pesan instans input memiliki tiga rekaman FoodSurvey dan dua rekaman FlowerSurvey , functoid Loopingmenggabungkannya untuk membuat lima rekaman Alamat dalam pesan instans output.
Kode berikut adalah contoh pesan instans input.
<ns0:Surveys xmlns:ns0="http://LoopingFunctoid.Surveys">
<FoodSurvey Name="Karin Zimprich" Address="345 N 63rd St" City="Boston" State="MA" PostalCode="07485" />
<FoodSurvey Name="Wendy Wheeler" Address="7890 Broadway" City="Columbus" State="OH" PostalCode="46290" />
<FoodSurvey Name="Florian Voss" Address="1234 Main St" City="Denver" State="CO" PostalCode="97402" />
<FlowerSurvey Name="Kelly Focht" Address="456 1st Ave" City="Miami" State="FL" PostalCode="81406" />
<FlowerSurvey Name="Jim Kim" Address="567 2nd Ave" City="Seattle" State="WA" PostalCode="98103" />
</ns0:Surveys>
Pesan instans input ini menghasilkan pesan instans output berikut saat diproses oleh peta pada gambar sebelumnya.
<ns0:MasterAddresses xmlns:ns0="http://LoopingFunctoid.MasterAddresses">
<Address Name="Karin Zimprich" Street="345 N 63rd St" City="Boston" State="MA" PostalCode="07458"/>
<Address Name="Wendy Wheeler" Street="7890 Broadway" City="Columbus" State="OH" PostalCode="46290"/>
<Address Name="Florian Voss" Street="1234 Main St" City="Denver" State="CO" PostalCode="97402"/>
<Address Name="Kelly Focht" Street="456 1st Ave" City="Miami" State="FL" PostalCode="81406"/>
<Address Name="Jim Kim" Street="567 2nd Ave" City="Seattle" State="WA" PostalCode="98103"/>
</ns0:MasterAddresses>
Alamat pesan FoodSurvey dan FlowerSurvey telah digabungkan. Pesan gabungan tidak menunjukkan sumber setiap alamat. Jika Anda ingin melacak sumber, tambahkan atribut Sumber ke catatan Alamat skema MasterAddress dan petakan nilai konstanta. Untuk mengatur nilai ini, sambungkan bidang FoodSurvey ke bidang Sumber baru. Pada baris konektor, ubah properti Link Properties | Compiler | Source Links menjadi "Copy name". Ulangi proses ini untuk bidang FlowerSurvey . Memproses ulang pesan input dari atas menghasilkan output berikut:
<ns0:MasterAddresses xmlns:ns0="http://LoopingFunctoid.MasterAddresses">
<Address Name="Karin Zimprich" Street="345 N 63rd St" City="Boston" State="MA" PostalCode="07458" Source="FoodSurvey"/>
<Address Name="Wendy Wheeler" Street="7890 Broadway" City="Columbus" State="OH" PostalCode="46290" Source="FoodSurvey"/>
<Address Name="Florian Voss" Street="1234 Main St" City="Denver" State="CO" PostalCode="97402" Source="FoodSurvey"/>
<Address Name="Kelly Focht" Street="456 1st Ave" City="Miami" State="FL" PostalCode="81406" Source="FlowerSurvey"/>
<Address Name="Jim Kim" Street="567 2nd Ave" City="Seattle" State="WA" PostalCode="98103" Source="FlowerSurvey"/>
</ns0:MasterAddresses>
Hubungan dengan simpul
Hubungan di antara simpul mempengaruhi perilaku functoid Looping . Misalnya, menautkan node anak dan induknya dalam skema sumber ke functoid Looping mencegah node tujuan dibuat.
Functoid juga dipengaruhi oleh hubungan di antara simpul sumber. Menghubungkan functoid ke bidang anak non-saudara dari simpul sumber dari functoid Looping dapat menghasilkan hasil yang tidak terduga. Misalnya, menggunakan functoid String Concatenate untuk menggabungkan bidang Nama FoodSurvey dan bidang Alamat FlowerSurvey ke dalam bidang Nama Alamat di MasterAddress akan menghasilkan pesan instans output berikut:
<ns0:MasterAddresses xmlns:ns0="http://LoopingFunctoid.MasterAddresses">
<Address Street="345 N 63rd St" City="Boston" State="MA" PostalCode="07458"/>
<Address Street="7890 Broadway" City="Columbus" State="OH" PostalCode="46290"/>
<Address Street="1234 Main St" City="Denver" State="CO" PostalCode="97402"/>
<Address Name="Kelly Focht" Street="456 1st Ave" City="Miami" State="FL" PostalCode="81406"/>
<Address Name="Jim Kim" Street="567 2nd Ave" City="Seattle" State="WA" PostalCode="98103"/>
</ns0:MasterAddresses>
Perhatikan bagaimana bidang Nama hilang untuk pesan sumber FoodSurvey tetapi ada untuk pesan sumber FlowerSurvey .
Penting
Menghubungkan functoid ke bidang anak dari simpul sumber dari functoid Looping dapat menghasilkan hasil yang tidak terduga jika simpul sumber bukan saudara kandung.
Looping functoid adalah konstruksi kuat yang dapat Anda gunakan untuk membuat perulangan kondisional dan untuk memetakan skema ke katalog. Ada juga beberapa efek dari jalur functoid Looping yang tumpang tindih yang perlu Anda perhitungkan.
Langkah berikutnya
Lihat juga
Referensi Functoid Looping Tabel dalam panduan UI dan referensi namespace LAYANAN API pengembang