Bagikan melalui


Mengembangkan Functoid Sebaris Kustom

Functoid sebaris kustom menyediakan fungsionalitas dengan menyalin kode implementasi langsung ke peta dan bukan dengan merujuk perakitan, kelas, dan nama metode seperti functoid yang dirujuk khusus.

Membangun Skrip Sebaris

Ada dua cara untuk menyediakan skrip untuk dimasukkan ke dalam peta. Pilih dari metode berikut, berdasarkan apakah functoid kustom Anda mendukung jumlah variabel parameter:

  • Ambil alih GetInlineScriptBuffer saat functoid kustom Anda menerima jumlah variabel parameter input dan Anda telah mengatur properti HasVariableInputs ke true. Misalnya, gunakan metode ini jika Anda ingin menggabungkan jumlah variabel string atau menemukan nilai terbesar dalam sekumpulan nilai.

  • Gunakan SetScriptBuffer saat Anda tidak perlu mendukung jumlah variabel parameter input. Anda masih dapat menggunakan parameter opsional, tetapi jumlah total parameter diperbaiki.

    Kedua metode ini membutuhkan implementasi yang berbeda.

Menyediakan Kode Sebaris dengan SetScriptBuffer

Untuk mengonfigurasi functoid kustom Anda untuk menggunakan skrip sebaris:

  1. Panggil AddScriptTypeSupport dengan Microsoft.BizTalk.BaseFunctoids.ScriptType untuk mengaktifkan kode sebaris dan mengatur jenis skrip yang didukung.

  2. Panggil SetScriptBuffer untuk mengatur kode yang akan digunakan untuk functoid kustom. Anda akan memanggil fungsi ini tiga kali dengan functionNumber parameter untuk functoid kumulatif kustom dan sekali untuk functoid nonkumulatif kustom.

  3. Gunakan SetScriptGlobalBuffer untuk mendeklarasikan variabel global apa pun yang digunakan kode sebaris Anda.

  4. Gunakan RequiredGlobalHelperFunctions untuk menunjukkan fungsi pembantu yang diperlukan functoid sebaris kustom Anda.

    Anda dapat membuat skrip dengan menggunakan StringBuilder atau konstanta. Salah satu pendekatan untuk menulis kode skrip adalah menulis functoid yang direferensikan khusus terlebih dahulu dan, ketika semua bug dihilangkan, konversikan menjadi sebaris dengan menyalin fungsi Anda ke dalam konstanta string.

Menyediakan Kode Sebaris dengan GetInlineScriptBuffer

Jika functoid sebaris kustom Anda mendukung jumlah parameter variabel, Anda akan mengambil alih GetInlineScriptBuffer. Untuk mengonfigurasi functoid kustom Anda untuk menggunakan skrip sebaris:

  1. Di konstruktor, nyatakan bahwa functoid kustom Anda memiliki input variabel dengan mengatur HasVariableInputs ke true.

  2. Di konstruktor, panggil AddScriptTypeSupport dengan Microsoft.BizTalk.BaseFunctoids.ScriptType untuk mengaktifkan kode sebaris dan mengatur jenis skrip yang didukung.

  3. Ambil alih GetInlineScriptBuffer untuk membuat dan mengembalikan kode yang akan digunakan dalam peta untuk functoid kustom Anda. Gunakan parameter untuk membangun kode yang benar dengan memeriksa scriptType dan numParams. Parameter akhir, functionNumber, harus 0. Ini karena fungsi kumulatif memiliki jumlah input tetap dan tidak menggunakan mekanisme ini.

  4. Gunakan SetScriptGlobalBuffer untuk mendeklarasikan variabel global yang digunakan kode sebaris Anda.

  5. Gunakan RequiredGlobalHelperFunctions untuk menunjukkan fungsi pembantu yang diperlukan functoid sebaris kustom Anda.

    Fragmen kode berikut membangun fungsi C# dengan jumlah parameter yang diteruskan numParams tetapi tanpa isi fungsi. Untuk menggunakan fragmen kode ini, salin contoh ke solusi Anda dan tambahkan kode untuk melakukan sesuatu dengan parameter dan mengembalikan nilai.

