CodeGen : 4X նկարագրությունների տեղափոխման մասնակի ավտոմատացում
Բովանդակություն
- Ներածություն
- Նախապատրաստական քայլեր
- Նկարագրությունը տեղափոխելու համար անհրաժեշտ ընդհանուր քայլեր
- Տվյալների աղբյուրի նկարագրությունը տեղափոխելու համար անհրաժեշտ քայլեր
- Փաստաթղթի նկարագրությունը տեղափոխելու համար անհրաժեշտ քայլեր
Ներածություն
CodeGen գործիքը նախատեսված է 4X-ում նկարագրված տվյալների աղբյուրների և փաստաթղթերի նկարագրությունների 8X համակարգ տեղափոխումը մասնակի ավտոմատացնելու համար։ Այն հնարավորություն է տալիս 8X տեղափոխել համակարգային նկարագրությունների միայն նկարագրման հատվածը (Definition), սկրիպտային բաժնի տեղափոխումը ավտոմատացված չէ։
Codegen-ը աշխատում է Text Template (.tt
ընդլայնմամբ) ֆայլերի միջոցով և աշխատանքի արդյունքում գեներացնում է .cs
ընդլայնմամբ ֆայլ։
Փաստաթղթերի դեպքում գեներացվող .cs
ֆայլում ձևավորվում են դաշտերի (ռեկվիզիտների), աղյուսակների, նկարաների և մեծ տեքստային դաշտերի համապատասխան հատկություններ, ինչպես նաև աղյուսակների տողերի համապատասխան դասեր։
Տվյալների աղբյուրի դեպքում գեներացվող .cs
ֆայլում ձևավորվում են մեկ տողի սյուներին համապատասխանող դաս, պարամետրերին համապատասխանող դաս և մետատվյալները ձևավորող կոնստրուկտոր։
Նախապատրաստական քայլեր
- Տեղադրել Visual Studio 2022-ը։
- Աշխատացնել 8X-ի պրոյեկտի մեջ
...\AS-8X\bin
թղթապանակի ArmSoft.AS8X.CodeGen.bat ՖայլըRun as administrator
հրամանով, որը ռեգիստրացնում է CodeGen գործիքի աշխատանքի համար անհրաժեշտ dll-ները։ - Եթե Visual Studio-ն բաց է, ապա ռեգիստրացիայից հետո հարկավոր է այն փակել և նորից բացել, որպեսզի ռեգիստրացված dll-ները հասանելի դառնան։
- Այն պրոյեկտում, որտեղ կիրառվելու է Codegen-ը, անհրաժեշտ է ավելացնել
CodeGen.xml
անունով ֆայլ՝ գրելով տեղափոխվող սկրիպտերի թղթապանակի հարաբերական ճանապարհըCodeGen.xml
ֆայլի նկատմամբ։
Օրինակ՝
Եթե պրոյեկտը գտնվում է հետևյալ թղթապանակում
C:\MyWork\Solution\8XProject\
սկրիպտերը գտնվում են հետևյալ թղթապանակում
C:\MyWork\Scripts\
ապա CodeGen.xml
-ը կստեղծենք հետևյալ հասցեում
C:\MyWork\Solution\8XProject\CodeGen.xml
և պարունակությունը կլինի
<?xml version="1.0" encoding="utf-8" ?>
<Configuration>
<ScriptsPath>..\..\Scripts</ScriptsPath>
</Configuration>
Նկարագրությունը տեղափոխելու համար անհրաժեշտ ընդհանուր քայլեր
- Ստեղծել Text Template ֆայլ հետևյալ ձևով՝ Add -> New Item -> Text Template։
Նախընտրելի է ֆայլի անունը սկսել նկարագրության անունով, ապա գրել.CodeGen.tt
։
Օրինակ՝MyDS
տվյալների աղբյուրի համար ֆայլի անունը դնելMyDS.CodeGen.tt
։
Այսպիսի անվանումը օգնում է վերջնական ֆայլերի Visual Studio-ի Solution Explorer-ի մեջ ներդրվածությունը ապահովելու համար։ - Ստեղծված ֆայլի հատկությունների
Custom Tool
դաշտի արժեքը պետք է լինիTextTemplatingFileGenerator
: - Ֆայլում ավելացնել հետևյալ տեքստը՝
<#@ template debug="false" hostspecific="true" language="C#" #>
<#@ assembly name="ArmSoft.AS8X.CodeGen" #>
<#@ import namespace="ArmSoft.AS8X.CodeGen" #>
<#@ output extension=".cs" encoding="utf-8" #>
Ֆայլի պարունակության մնացած մասը որոշվում է ըստ տեղափոխվող նկարագրության տեսակի։
Տվյալների աղբյուրի նկարագրությունը տեղափոխելու համար անհրաժեշտ քայլեր
Ընդհանուր քայլերի կատարումից հետո .tt
ընդլայնմամբ ֆայլում անհրաժեշտ է ավելացնել DSParser դասի Parse մեթոդի կանչը և .tt
ընդլայմամբ ֆայլի վրայից կատարելRun custom tool
գործողությունը, որը գեներացնում է տվյալների աղբյուրի 4X-ական նկարագրությանը համարժեք 8X-ական դասը։
Օրինակ՝
<#
string code = DSParser.Parse(
configFilePath: this.Host.ResolvePath(@"..\..\CodeGen.xml"),
filename: @"\PAYMENT\DOC\PaySys.as",
dsName: "OBACSOPT",
namespaceName: "Bank.BankSettings.DS");
#>
<#= code #>
Ֆունկցիային փոխանցվում է
CodeGen.xml
ֆայլի հարաբերական ճանապարհը.tt
ֆայլի նկատմամբ,.as
ֆայլի հարաբերական ճանապարհը սկրիպտերի թղթապանակում, որը նշված էCodeGen.xml
ֆայլում։- Տվյալների աղբյուրի ներքին անունը,
- Ստեղծվող դասի namespace-ի վերջին հատվածը (namespace-ի սկիզբը միշտ
ArmSoft.AS8X.
է)։
Փաստաթղթի նկարագրությունը տեղափոխելու համար անհրաժեշտ քայլեր
4X համակարգում գոյություն ունի փաստաթղթի մեկ նկարագրություն:
8X համակարգում սերվերային և կլիենտական ֆունկցիոնալությունները առանձնացված են և յուրաքանչյուրի համար հարկավոր է սահմանել առանձին դաս։
Փաստաթղթի սերվերային նկարագրության տեղափոխում
Ընդհանուր քայլերի կատարումից հետո .tt
ընդլայնմամբ ֆայլում անհրաժեշտ է ավելացնել DocParser դասի Parse մեթոդի կանչը և .tt
ընդլայմամբ ֆայլի վրայից կատարելRun custom tool
գործողությունը, որը գեներացնում է փաստաթղթի 4X-ական նկարագրությանը համարժեք 8X-ական դասը։
Օրինակ՝
<#
string code = DocParser.Parse(
configFilePath: this.Host.ResolvePath(@"..\..\CodeGen.xml"),
filename: @"\SOURCE\Agreement\Contracts.as",
docType: "CnCont",
namespaceName: "Enterprise.Doc.Agreement");
#>
<#= code #>
Ֆունկցիային փոխանցվում է
CodeGen.xml
ֆայլի հարաբերական ճանապարհը.tt
ֆայլի նկատմամբ,.as
ֆայլի հարաբերական ճանապարհը սկրիպտերի թղթապանակում, որը նշված էCodeGen.xml
ֆայլում։- Փաստաթղթի ներքին անունը,
- Ստեղծվող դասի namespace-ի վերջին հատվածը (namespace-ի սկիզբը միշտ
ArmSoft.AS8X.
է)։
Փաստաթղթի կլիենտական նկարագրության տեղափոխում
Ընդհանուր քայլերի կատարումից հետո .tt
ընդլայնմամբ ֆայլում անհրաժեշտ է ավելացնել DocParser դասի ParseClient մեթոդի կանչը և .tt
ընդլայմամբ ֆայլի վրայից կատարելRun custom tool
գործողությունը, որը գեներացնում է փաստաթղթի 4X-ական նկարագրությանը համարժեք 8X-ական դասը։
Օրինակ՝
<#
string code = DocParser.ParseClient(
configFilePath: this.Host.ResolvePath(@"..\..\CodeGen.xml"),
filename: @"\SOURCE\Agreement\Contracts.as",
docType: "CnCont",
namespaceName: "Enterprise.Client.Doc.Agreement");
#>
<#= code #>
Ֆունկցիային փոխանցվում է
CodeGen.xml
ֆայլի հարաբերական ճանապարհը.tt
ֆայլի նկատմամբ,.as
ֆայլի հարաբերական ճանապարհը սկրիպտերի թղթապանակում, որը նշված էCodeGen.xml
ֆայլում։- Փաստաթղթի ներքին անունը,
- Ստեղծվող դասի namespace-ի վերջին հատվածը (namespace-ի սկիզբը միշտ
ArmSoft.AS8X.
է)։
Փաստաթղթի քեշավորվող նկարագրության տեղափոխում
RODocument դասը նախատեսված է փաստաթղթի քեշավորվող նկարագրության ստեղծման համար, որը պարունակում է միայն փաստաթղթի դաշտերը, աղյուսակները, մեմոները՝ կարդալու իրավասությամբ։
Փաստաթղթի քեշավորվող նկարագրության գեներացման համար անհրաժեշտ է Ընդհանուր քայլերի կատարումից հետո .tt
ընդլայնմամբ ֆայլում անհրաժեշտ է ավելացնել DocParser դասի ParseRO մեթոդի կանչը և .tt
ընդլայմամբ ֆայլի վրայից կատարել Run custom tool
գործողությունը, որը գեներացնում է փաստաթղթի 4X-ական նկարագրությանը համարժեք 8X-ական քեշավորվող դասը։
Օրինակ՝
<#
string code = DocParser.ParseRO(
configFilePath: this.Host.ResolvePath("..\\..\\..\\CodeGen.xml"),
filename: "SOURCE\\CLIENT\\CLI.AS",
docType: "Cli",
namespaceName: "Bank.General.Clients.DOCS",
className: "Client");
#>
<#= code #>
Ֆունկցիային փոխանցվում է
CodeGen.xml
ֆայլի հարաբերական ճանապարհը.tt
ֆայլի նկատմամբ,.as
ֆայլի հարաբերական ճանապարհը սկրիպտերի թղթապանակում, որը նշված էCodeGen.xml
ֆայլում։- Փաստաթղթի ներքին անունը,
- Ստեղծվող դասի namespace-ի վերջին հատվածը (namespace-ի սկիզբը միշտ
ArmSoft.AS8X.
է), - Գեներացվող դասի անունը։