Տվյալների աղբյուրի ընդլայնման նկարագրություն
Բովանդակություն
- Ներածություն
- Օրինակներ
- DSEXTENDER նկարագրություն
- Հատկություններ
- Extender դաս
- Հատկություններ
- Մեթոդներ
Ներածություն
Գոյություն ունեցող տվյալների աղբյուրում լրացուցիչ սյուներ, պարամետրեր ավելացնելու, տողերի պարունակությունը փոփոխելու համար նկարագրվում է տվյալների աղբյուրի ընդլայնում։
8X համակարգում տվյալների աղբյուրի ընդլայնում նկարագրելու համար հարկավոր է ունենալ
- .as ընդլայնմամբ ֆայլ սկրիպտերում DSEXTENDER նկարագրությամբ, որը պարունակում է մետատվյալներ ընդլայնման մասին,
- .cs ընդլայնմամբ ֆայլ, որը պարունակում է սերվերում աշխատող տրամաբանությունը։
.as և .cs ընդլայնմամբ ֆայլերը լրացնելուց հետո անհրաժեշտ է .as ընդլայնմամբ ֆայլը ներմուծել համակարգ SYSCON
գործիքի միջոցով, որի արդյունքում կներմուծվի նաև .cs ընդլայնմամբ ֆայլը։
Օրինակներ
- Տվյալների աղբյուրի ընդլայնում 8X-ում
- Տվյալների աղբյուրի պարամետրերի ընդլայնում 8X-ում
- Ընդլայնման միջոցով պարամետրի ավելացման ամբողջական օրինակ
DSEXTENDER նկարագրություն
DSEXTENDER {
NAME = ...;
CAPTION = ...;
ECAPTION = ...;
DATASOURCE = ...;
CSSOURCE = ...;
};
Հատկություններ
NAME
Ընդլայնման ներքին անունը (առավ. 50 նիշ)։
CAPTION
Ընդլայնման հայերեն անվանումը ANSI կոդավորմամբ։
ECAPTION
Ընդլայնման անգլերեն անվանումը։
DATASOURCE
Ընդլայնվող տվյալների աղբյուրի ներքին անունը։
CSSOURCE
Ընդլայնող C# ֆայլի հարաբերական ճանապարհը .as ֆայլի նկատմամբ։
Օրինակներ՝
- Եթե extend.as և extend.cs ֆայլերը գտնվում են նույն թղթապանակում, ապա կգրվի
CSSOURCE = "extend.cs";
։ - Եթե extend.as գտվում է “C:\WorkingDir\Scripts\App\extend.as” հասցեում, իսկ extend.cs-ը՝ “C:\WorkingDir\SubFolder1\SubFolder2\extend.as” հասցեում, ապա
CSSOURCE = "..\..\SubFolder1\SubFolder2\extend.cs";
։ - Կամ կլինի գրել ամբողջական ճանապարհը, ինչը խրախուսելի չէ
CSSOURCE = "C:\WoringDir\SubFolder1\SubFolder2\extend.cs";
Extender դաս
public abstract class Extender<R, P> : IExtender
where P : class, new()
where R : class, new()
Տվյալների աղբյուրի ընդլայման համար անհրաժեշտ է սահմանել դաս, որը ժառանգում է Extender<R, P>
դասը՝ որպես R
փոխանցելով տվյալների աղբյուրի ընդլայման սյուները նկարագրող դասը, իսկ որպես P
՝ պարամետրերը նկարագրող դասը։
Եթե նոր պարամետր չի ավելացվում ընդլայնմամբ, ապա որպես P
անհրաժեշտ է փոխանցել NoParam
դասը։
Եթե նոր սյուն չի ավելացվում ընդլայնմամբ, ապա որպես R
անհրաժեշտ է փոխանցել NoColumns
դասը։
Դասը պարտադիր պետք է ունենա DataSourceExtender
ատրիբուտը։
-
Եթե դասի անունը համընկնում է .as ֆայլում նկարագրված ներքին անվան հետ, ապա ատրիբուտին արժեք փոխանցելու կարիք չկա:
Օրինակ
DSEXTENDER { NAME = AllOperExtended; ... };
[DataSourceExtender] public class AllOperExtended : Extender<NoColumns, AllOperExtended.Params>
-
Եթե դասի անունը չի համընկնում .as ֆայլում նկարագրված ներքին անվան հետ, ապա ատրիբուտին պետք է փոխանցել ընդլայնման ներքին անունը։
Օրինակ
DSEXTENDER { NAME = AllOperExt; ... };
[DataSourceExtender("AllOperExt")] public class AllOperExtended : Extender<NoColumns, AllOperExtended.Params>
Հատկություններ
AlwaysCallBeforeProcess
public virtual bool AlwaysCallBeforeProcess => false;
BeforeProcess մեթոդը կանչվում է միայն տողեր պարունակող տվյալների աղբյուրի համար։ Դատարկ տվյալների աղբյուրի համար մեթոդի կանչը ապահովելու համար անհրաժեշտ է override անել այս հատկությունը և վերադարձնել true արժեք։
Մեթոդներ
AddColumn
public void AddColumn(string name, string armenianCaption, string englishCaption, FieldType columnType,
string armenianDescription = null, string englishDescription = null,
FieldType showType = null, short width = 0, short headlines = 2,
SupportedEncoding supportedEncoding = SupportedEncoding.ArmenianAnsi)
Ընդլայնման միջոցով ավելացող նոր սյան հատկությունները սահմանելու համար անհրաժեշտ է կոնստրուկտորում կանչել այս մեթոդը։
Պարամետրեր
name
- Սյան ներքին անուՆը:armenianCaption
- Սյան հայերեն անվանումը ANSI կոդավորմամբ։englishCaption
- Սյան անգլերեն անվանումը։columnType
- Սյան համակարգային տիպը։
Օրինակ՝
FieldTypeProvider.Boolean
FieldTypeProvider.Amount
FieldTypeProvider.GetStringFieldType(10)armenianDescription
- Սյան հայերեն նկարագրությունը ANSI կոդավորմամբ։englishDescription
- Սյան անգլերեն նկարագրությունը։showType
- Սահմանում է համակարգային տիպը ցուցադրման ժամանակ։
Եթե այս պարամետրը բացակայում է, ապա օգտագործվում է columnType հատկության արժեքը։ Սովորոբար այս հատկությունը օգտագործում են, եթե տվյալների տիպը, որը համապատասխանում է սյունակի արժեքներին, հարմար չի ցուցադրման համար։ Օրինակ եթե columnType = FieldTypeProvider.GetStringFieldType(150) է, բայց շատ դեպքերում բավական է տեսնել տողի սկիզբը, ապա կարելի է սահմանել showType = FieldTypeProvider.GetStringFieldType(32),width
- Սյան լայնությունը: Արժեք չփոխանցելու դեպքում որոշվում է կախված սյան armenianCaption, englishCaption, columnType, showType հատկություններից կախված։headlines
- Սյան անվանման մեջ տողերի քանակ։ Լռությամբ արժեքը 2 է։supportedEncoding
- Սյան կոդավորման տեսակը, որը կարող է ընդունել 3 արժեք՝ SupportedEncoding.ArmenianAnsi, SupportedEncoding.RussionAnsi և SupportedEncoding.Unicode։
AddParam
public void AddParam(string name, string description, FieldType fieldType)
Ընդլայնման միջոցով ավելացող նոր պարամետրի հատկությունները սահմանելու համար անհրաժեշտ է կոնստրուկտորում կանչել այս մեթոդը։
Պարամետրեր
name
- Պարամետրի ներքին անունը։description
- Պարամետրի հայերեն նկարագրությունը։ Անհրաժեշտ է փոխանցել ANSI կոդավորմամբ։fieldType
- Պարամետրի համակարգային տիպը:
BeforeProcess
public virtual Task BeforeProcess(IList<IExtendableRow> rows, IDataSourceArgs args)
Մեթոդը կանչվում է միջուկի կողմից տվյալների աղբյուրի հիմնական հաշվարկի ավարտից հետո։
Հիմնականում օգտագործվում է ProccessRow-ում կիրառվող տվյալների բեռնման և քեշավորման համար։
Կարող է օգտագործվել հիմնական հաշվարկված բոլոր տողերի մշակման (փոփոխելու, ջնջելու, ավելացնելու) համար։
Մեթոդը չի կանչվում միջուկի կողմից, եթե հիմնական հաշվարկի մեջ տողեր չկան և AlwaysCallBeforeProcess հատկության արժեքը false է։
Պարամետրեր
rows
- Տվյալների աղբյուրի ընդլայնման տողերի ցուցակ։args
- Տվյալների աղբյուրի հաշվարկին սկսելու պարամետրեր։ Պարունակում է տվյալների աղբյուրի և ընդլայնման պարամետրերը, սյուների անվանումների ցանկը և մետատվյալներ։
ProccessRow
public virtual Task<bool> ProccessRow(IExtendableRow row, IDataSourceArgs args)
Մեթոդը կանչվում է միջուկի կողմից տվյալների աղբյուրի յուրաքանչյուր տողի համար։
Տվյալների աղբյուրի սյուների արժեքների փոփոխման, ավելացված սյուների արժեքների լրացման, տողերի ֆիլտրման համար անհրաժեշտ է մշակել այս մեթոդը։
Պարամետրեր
row
- Տվյալների աղբյուրի ընդլայնման ընթացիկ տողը։ Պարունակում է object տիպի Extend հատկություն, որի մեջ պահվում են ընդլայնման սյուները։args
- Տվյալների աղբյուրի հաշվարկին սկսելու պարամետրեր։ Պարունակում է տվյալների աղբյուրի և ընդլայնման պարամետրերը, սյուների անվանումների ցանկը և մետատվյալներ։
Վերադարձնում է bool տիպի արժեք, որը ցույց է տալիս, թե ընթացիկ տողը պետք է ընդգրկվի վերջնական ցուցակում, թե ոչ։