1.一種基于工作序列的文檔自動(dòng)生成模型的構(gòu)建方法,模型中包含模板文檔、中間文檔和目標(biāo)文檔,模板文檔由不變的文字和變量關(guān)鍵字組成,變量值來(lái)自內(nèi)存變量棧和工作序列棧,將變量值代替模板文檔中的變量,實(shí)現(xiàn)向中間文檔的轉(zhuǎn)換,再利用設(shè)定規(guī)則和算法,實(shí)現(xiàn)向目標(biāo)文檔的轉(zhuǎn)換,其特征在于:步驟1、建立基于工作序列的文檔自動(dòng)生成模型的基本結(jié)構(gòu):
基本機(jī)構(gòu)以文檔自動(dòng)生成系統(tǒng)為核心,外部構(gòu)建公共數(shù)據(jù)構(gòu)造器、設(shè)計(jì)參數(shù)構(gòu)建器、計(jì)算序列構(gòu)造器和模板構(gòu)造器;
步驟2、模型系統(tǒng)的基礎(chǔ)設(shè)置:
包括定義變量規(guī)則、定義標(biāo)簽規(guī)則和定義運(yùn)算符;
步驟3、公共數(shù)據(jù)處理:
首先定義公共數(shù)據(jù)規(guī)范,再編制接口文檔,最后導(dǎo)入公共數(shù)據(jù);
步驟4、設(shè)計(jì)數(shù)據(jù)處理:
包括定義設(shè)計(jì)數(shù)據(jù)規(guī)范,配置界面參數(shù),自動(dòng)生成界面,采集保存數(shù)據(jù),導(dǎo)入設(shè)計(jì)數(shù)據(jù);
步驟5、工作序列定義:
維護(hù)計(jì)算步驟,維護(hù)工作序列,公式變量編輯器,公式驗(yàn)證;
步驟6、文檔生成引擎:
構(gòu)建內(nèi)存變量棧,公式計(jì)算引擎,工作序列計(jì)算引擎,模板標(biāo)簽替換,文檔轉(zhuǎn)換與生成。
2.根據(jù)權(quán)利要求1所述一種基于工作序列的文檔自動(dòng)生成模型的構(gòu)建方法,其特征在于,所述步驟1,其中公共數(shù)據(jù)構(gòu)造器,負(fù)責(zé)從個(gè)業(yè)務(wù)系統(tǒng)中提取數(shù)據(jù)構(gòu)成G集合,為模型運(yùn)算提供基礎(chǔ)數(shù)據(jù);設(shè)計(jì)參數(shù)構(gòu)造器,根據(jù)配置文件生成標(biāo)準(zhǔn)化的UI程序界面,為用戶設(shè)計(jì)輸入提供支持,最后導(dǎo)入設(shè)計(jì)參數(shù)集P參與模型運(yùn)算;計(jì)算序列構(gòu)造器,用來(lái)編輯和生成工作序列S集合,模型根據(jù)S集合表達(dá)的計(jì)算邏輯進(jìn)行計(jì)算;模板構(gòu)造器,用來(lái)生成基于XML格式的模板文檔;文檔自動(dòng)生成系統(tǒng),包括變量存儲(chǔ)器M,用來(lái)完成數(shù)據(jù)轉(zhuǎn)換、計(jì)算序列運(yùn)算、模板數(shù)據(jù)填充和文檔生成,計(jì)算步驟如下
第一步:數(shù)據(jù)初始化,構(gòu)建初始內(nèi)存變量棧和計(jì)算序列棧,通過(guò)轉(zhuǎn)換函數(shù)將基礎(chǔ)數(shù)據(jù)和設(shè)計(jì)數(shù)據(jù)加載到內(nèi)存變量棧中;
第二步:?jiǎn)?dòng)計(jì)算序列棧運(yùn)算,識(shí)別并計(jì)算步驟公式和條件跳轉(zhuǎn)公式,并根據(jù)需要從內(nèi)存變量棧中取值,同時(shí)動(dòng)態(tài)更新計(jì)算步驟所代表變量的值,并寫回到內(nèi)存變量棧中;
第三步:模板標(biāo)簽值替換,計(jì)算序列運(yùn)算結(jié)束后,內(nèi)存變量棧和計(jì)算序列棧中有明確的值,遍歷模板提取標(biāo)簽,解析處變量名稱,從中查詢相應(yīng)的值替換,生成中間文檔;
第四步:目標(biāo)文檔生成,根據(jù)目標(biāo)文檔生成的規(guī)則,將中間文檔格式化成目標(biāo)文檔所要求的格式。
3.根據(jù)權(quán)利要求1所述一種基于工作序列的文檔自動(dòng)生成模型的構(gòu)建方法,其特征在于,所述步驟2,其中定義變量規(guī)則,對(duì)內(nèi)存變量棧和計(jì)算序列棧進(jìn)行定義,包括
定義1定義變量標(biāo)識(shí)K由模板文檔中的文字C′經(jīng)過(guò)函數(shù)GK(C′)轉(zhuǎn)化而來(lái),即K=GK(C′);
定義2定義變量標(biāo)識(shí)K的類型為一個(gè)二元組K<μ,δ>,Kυ<μυ,δυ>為K的最終生成值,μ和δ代表了兩種不同類型的變量,μυ和δυ分別對(duì)應(yīng)它們的最終計(jì)算值;
定義3定義內(nèi)存變量γ為一個(gè)二元組γ<k,υ>,k為變量γ的標(biāo)識(shí)符,υ為變量γ的值,內(nèi)存變量空間R={γ};
定義4函數(shù)Ve=Ge(VE)將計(jì)算出VE的結(jié)果,Ve為算術(shù)公式的計(jì)算結(jié)果;
定義5函數(shù)Ke=Q(SE)將變量公式SE中的變量提取出來(lái),SE中包括內(nèi)存變量和預(yù)設(shè)的計(jì)算操作符,Ke是從變量公式中提取的內(nèi)存變量標(biāo)識(shí)符集合;
定義6函數(shù)VE=C(M,SE,Ke)將變量公式SE轉(zhuǎn)化為算術(shù)公式VE,其中M為內(nèi)存變量棧;
定義7定義內(nèi)存變量棧M為R的子集,內(nèi)存變量γ的標(biāo)識(shí)符在M中全局唯一,M包含讀取變量值和寫入變量?jī)煞N操作;
定義8函數(shù)Kυ=GV(M,K)從內(nèi)存棧M中讀取變量標(biāo)識(shí)符為K的變量值Kυ;
定義9函數(shù)SR(M,γ)定義將變量γ寫入內(nèi)存變量棧M,如果γ,k在M中出現(xiàn),那么SR將覆蓋原值,否則新增保存;
定義10定義計(jì)算序列棧S由計(jì)算步驟s組成,即S={s},計(jì)算步驟s為計(jì)算序列的計(jì)算單元;
定義11函數(shù)Ks=GS(S,K)定義從計(jì)算序列棧S中讀取變量標(biāo)識(shí)符K所指定步驟集合計(jì)算的結(jié)果集Ks;
模板標(biāo)簽包括模板變量標(biāo)簽、計(jì)算序列結(jié)果占位符標(biāo)簽和模板格式控制標(biāo)簽。
4.根據(jù)權(quán)利要求1所述一種基于工作序列的文檔自動(dòng)生成模型的構(gòu)建方法,其特征在于,所述步驟6,文檔生成引擎:構(gòu)建內(nèi)存變量棧,公式計(jì)算引擎,工作序列計(jì)算引擎,模板標(biāo)簽替換,文檔轉(zhuǎn)換與生成,其中構(gòu)建內(nèi)存變量棧包括
定義12定義Rg為由系統(tǒng)預(yù)設(shè)參數(shù)集生成的內(nèi)存變量集合,記Rg={γg}={γ|γ=fg(g)∧g∈G},其中G為系統(tǒng)預(yù)設(shè)參數(shù)集合,g為G的元素,γg表示從集合G中轉(zhuǎn)換出的內(nèi)存變量元素,函數(shù)fg實(shí)現(xiàn)g→γg的轉(zhuǎn)換;
定義13定義Rp為業(yè)務(wù)設(shè)計(jì)參數(shù)集生成的內(nèi)存變量集合,記Rp={γp}={γ|γ=fp(p)∧p∈P},其中P為業(yè)務(wù)設(shè)計(jì)參數(shù)集合,p為P的元素,γp表示從集合P中轉(zhuǎn)換出的內(nèi)存變量元素,函數(shù)fp實(shí)現(xiàn)p→γp的轉(zhuǎn)換;
定義14定義Rs為由計(jì)算序列S生成的內(nèi)存變量集合,記Rs={γs}={γ|γ=fs(s)∧s∈S},其中S為計(jì)算序列,s為S的元素,γs表示從集合S中轉(zhuǎn)換出的內(nèi)存變量元素,函數(shù)fs實(shí)現(xiàn)s→γs的轉(zhuǎn)換;
定義15函數(shù)M=Rg+Rp+Rs,M為內(nèi)存變量棧,函數(shù)指明了M的組成,其中“+”表示并集運(yùn)算,即相同的變量在并集運(yùn)算時(shí)相同標(biāo)識(shí)符的變量的值會(huì)被新值覆蓋。
5.根據(jù)權(quán)利要求1所述一種基于工作序列的文檔自動(dòng)生成模型的構(gòu)建方法,其特征在于,所述步驟6,文檔生成引擎:構(gòu)建內(nèi)存變量棧,公式計(jì)算引擎,工作序列計(jì)算引擎,模板標(biāo)簽替換,文檔轉(zhuǎn)換與生成,其中公式計(jì)算引擎,包括:①定義了表達(dá)式的操作符及優(yōu)先級(jí);
②加載操作符及優(yōu)先級(jí);
③取中序表達(dá)中的操作數(shù)或變量名并以列表返回,為變量替換時(shí)使用;
④計(jì)算中序數(shù)值表達(dá)式的值;
⑤中序表達(dá)式轉(zhuǎn)后序表達(dá)式;
⑥計(jì)算后序表達(dá)式的值;
⑦求兩個(gè)操作符的優(yōu)先級(jí)別;
⑧計(jì)算兩個(gè)操作數(shù)的表達(dá)式值;
⑨將兩數(shù)運(yùn)算的表達(dá)式轉(zhuǎn)成word公式表達(dá)式形式。
6.根據(jù)權(quán)利要求1所述一種基于工作序列的文檔自動(dòng)生成模型的構(gòu)建方法,其特征在于,所述步驟6,文檔生成引擎:構(gòu)建內(nèi)存變量棧,公式計(jì)算引擎,工作序列計(jì)算引擎,模板標(biāo)簽替換,文檔轉(zhuǎn)換與生成,其中工作序列計(jì)算引擎包括:
定義16定義計(jì)算步驟s<sk,se,υe,sυ,type,sc>為一個(gè)六元組,其中sk為變量標(biāo)識(shí)符,se為變量公式,υe為變量替換后的算術(shù)公式;sυ為算術(shù)公式運(yùn)算結(jié)果值,sc為運(yùn)算條件表達(dá)式,sc的計(jì)算結(jié)果決定了下一個(gè)參與運(yùn)算的計(jì)算步驟元素的跳轉(zhuǎn)條件,他控制著計(jì)算序列的運(yùn)算邏輯,計(jì)算步驟的類型s.type=enum{VAR,EXP,TXT,F(xiàn)UN};
定義17函數(shù)Vc=Gc(SC)計(jì)算條件表達(dá)式SC的值,SC中可以包含若干數(shù)值串、內(nèi)存變量和條件運(yùn)算符;
定義18函數(shù)Vf=Gf(FS)解析自定義函數(shù)串FS,分離函數(shù)名和參數(shù),并調(diào)用相關(guān)的自定義函數(shù)計(jì)算結(jié)果,F(xiàn)S中可以包括若干數(shù)值串和內(nèi)存變量,內(nèi)存變量根據(jù)上下文在內(nèi)存變量棧M中取值;
定義19定義計(jì)算步驟s的類型由一個(gè)四元組表示sk<w,x,y,z>,其中w,x,y,z分別代表了VAR,EXP,TXT,F(xiàn)UN類型的計(jì)算步驟,
計(jì)算步驟計(jì)算的過(guò)程描述
(1)由定義8、定義16可知:
w.υe=GV(M,w.se)
w.sυ=w.υe
(2)由定義5、定義6、定義4和定義16可知:
Kx=Q(x.se)
x.υe=C(M,x.se,Kx)
x.sυ=Ge(x.υe)
(3)由定義5、定義6和定義16可知:
Ky=Q(y.se)
y.υe=C(M,y.se,Ky)
y.sυ=y(tǒng).υe
(4)由定義5、定義6、定義4和定義17可知:
Kz=Q(z.se)
z.υe=C(M,z.se,Kz)
z.sυ=Gf(z.υe)
(5)由定義5、定義6、定義4、定義17可知:
Kc=Q(s.sc)
iNext=Gc(C(M,s.sc,Kc))
sNext=S[iNext]
其中iNext為下一個(gè)參與運(yùn)算的步驟元素在計(jì)算序列棧中索引;sNext為下一個(gè)參與運(yùn)算的步驟元素。
7.根據(jù)權(quán)利要求1所述一種基于工作序列的文檔自動(dòng)生成模型的構(gòu)建方法,其特征在于,所述所述步驟6,文檔生成引擎:構(gòu)建內(nèi)存變量棧,公式計(jì)算引擎,工作序列計(jì)算引擎,模板標(biāo)簽替換,文檔轉(zhuǎn)換與生成,其中文檔轉(zhuǎn)換與生成包括對(duì)模板與文檔的定義:
定義20定義模板為一個(gè)二元組T<C,K>,C為模板文檔中不變的文字部分,K為模板文檔中的變量標(biāo)識(shí)符,K在模板文檔上下文中表示相同含義;
定義21定義中間文檔為一個(gè)二元組W′<C,U>,C為模板中不變的文字部分,U為模板文檔變量的在上下文計(jì)算后的結(jié)果值;
定義22函數(shù)Z(K,U)將K替換成U,其中K為文檔中的變量,U為模板變量的在上下文計(jì)算后的結(jié)果值;
定義23函數(shù)W=X(W′,Ru)將中間文檔轉(zhuǎn)換為目標(biāo)文檔,其中W′為中間文檔,W為最終的目標(biāo)文檔,Ru為中間文檔向目標(biāo)文檔轉(zhuǎn)換規(guī)則。
8.根據(jù)權(quán)利要求1所述一種基于工作序列的文檔自動(dòng)生成模型的構(gòu)建方法,其特征在于,所述文檔轉(zhuǎn)換與生成中還包括計(jì)算邏輯的存儲(chǔ)定義:
定義24定義集合STO存儲(chǔ)了文檔生成過(guò)程中使用的計(jì)算邏輯,記STO={M,S,T,K,K<μ,δ>,Ru},其中變量分別表示:內(nèi)存變量棧、模板、模板變量、模板變量類型和中間文檔向目標(biāo)文檔的轉(zhuǎn)換規(guī)則;
定義25操作Get(STO)→T實(shí)現(xiàn)從STO中已存儲(chǔ)的計(jì)算邏輯提供給模板進(jìn)行處理;
所述文檔生成的計(jì)算步驟如下:
A、U=Kυ<μυ,δυ>
B、W′<C,U>=Get(STO)→T<C,K>=Get(STO)→T<C,Z(K,U)>
=Get(STO)→T<C,Z(K,Kυ<μυ,δυ>)>
C、μ=GK(C′1),δ=GK(C′2)
D、μυ=GV(M,μ),δυ=GS(S,δ)
E、W′<C,U>=Get(STO)→T<C,Z(GK(C′),Kυ<μυ,δυ>)>
=Get(STO)→T<C,Z(GK(C′),Kυ<GV(M,μ),GS(S,δ)>)>
=Get(STO)→T<C,Z(GK(C′),Kυ<GV(M,GK(C′1)),GS(S,GK(C′2))>)>。