// Override GetInlineScriptBuffer  
protected override string GetInlineScriptBuffer(ScriptType scriptType, int numParams, int functionNumber)  
{  
    // Is this one of the supported script types?  
    if(ScriptType.CSharp == scriptType)  
    {  
        // Assume functionNumber == 0  
        StringBuilder builder = new StringBuilder();  
        // Function declaration   
        builder.Append("public string MyFunction("  
        // Declare parameters using numParams  
        for(int i=0; i<numParams; i++)  
        {  
            // Separate params with a comma  
            if(i > 0)  
                builder.Append(", ");  
            // Declare parameters, param0 to paramNUMPARAM  
            builder.Append("string param" + i.ToString());  
        }  
        builder.Append(")\n");  
        // Function body; process params as needed  
        builder.Append("{\n");  
        builder.Append("}\n");  
        // Return script  
        return builder.ToString();  
    }  
    // scriptType is unsupported  
    return string.Empty;  
}  

Menguji Skrip Sebaris

Pengujian adalah pertimbangan penting dalam upaya pengembangan apa pun. Functoid sebaris kustom bisa menjadi tantangan untuk diuji. Untuk menyederhanakan proses, gunakan salah satu atau kedua teknik berikut:

  • Periksa XSLT peta yang menggunakan functoid sebaris kustom.

  • Verifikasi input dan output peta yang menggunakan functoid sebaris kustom.

Memeriksa XSLT Peta yang Menggunakan Functoid Sebaris Kustom

Teknik ini sering mengungkapkan masalah dengan masalah sintaksis logika atau halang. Ini juga membantu Anda memahami apa yang terjadi di peta.

Untuk melihat XSLT untuk peta:

  1. Dari proyek Visual Studio BizTalk, klik tab Penjelajah Solusi, klik kanan peta yang menggunakan functoid sebaris kustom Anda, lalu klik Validasi Peta.

  2. Gulir jendela Output untuk menemukan URL untuk file XSLT. Tekan CTRL dan klik URL untuk melihat file.

Catatan

Ingat bahwa setiap perubahan yang dilakukan pada file XSLT tidak akan tercermin dalam functoid kustom Anda.

Menguji Peta yang Menggunakan Functoid Sebaris Kustom

Ini menguji apakah peta dan functoid sebaris kustom berfungsi seperti yang diharapkan.

Untuk menguji peta:

  1. Dari proyek Visual Studio BizTalk, klik tab Penjelajah Solusi, klik kanan peta yang menggunakan functoid sebaris kustom Anda, lalu klik Uji Peta.

  2. Gulir jendela Output untuk menemukan URL untuk file output. Tekan CTRL dan klik URL untuk melihat file.

    Anda dapat memeriksa nilai input dan output untuk memverifikasi bahwa peta berperilaku seperti yang diharapkan.

Contoh

Contoh berikut menggambarkan cara membuat functoid sebaris kustom untuk menggabungkan dua string. Ini bergantung pada file sumber daya yang berisi tiga sumber daya string dan sumber daya bitmap 16x16-piksel.

using System;  
using Microsoft.BizTalk.BaseFunctoids;  
using System.Reflection;  
using System.Text;  
  
namespace Microsoft.Samples.BizTalk.CustomFunctoid  
{  
    /// <summary>  
    /// Performs a string concatenation using inline code.  
    /// </summary>  
    public class CustomStringConcatFunctoid : BaseFunctoid  
    {  
        public CustomStringConcatFunctoid()  
            : base()  
        {  
            //ID for this functoid  
            this.ID = 6001;  
  
            // Resource assembly must be ProjectName.ResourceName if building with VS.Net  
            SetupResourceAssembly("Microsoft.Samples.BizTalk.CustomFunctoid.CustomFunctoidResources", Assembly.GetExecutingAssembly());  
  
            // Pass the resource ID names for functoid name, tooltip  
            // description and the 16x16 bitmap for the Map palette  
            SetName("IDS_CUSTOMSTRINGCONCATFUNCTOID_NAME");  
            SetTooltip("IDS_CUSTOMSTRINGCONCATFUNCTOID_TOOLTIP");  
            SetDescription("IDS_CUSTOMSTRINGCONCATFUNCTOID_DESCRIPTION");  
            SetBitmap("IDB_CUSTOMSTRINGCONCATFUNCTOID_BITMAP");  
  
            // Put this string handling function under the String   
            // Functoid tab in the Visual Studio toolbox for functoids  
            this.Category = FunctoidCategory.String;  
  
            // 2 required parameters, no optional parameters  
            this.SetMinParams(2);  
            this.SetMaxParams(2);  
  
            // Functoid accepts two inputs  
            AddInputConnectionType(ConnectionType.AllExceptRecord);  
            AddInputConnectionType(ConnectionType.AllExceptRecord);  
  
            // Set the output connection type  
            this.OutputConnectionType = ConnectionType.AllExceptRecord;  
  
            // Declare support for CSharp inline function and  
            // pass the method implementation to the buffer  
            AddScriptTypeSupport(ScriptType.CSharp);  
            SetScriptBuffer(ScriptType.CSharp, GetCSharpBuffer());  
        }  
  
        private string GetCSharpBuffer()  
        {  
            StringBuilder builder = new StringBuilder();  
  
            builder.Append("public string ConCatStrings(string val1, string val2)\n");  
            builder.Append("{\n");  
            builder.Append("    return val2+val1;\n");  
            builder.Append("}\n");  
  
            return builder.ToString();  
        }  
    }  
}  

Lihat juga

Menggunakan BaseFunctoid
Mengembangkan Functoid Yang Dirujuk Kustom
Functoid Kustom (Sampel BizTalk Server)