Բովանդակություն

Ներածություն

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. է),
  • Գեներացվող դասի անունը։