Bagikan melalui


Mengembangkan Functoids Kustom

Meskipun BizTalk Server menyediakan banyak functoid untuk mendukung berbagai operasi yang beragam, Anda mungkin akan mengalami situasi yang memerlukan pendekatan yang berbeda. Functoid kustom menyediakan cara bagi Anda untuk memperluas berbagai operasi yang tersedia dalam lingkungan pemetaan BizTalk Server. Setiap functoid kustom disebarkan sebagai rakitan .NET menggunakan kelas yang berasal dari Microsoft.BizTalk.BaseFunctoids. Rakitan dapat berisi lebih dari satu functoid kustom.

Anda harus mempertimbangkan untuk menggunakan functoid kustom dalam skenario berikut:

  • Anda memiliki aturan validasi dan konversi khusus untuk bidang kode karakter menggunakan data yang hanya dapat diakses melalui API warisan eksklusif.

  • Anda perlu mengenkripsi atau mendekripsi bidang menggunakan logika bisnis kustom dan manajemen kunci.

  • Anda perlu membuat kode hash dari bagian pesan untuk digunakan dalam aplikasi lain.

  • Permintaan akuntansi yang dikirimkan pesan ke departemen mereka menyertakan informasi ringkasan tentang total penjualan berdasarkan setiap jenis produk.

  • Anda ingin mengurangi kompleksitas peta dengan menggabungkan beberapa langkah terkait, dengan menggunakan pendekatan yang berbeda, atau dengan menggunakan pustaka kelas baru.

  • Lebih dari satu peta menggunakan kode skrip yang sama dalam skrip functoid.

  • Anda perlu menulis ke log peristiwa ketika operasi gagal.

    Functoid kustom dapat diintegrasikan ke dalam solusi secara langsung dengan menggunakan kode sebaris atau secara tidak langsung dengan merujuk ke metode di pustaka kelas yang disebarkan ke dalam cache perakitan global. Kedua jenis integrasi mengandalkan kelas BizTalk.BaseFunctoid dan mengikuti serangkaian langkah umum yang sama:

  1. Buat proyek pustaka kelas baru menggunakan bahasa .NET pilihan Anda.

  2. Menggunakan utilitas penamaan yang kuat sn.exe, buat keyfile dan tetapkan ke proyek.

  3. Tambahkan referensi ke Microsoft.BizTalk.BaseFunctoids.dll. Rakitan ini berisi kelas dasar BaseFunctoid .

  4. Buat file sumber daya dan tambahkan ke proyek. Tambahkan sumber daya string untuk nama, tipsalat, dan deskripsi functoid. Tambahkan sumber daya gambar 16x16 piksel untuk mewakili functoid pada palet perancang peta.

  5. Terapkan kelas functoid dengan berasal dari BaseFunctoid, menetapkan parameter dasar di konstruktor, lalu menulis metode functoid dan metode pendukung apa pun. Perakitan dapat berisi beberapa functoid kustom.

  6. Sebarkan assembly dan pastikan functoid baru tersedia dari palet Toolbox. Lihat Menambahkan dan Menghapus Functoid Kustom dari Visual Studio Toolbox.

    Berikut ini adalah ilustrasi untuk Functoid Lantai.

/// <summary>  
/// Floor Functoid - finds the floor of input  
/// </summary>  
public class FloorFunctoid : BaseFunctoid  
{  
    public FloorFunctoid()  
        : base()  
    {  
        this.ID = 11001;  
        SetupResourceAssembly("MultipleFunctoids.Resource", Assembly.GetExecutingAssembly());  
  
        SetName("NAME_FLOOR");  
        SetDescription("DESCRIPTION_FLOOR");  
        SetTooltip("DESCRIPTION_FLOOR");  
        SetBitmap("IMAGE_FLOOR");  
  
        SetExternalFunctionName(GetType().Assembly.FullName, " MultipleFunctoids.FloorFunctoid", "MathFloor");  
        this.RequiredGlobalHelperFunctions = InlineGlobalHelperFunction.IsNumeric;  
  
        AddScriptTypeSupport(ScriptType.CSharp);  
        SetMinParams(1);  
        SetMaxParams(1);  
  
        this.Category = FunctoidCategory.Math;  
        this.OutputConnectionType = ConnectionType.AllExceptRecord;  
        AddInputConnectionType(ConnectionType.AllExceptRecord);  
        this.HasSideEffects = false;  
    }  
  
    /// <summary>  
    /// To create the C# function  
    /// </summary>  
    /// <param name="scriptType">Script type</param>  
    /// <param name="numParams">Number of parameters</param>  
    /// <param name="functionNumber">Functoid number</param>  
    /// <returns>C# script</returns>  
    protected override string GetInlineScriptBuffer(ScriptType scriptType, int numParams, int functionNumber)  
    {  
        if (ScriptType.CSharp == scriptType)  
        {  
            StringBuilder builder = new StringBuilder();  
  
            builder.Append("public string MathFloor(string input)\n");  
            builder.Append("{\n");  
            builder.Append("  if(string.IsNullOrEmpty(input))\n");  
            builder.Append("    return string.Empty;\n");  
            builder.Append("double d = 0.0;\n");  
            builder.Append("if (IsNumeric(input, ref d))\n");  
            builder.Append("    return Math.Floor(d).ToString(System.Globalization.CultureInfo.InvariantCulture);\n");  
            builder.Append("else\n");  
            builder.Append("    return string.Empty;\n");  
            builder.Append("}\n");  
  
            return builder.ToString();  
        }  
        else  
        {  
            return string.Empty;  
        }  
    }  
}  
  

Saat menggunakan kode sampel ini sebagai bagian dari proyek C#Anda, "Nama rakitan" harus diatur ke "MultipleFunctoids". Proyek C# Anda (berisi kode ini) harus menyertakan file Resource.resx.

SetName("NAME_FLOOR");  
SetDescription("DESCRIPTION_FLOOR");  
SetTooltip("DESCRIPTION_FLOOR");  
SetBitmap("IMAGE_FLOOR");  
  

Dalam kode di atas, nilai "NAME_FLOOR", "DESCRIPTION_FLOOR", dan "DESCRIPTION_FLOOR" adalah "kunci" string sumber daya yang disematkan dalam file Resource.resx. Dan, "IMAGE_FLOOR" adalah nama gambar yang disematkan dalam file Resource.resx. Gambar ini akan bertindak sebagai ikon untuk functoid.

Jika Anda tidak menentukan kunci sumber daya yang tepat, atau jika Anda menghapus metode SetName, maka functoid kustom tanpa nama dibuat, yang bukan praktik yang baik. Hal yang sama berlaku untuk metode SetDescription dan SetTooltip. Selalu gunakan metode ini dengan benar untuk menghindari perilaku sampah yang tidak diinginkan. Namun, Anda dapat melewati metode SetBitmap jika Anda tidak memiliki gambar yang cocok untuk digunakan sebagai ikon functoid. Dalam kasus seperti itu, ikon default digunakan oleh functoid kustom, yang tidak berbahaya (kecuali ada beberapa functoid tanpa ikon).

Untuk informasi selengkapnya tentang cara membuat functoid kustom, lihat Functoid Kustom (Sampel Server BizTalk).

Penting

ID functoid tertentu dicadangkan oleh functoid Mapper standar/bawaan. Biasanya, functoid Mapper standar menggunakan ID dari 1 hingga 10000. Saat membuat functoid kustom, jangan gunakan ID functoid kurang dari 10000.

Di Bagian Ini

Bagian ini berisi:

Lihat juga

Menggunakan Functoids untuk Membuat Pemetaan yang Lebih Kompleks