شرح صورت مسئلهفرض کنید در یک فرایند یک فیلد از نوع عدد صحیح وجود دارد و نیاز است که این عدد را به حروف نمایش دهیم.
در ابتدا این فیلد عدد صحیح را درون بخش پارامترهای خروجی فعالیت کاربر(UserTask) که درآن این عدد درج شده است قرار میدهیم ( در اینجا”Number”) و سپس درون فعالیت کدنویسی(ScriptTask)، کد زیر را مینویسیم و در بخش پارامترهای خروجیاش فیلدی از جنس رشته که در دیتا مدل تعریف شده است و قرار است عدد را به حروف نمایش دهد تعریف میکنیم. ( در اینجا “AmountLetter “)
using System;
using System.Text;
using System.Collections.Generic;
using Chargoon.Didgah.BPMS.CommonApi;
namespace Chargoon.Didgah.BPMS.Runtime
{ public class ScriptTask : IScriptTask
{
//تعریف آرایه هایی از جنس رشته برای بخش های مختلف حروف رقم //
static string[] yakan = new string[10] { “صفر”, “يک”, “دو”, “سه”, “چهار”, “پنج”, “شش”, “هفت”, “هشت”, “نه” };
static string[] dahgan = new string[10] { “”, “”, “بيست”, “سي”, “چهل”, “پنجاه”, “شصت”, “هفتاد”, “هشتاد”, “نود” };
static string[] dahyek = new string[10] { “ده”, “يازده”, “دوازده”, “سيزده”, “چهارده”, “پانزده”, “شانزده”, “هفده”, “هجده”, “نوزده” };
static string[] sadgan = new string[10] { “”, “يکصد”, “دويست”, “سيصد”, “چهارصد”, “پانصد”, “ششصد”, “هفتصد”, “هشتصد”, “نهصد” };
static string[] basex = new string[5] { “”, “هزار”, “ميليون”, “ميليارد”, “تريليون” };
public IExecution Execution { get; set; }
public void Execute()
{
// تعریف متغییر رشته برای فیلد عدد صحیح مورد نظر هم از نوع رشته و از نوع عدد صیحیح بزرگ//
string IntegerStr =””;
long Integer =0;
Integer=Convert.ToInt64(Convert.ToString(Execution.IntegerValue(“Number”)));
string Strnum1= Integer.ToString();
// پاس دادن متغییر Strnum1به تابع NumToStr تا تبدیل عدد به حروف اتفاق بیافتد.//
IntegerStr = NumToStr(Strnum1);
//مقدار دهی فیلد رشته AmountLetter که عدد را به حروف نمایش میدهد.
Execution.SetVariable(“AmountLetter”, IntegerStr +”تومان”);
}
public static string NumToStr(string snum)
{
string stotal = “”;
if (snum == “”) return “صفر”;
if (snum == “0”)
{
return yakan[0];
}
else
{
snum = snum.PadLeft(((snum.Length – 1) / 3 + 1) * 3, ‘0’);
int L = snum.Length / 3 – 1;
for (int i = 0; i <= L; i++)
{
int b = int.Parse(snum.Substring(i * 3, 3));
if (b != 0)
stotal = stotal + getnum(b) + ” ” + basex[L – i] + ” و “;
}
stotal = stotal.Substring(0, stotal.Length – 3);
}
return stotal;
}
public static string getnum(int num3)
{
string s = “”;
int d3, d12;
d12 = num3 % 100;
d3 = num3 / 100;
if (d3 != 0)
s = sadgan[d3] + ” و “;
if ((d12 >= 10) && (d12 <= 19))
{
s = s + dahyek[d12 – 10];
}
else
{
int d2 = d12 / 10;
if (d2 != 0)
s = s + dahgan[d2] + ” و “;
int d1 = d12 % 10;
if (d1 != 0)
s = s + yakan[d1] + ” و “;
s = s.Substring(0, s.Length – 3);
};
return s;
}
}
}
||||