亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種基于工作序列的文檔自動生成模型的構(gòu)建方法與流程

文檔序號:12719536閱讀:231來源:國知局
一種基于工作序列的文檔自動生成模型的構(gòu)建方法與流程

本發(fā)明涉及文檔自動生成技術(shù)領(lǐng)域,更具體的涉及一種基于工作序列的文檔自動生成模型的構(gòu)建方法。



背景技術(shù):

隨著計算機的普及和信息化技術(shù)的發(fā)展,使用字處理軟件撰寫文檔、完成工作報告,已經(jīng)成為人們生活工作必不可少的事情。微軟Office Word因滿足辦公需求、功能齊全、操作方便,已經(jīng)成為流行的應(yīng)用軟件。在數(shù)據(jù)展示方面,使用Word可以制作圖、問、表并茂的文檔,具有一些報表工具不可替代的優(yōu)點,包括多層次嵌套表格、斜線表格等;在專業(yè)文檔方面,Word支持復(fù)雜的數(shù)學(xué)公式編輯和格式化呈現(xiàn),支持對象嵌入擴展功能。

在企業(yè)生產(chǎn)環(huán)境中,因業(yè)務(wù)的連續(xù)性和重復(fù)性,工作過程中需要編制的檢測報告、技術(shù)方案書、計算書等文檔是重復(fù)發(fā)生的行為。同一類型的文檔,在格式、結(jié)構(gòu)和內(nèi)容方面往往相似,在數(shù)據(jù)分析和結(jié)論評價方面常常不同。如果所有文檔的編制工作全部由手工完成,無疑工作量巨大,而且因人為原因?qū)е挛臋n數(shù)據(jù)紕漏的風(fēng)險極大。

值得慶幸的是Word不僅僅是一個文字編輯軟件,還是一個可擴展編程開發(fā)環(huán)境,可以通過程序?qū)ord進行二次開發(fā)自動生成文檔,以滿足用戶的特定要求。目前,有關(guān)文檔自動生成的研究取得了初步的進展,結(jié)合具體的行業(yè),出現(xiàn)了一些成功的案例,但仍缺乏有效的理論支持。

早期文檔自動生成的研究主要集中在Word二次開發(fā)的文檔生成技術(shù)等方面(如報告生成、試卷生成、文檔水印、自動排版、公式嵌入、數(shù)據(jù)填充等),開發(fā)技術(shù)使用VBA和OLE較為常見。這些研究結(jié)合具體的應(yīng)用場景解決了一些實際問題,具有一定的現(xiàn)實意義。

在生成文檔時使用模板是通用的做法:將一篇規(guī)范的通用文檔中可被替換的部分采用插入批注的形式設(shè)置標(biāo)簽,通過標(biāo)簽查詢與替換實現(xiàn)文檔生成。葛芬等使用COM Add-In技術(shù)實現(xiàn)了_IDTExtensibility2派發(fā)接口,制作了模板定制工具,構(gòu)建了模板數(shù)據(jù)庫,實現(xiàn)了Word文檔的自動生成。李自勝等采用XML技術(shù),對文檔模板進行了結(jié)構(gòu)化設(shè)計,將文檔內(nèi)容歸納為既有文本、輸入文本、單選文本和多選組合文本4種類型,分別采用編輯框、單選框和復(fù)選框控件界面,從而降低了文檔處理的難度。

然而在企業(yè)生產(chǎn)環(huán)境中,待生成的目標(biāo)文檔并非簡單地用數(shù)據(jù)替換模板中的標(biāo)簽,文檔中嵌入的數(shù)據(jù)往往來自于數(shù)據(jù)庫或依賴企業(yè)的某些業(yè)務(wù)系統(tǒng)。這些數(shù)據(jù)有些能直接從數(shù)據(jù)庫查詢得到;有些分散在業(yè)務(wù)系統(tǒng)中,需要按工作流程在網(wǎng)絡(luò)中傳遞、匯總和審批;有些需要按自定義的規(guī)則經(jīng)過進一步的計算和處理。因此,文檔自動生成系統(tǒng)與工作流系統(tǒng)的結(jié)合成為一個研究方向。

曲明成等針對企業(yè)在編輯數(shù)據(jù)匯總文檔時因手動計算、人工檢驗造成效率低下且容易出錯等問題,結(jié)合工作流系統(tǒng)提出了一個文檔自動生成的數(shù)學(xué)模型。數(shù)據(jù)經(jīng)過工作流系統(tǒng)流轉(zhuǎn)、審批,文檔自動生成系統(tǒng)從中心數(shù)據(jù)庫抽取數(shù)據(jù)嵌入模板自動生成文檔。該模型清晰地描述了文檔生成過程中的公式換算、數(shù)據(jù)抽取與映射及模板替換的問題,在電力制造企業(yè)的復(fù)雜計算文檔自動化應(yīng)用成功。但是對于如何識別計算步驟之間的依賴關(guān)系,如何通過復(fù)雜的計算序列控制文檔生成過程,該模型沒有提及。

姜鵬等在防汛文檔智能生成模型構(gòu)建中,借鑒和改造了傳統(tǒng)的工作流概念,引入了有向圖表示工作流模型,并將模型應(yīng)用于防汛防旱簡報生成,從而快速生成格式規(guī)范、數(shù)據(jù)準(zhǔn)確、內(nèi)容完善的防汛文檔。作者在文中提出了使用有向圖的節(jié)點表示工作步驟的概念,用節(jié)點之間的邊表示數(shù)據(jù)流動關(guān)系。該文雖然給出了計算序列處理數(shù)據(jù)生成文檔的輪廓,但重點卻放在模板標(biāo)簽的查找替換算法和系統(tǒng)架構(gòu)實現(xiàn)上。

在現(xiàn)代工業(yè),尤其是在化工、機械、建筑等行業(yè)中,設(shè)計校核計算是工程設(shè)計過程中極其重要的一個環(huán)節(jié)。計算書的正確、有效及可靠性是保證工程設(shè)計質(zhì)量的重要條件,也是追溯設(shè)計源頭的重要依據(jù)。計算書中往往包含較多的計算步驟,步驟之間存在著依賴關(guān)系,步驟當(dāng)中嵌有計算變量。變量的取值依賴于上下文環(huán)境,主要來自三個方面:第一,通過數(shù)學(xué)公式的計算獲得;第二,通過業(yè)務(wù)數(shù)據(jù)庫查詢獲得;第三,通過用戶交輸入互獲得;對此,本人開發(fā)基于工作序列的文檔自動生成模型的構(gòu)建方法,針對文檔生成過程中需要計算和利用上下文數(shù)據(jù)的問題,借鑒工作流程的思想,明確了計算步驟、計算序列和工作序列的概念,給出了變量內(nèi)存棧和工作序列棧的定義,可依此建立一個基于工作序列的文檔自動生成模型,完善了公式計算引擎、工作序列計算引擎、模板標(biāo)簽替換和目標(biāo)文檔轉(zhuǎn)換的算法以及步驟,并在建筑結(jié)構(gòu)加固設(shè)計計算書的自動生產(chǎn)中得到應(yīng)用,經(jīng)過測試,達到了不同加固方法的計算書自動生成要求,極大地簡化了建筑加固設(shè)計的工作過程,顯著提高了工作效率。



技術(shù)實現(xiàn)要素:

有鑒于此,本發(fā)明提供了一種基于工作序列的文檔自動生成模型的構(gòu)建方法,可實現(xiàn)公式計算引擎算法、工作序列計算引擎算法、模板標(biāo)簽替換算法和目標(biāo)文檔轉(zhuǎn)換算法,并能夠在建筑結(jié)構(gòu)加固設(shè)計計算書的自動生成中得到應(yīng)用,可達到不同加固方法的計算書自動生成要求,極大地簡化了建筑加固設(shè)計的工作過程,顯著提高了工作效率。

為解決上述技術(shù)問題,本發(fā)明的技術(shù)方案是:

一種基于工作序列的文檔自動生成模型的構(gòu)建方法,模型中包含模板文檔、中間文檔和目標(biāo)文檔,模板文檔由不變的文字和變量關(guān)鍵字組成,變量值來自內(nèi)存變量棧和工作序列棧,將變量值代替模板文檔中的變量,實現(xiàn)向中間文檔的轉(zhuǎn)換,再利用設(shè)定規(guī)則和算法,實現(xiàn)向目標(biāo)文檔的轉(zhuǎn)換,

步驟1、建立基于工作序列的文檔自動生成模型的基本結(jié)構(gòu):

基本機構(gòu)以文檔自動生成系統(tǒng)為核心,外部構(gòu)建公共數(shù)據(jù)構(gòu)造器、設(shè)計參數(shù)構(gòu)建器、計算序列構(gòu)造器和模板構(gòu)造器;

步驟2、模型系統(tǒng)的基礎(chǔ)設(shè)置:

包括定義變量規(guī)則、定義標(biāo)簽規(guī)則和定義運算符;

步驟3、公共數(shù)據(jù)處理:

首先定義公共數(shù)據(jù)規(guī)范,再編制接口文檔,最后導(dǎo)入公共數(shù)據(jù);

步驟4、設(shè)計數(shù)據(jù)處理:

包括定義設(shè)計數(shù)據(jù)規(guī)范,配置界面參數(shù),自動生成界面,采集保存數(shù)據(jù),導(dǎo)入設(shè)計數(shù)據(jù);

步驟5、工作序列定義:

維護計算步驟,維護工作序列,公式變量編輯器,公式驗證;

步驟6、文檔生成引擎:

構(gòu)建內(nèi)存變量棧,公式計算引擎,工作序列計算引擎,模板標(biāo)簽替換,文檔轉(zhuǎn)換與生成。

所述步驟1,其中公共數(shù)據(jù)構(gòu)造器,負責(zé)從個業(yè)務(wù)系統(tǒng)中提取數(shù)據(jù)構(gòu)成G集合,為模型運算提供基礎(chǔ)數(shù)據(jù);設(shè)計參數(shù)構(gòu)造器,根據(jù)配置文件生成標(biāo)準(zhǔn)化的UI程序界面,為用戶設(shè)計輸入提供支持,最后導(dǎo)入設(shè)計參數(shù)集P參與模型運算;計算序列構(gòu)造器,用來編輯和生成工作序列S集合,模型根據(jù)S集合表達的計算邏輯進行計算;模板構(gòu)造器,用來生成基于XML格式的模板文檔;文檔自動生成系統(tǒng),包括變量存儲器M,用來完成數(shù)據(jù)轉(zhuǎn)換、計算序列運算、模板數(shù)據(jù)填充和文檔生成,計算步驟如下

第一步:數(shù)據(jù)初始化,構(gòu)建初始內(nèi)存變量棧和計算序列棧,通過轉(zhuǎn)換函數(shù)將基礎(chǔ)數(shù)據(jù)和設(shè)計數(shù)據(jù)加載到內(nèi)存變量棧中;

第二步:啟動計算序列棧運算,識別并計算步驟公式和條件跳轉(zhuǎn)公式,并根據(jù)需要從內(nèi)存變量棧中取值,同時動態(tài)更新計算步驟所代表變量的值,并寫回到內(nèi)存變量棧中;

第三步:模板標(biāo)簽值替換,計算序列運算結(jié)束后,內(nèi)存變量棧和計算序列棧中有明確的值,遍歷模板提取標(biāo)簽,解析處變量名稱,從中查詢相應(yīng)的值替換,生成中間文檔;

第四步:目標(biāo)文檔生成,根據(jù)目標(biāo)文檔生成的規(guī)則,將中間文檔格式化成目標(biāo)文檔所要求的格式。

所述步驟2,其中定義變量規(guī)則,對內(nèi)存變量棧和計算序列棧進行定義,包括

定義1定義變量標(biāo)識K由模板文檔中的文字C′經(jīng)過函數(shù)GK(C′)轉(zhuǎn)化而來,即K=GK(C′);

定義2定義變量標(biāo)識K的類型為一個二元組K<μ,δ>,Kυυ,δυ>為K的最終生成值。μ和δ代表了兩種不同類型的變量,μυ和δυ分別對應(yīng)它們的最終計算值;

定義3定義內(nèi)存變量γ為一個二元組γ<k,υ>,k為變量γ的標(biāo)識符,υ為變量γ的值,內(nèi)存變量空間R={γ};

定義4函數(shù)Ve=Ge(VE)將計算出VE的結(jié)果,Ve為算術(shù)公式的計算結(jié)果;

定義5函數(shù)Ke=Q(SE)將變量公式SE中的變量提取出來,SE中包括內(nèi)存變量和預(yù)設(shè)的計算操作符,Ke是從變量公式中提取的內(nèi)存變量標(biāo)識符集合;

定義6函數(shù)VE=C(M,SE,Ke)將變量公式SE轉(zhuǎn)化為算術(shù)公式VE,其中M為內(nèi)存變量棧

定義7定義內(nèi)存變量棧M為R的子集,內(nèi)存變量γ的標(biāo)識符在M中全局唯一,M包含讀取變量值和寫入變量兩種操作;

定義8函數(shù)Kυ=GV(M,K)從內(nèi)存棧M中讀取變量標(biāo)識符為K的變量值Kυ;

定義9函數(shù)SR(M,γ)定義將變量γ寫入內(nèi)存變量棧M,如果γ,k在M中出現(xiàn),那么SR將覆蓋原值,否則新增保存;

定義10定義計算序列棧S由計算步驟s組成,即S={s},計算步驟s為計算序列的計算單元;

定義11函數(shù)Ks=GS(S,K)定義從計算序列棧S中讀取變量標(biāo)識符K所指定步驟集合計算的結(jié)果集Ks

模板標(biāo)簽包括模板變量標(biāo)簽、計算序列結(jié)果占位符標(biāo)簽和模板格式控制標(biāo)簽。

所述步驟6,文檔生成引擎:構(gòu)建內(nèi)存變量棧,公式計算引擎,工作序列計算引擎,模板標(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實現(xiàn)g→γg的轉(zhuǎn)換;

定義13定義Rp為業(yè)務(wù)設(shè)計參數(shù)集生成的內(nèi)存變量集合,記Rp={γp}={γ|γ=fp(p)∧p∈P},其中P為業(yè)務(wù)設(shè)計參數(shù)集合,p為P的元素,γp表示從集合P中轉(zhuǎn)換出的內(nèi)存變量元素,函數(shù)fp實現(xiàn)p→γp的轉(zhuǎn)換;

定義14定義Rs為由計算序列S生成的內(nèi)存變量集合,記Rs={γs}={γ|γ=fs(s)∧s∈S},其中S為計算序列,s為S的元素,γs表示從集合S中轉(zhuǎn)換出的內(nèi)存變量元素,函數(shù)fs實現(xiàn)s→γs的轉(zhuǎn)換;

定義15函數(shù)M=Rg+Rp+Rs,M為內(nèi)存變量棧,函數(shù)指明了M的組成,其中“+”表示并集運算,即相同的變量在并集運算時相同標(biāo)識符的變量的值會被新值覆蓋。

所述步驟6,文檔生成引擎:構(gòu)建內(nèi)存變量棧,公式計算引擎,工作序列計算引擎,模板標(biāo)簽替換,文檔轉(zhuǎn)換與生成,其中公式計算引擎,包括:①定義了表達式的操作符及優(yōu)先級;

②加載操作符及優(yōu)先級;

③取中序表達中的操作數(shù)或變量名并以列表返回,為變量替換時使用;

④計算中序數(shù)值表達式的值;

⑤中序表達式轉(zhuǎn)后序表達式;

⑥計算后序表達式的值;

⑦求兩個操作符的優(yōu)先級別;

⑧計算兩個操作數(shù)的表達式值;

⑨將兩數(shù)運算的表達式轉(zhuǎn)成word公式表達式形式。

所述步驟6,文檔生成引擎:構(gòu)建內(nèi)存變量棧,公式計算引擎,工作序列計算引擎,模板標(biāo)簽替換,文檔轉(zhuǎn)換與生成,其中工作序列計算引擎包括:

定義16定義計算步驟s<sk,se,υe,sυ,type,sc>為一個六元組,其中sk為變量標(biāo)識符,se為變量公式,υe為變量替換后的算術(shù)公式;sυ為算術(shù)公式運算結(jié)果值,sc為運算條件表達式,sc的計算結(jié)果決定了下一個參與運算的計算步驟元素的跳轉(zhuǎn)條件,他控制著計算序列的運算邏輯,計算步驟的類型s.type=enum{VAR,EXP,TXT,F(xiàn)UN},VAR表示s.se是一個內(nèi)存變量,參與計算時可以直接在M中取值;EXP表示s.se是一個由數(shù)值常量、內(nèi)存變量和運算符等組成的變量公式,在參與計算時,首先提取公式中的變量,然后依次在M中取值替換生成算術(shù)公式,最后計算算術(shù)公式的值作為計算步驟的值;TXT表示s.se是一個嵌入內(nèi)存變量的文本串,文本串中可以包含數(shù)值常量串、內(nèi)存變量以及它們組成的公式串,參與計算時,文本串中的內(nèi)存變量將被提取,內(nèi)存變量由對應(yīng)的值替換,公式串不參與算術(shù)運算;FUN表示s.se是一個自定義函數(shù),表現(xiàn)形式為一個格式化的文本串,串中可以包含數(shù)值常量串和內(nèi)存變量,參與運算時,首先取變量值替換自定義函數(shù)串的變量,然后對自定義函數(shù)串進行解析,最后在自定義函數(shù)庫中調(diào)用相關(guān)函數(shù)進行計算;

定義17函數(shù)Vc=Gc(SC)計算條件表達式SC的值,SC中可以包含若干數(shù)值串、內(nèi)存變量和條件運算符;

定義18函數(shù)Vf=Gf(FS)解析自定義函數(shù)串FS,分離函數(shù)名和參數(shù),并調(diào)用相關(guān)的自定義函數(shù)計算結(jié)果,F(xiàn)S中可以包括若干數(shù)值串和內(nèi)存變量,內(nèi)存變量根據(jù)上下文在內(nèi)存變量棧M中取值;

定義19定義計算步驟s的類型由一個四元組表示sk<w,x,y,z>,其中w,x,y,z分別代表了VAR,EXP,TXT,F(xiàn)UN類型的計算步驟,

計算步驟計算的過程描述

(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為下一個參與運算的步驟元素在計算序列棧中索引;sNext為下一個參與運算的步驟元素。

所述所述步驟6,文檔生成引擎:構(gòu)建內(nèi)存變量棧,公式計算引擎,工作序列計算引擎,模板標(biāo)簽替換,文檔轉(zhuǎn)換與生成,其中文檔轉(zhuǎn)換與生成包括對模板與文檔的定義:

定義20定義模板為一個二元組T<C,K>,C為模板文檔中不變的文字部分,K為模板文檔中的變量標(biāo)識符,K在模板文檔上下文中表示相同含義;

定義21定義中間文檔為一個二元組W′<C,U>,C為模板中不變的文字部分,U為模板文檔變量的在上下文計算后的結(jié)果值;

定義22函數(shù)Z(K,U)將K替換成U,其中K為文檔中的變量,U為模板變量的在上下文計算后的結(jié)果值;

定義23函數(shù)W=X(W′,Ru)將中間文檔轉(zhuǎn)換為目標(biāo)文檔,其中W′為中間文檔,W為最終的目標(biāo)文檔,Ru為中間文檔向目標(biāo)文檔轉(zhuǎn)換規(guī)則。

所述文檔轉(zhuǎn)換與生成中還包括計算邏輯的存儲定義:

定義24定義集合STO存儲了文檔生成過程中使用的計算邏輯,記STO={M,S,T,K,K<μ,δ>,Ru},其中變量分別表示:內(nèi)存變量棧、模板、模板變量、模板變量類型和中間文檔向目標(biāo)文檔的轉(zhuǎn)換規(guī)則;

定義25操作Get(STO)→T實現(xiàn)從STO中已存儲的計算邏輯提供給模板進行處理;

所述文檔生成的計算步驟如下:

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))>)>。

較現(xiàn)有技術(shù),本發(fā)明有益技術(shù)效果主要體現(xiàn)在:針對文檔生成過程中需要計算和利用上下文數(shù)據(jù)的問題,借鑒工作流程的思想,明確了計算步驟、計算序列和工作序列的概念,給出了變量內(nèi)存棧和工作序列棧的定義,可依此建立一個基于工作序列的文檔自動生成模型,完善了公式計算引擎、工作序列計算引擎、模板標(biāo)簽替換和目標(biāo)文檔轉(zhuǎn)換的算法以及步驟,并在建筑結(jié)構(gòu)加固設(shè)計計算書的自動生產(chǎn)中得到應(yīng)用,經(jīng)過測試,達到了不同加固方法的計算書自動生成要求,極大地簡化了建筑加固設(shè)計的工作過程,顯著提高了工作效率。

附圖說明

圖1:本發(fā)明的模型結(jié)構(gòu)示意圖;

圖2:本發(fā)明的公式引擎通用表達式的計算示例圖;

圖3:本發(fā)明的工作序列計算引擎算法流程圖;

圖4:本發(fā)明的計算書生成流程圖。

具體實施方式

以下結(jié)合附圖,對本發(fā)明的具體實施方式作進一步詳述,以使本發(fā)明技術(shù)方案更易于理解和掌握。

實施例1

如圖1、圖2、圖3和圖4所示,一種基于工作序列的文檔自動生成模型的構(gòu)建方法,模型中包含模板文檔、中間文檔和目標(biāo)文檔,模板文檔由不變的文字和變量關(guān)鍵字組成,變量值來自內(nèi)存變量棧和工作序列棧,將變量值代替模板文檔中的變量,實現(xiàn)向中間文檔的轉(zhuǎn)換,再利用設(shè)定規(guī)則和算法,實現(xiàn)向目標(biāo)文檔的轉(zhuǎn)換,

步驟1、建立基于工作序列的文檔自動生成模型的基本結(jié)構(gòu):

基本機構(gòu)以文檔自動生成系統(tǒng)為核心,外部構(gòu)建公共數(shù)據(jù)構(gòu)造器、設(shè)計參數(shù)構(gòu)建器、計算序列構(gòu)造器和模板構(gòu)造器;

步驟2、模型系統(tǒng)的基礎(chǔ)設(shè)置:

包括定義變量規(guī)則、定義標(biāo)簽規(guī)則和定義運算符;

步驟3、公共數(shù)據(jù)處理:

首先定義公共數(shù)據(jù)規(guī)范,再編制接口文檔,最后導(dǎo)入公共數(shù)據(jù);

步驟4、設(shè)計數(shù)據(jù)處理:

包括定義設(shè)計數(shù)據(jù)規(guī)范,配置界面參數(shù),自動生成界面,采集保存數(shù)據(jù),導(dǎo)入

設(shè)計數(shù)據(jù);

步驟5、工作序列定義:

維護計算步驟,維護工作序列,公式變量編輯器,公式驗證;

步驟6、文檔生成引擎:

構(gòu)建內(nèi)存變量棧,公式計算引擎,工作序列計算引擎,模板標(biāo)簽替換,文檔轉(zhuǎn)換與生成。

所述步驟1,其中公共數(shù)據(jù)構(gòu)造器,負責(zé)從個業(yè)務(wù)系統(tǒng)中提取數(shù)據(jù)構(gòu)成G集合,為模型運算提供基礎(chǔ)數(shù)據(jù);設(shè)計參數(shù)構(gòu)造器,根據(jù)配置文件生成標(biāo)準(zhǔn)化的UI程序界面,為用戶設(shè)計輸入提供支持,最后導(dǎo)入設(shè)計參數(shù)集P參與模型運算;計算序列構(gòu)造器,用來編輯和生成工作序列S集合,模型根據(jù)S集合表達的計算邏輯進行計算;模板構(gòu)造器,用來生成基于XML格式的模板文檔;文檔自動生成系統(tǒng),包括變量存儲器M,用來完成數(shù)據(jù)轉(zhuǎn)換、計算序列運算、模板數(shù)據(jù)填充和文檔生成,計算步驟如下

第一步:數(shù)據(jù)初始化,構(gòu)建初始內(nèi)存變量棧和計算序列棧,通過轉(zhuǎn)換函數(shù)將基礎(chǔ)數(shù)據(jù)和設(shè)計數(shù)據(jù)加載到內(nèi)存變量棧中;

第二步:啟動計算序列棧運算,識別并計算步驟公式和條件跳轉(zhuǎn)公式,并根據(jù)需要從內(nèi)存變量棧中取值,同時動態(tài)更新計算步驟所代表變量的值,并寫回到內(nèi)存變量棧中;

第三步:模板標(biāo)簽值替換,計算序列運算結(jié)束后,內(nèi)存變量棧和計算序列棧中有明確的值,遍歷模板提取標(biāo)簽,解析處變量名稱,從中查詢相應(yīng)的值替換,生成中間文檔;

第四步:目標(biāo)文檔生成,根據(jù)目標(biāo)文檔生成的規(guī)則,將中間文檔格式化成目標(biāo)文檔所要求的格式。

所述步驟2,其中定義變量規(guī)則,對內(nèi)存變量棧和計算序列棧進行定義,包括

定義1定義變量標(biāo)識K由模板文檔中的文字C′經(jīng)過函數(shù)GK(C′)轉(zhuǎn)化而來,即K=GK(C′);

定義2定義變量標(biāo)識K的類型為一個二元組K<μ,δ>,Kυυ,δυ>為K的最終生成值。μ和δ代表了兩種不同類型的變量,μυ和δυ分別對應(yīng)它們的最終計算值;

定義3定義內(nèi)存變量γ為一個二元組γ<k,υ>,k為變量γ的標(biāo)識符,υ為變量γ的值,內(nèi)存變量空間R={γ};

定義4函數(shù)Ve=Ge(VE)將計算出VE的結(jié)果,Ve為算術(shù)公式的計算結(jié)果;

定義5函數(shù)Ke=Q(SE)將變量公式SE中的變量提取出來,SE中包括內(nèi)存變量和預(yù)設(shè)的計算操作符,Ke是從變量公式中提取的內(nèi)存變量標(biāo)識符集合;

定義6函數(shù)VE=C(M,SE,Ke)將變量公式SE轉(zhuǎn)化為算術(shù)公式VE,其中M為內(nèi)存變量棧

定義7定義內(nèi)存變量棧M為R的子集,內(nèi)存變量γ的標(biāo)識符在M中全局唯一,M包含讀取變量值和寫入變量兩種操作;

定義8函數(shù)Kυ=GV(M,K)從內(nèi)存棧M中讀取變量標(biāo)識符為K的變量值Kυ;

定義9函數(shù)SR(M,γ)定義將變量γ寫入內(nèi)存變量棧M,如果γ,k在M中出現(xiàn),那么SR將覆蓋原值,否則新增保存;

定義10定義計算序列棧S由計算步驟s組成,即S={s},計算步驟s為計算序列的計算單元;

定義11函數(shù)Ks=GS(S,K)定義從計算序列棧S中讀取變量標(biāo)識符K所指定步驟集合計算的結(jié)果集Ks

模板標(biāo)簽包括模板變量標(biāo)簽、計算序列結(jié)果占位符標(biāo)簽和模板格式控制標(biāo)簽。

所述步驟6,文檔生成引擎:構(gòu)建內(nèi)存變量棧,公式計算引擎,工作序列計算引擎,模板標(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實現(xiàn)g→γg的轉(zhuǎn)換;

定義13定義Rp為業(yè)務(wù)設(shè)計參數(shù)集生成的內(nèi)存變量集合,記Rp={γp}={γ|γ=fp(p)∧p∈P},其中P為業(yè)務(wù)設(shè)計參數(shù)集合,p為P的元素,γp表示從集合P中轉(zhuǎn)換出的內(nèi)存變量元素,函數(shù)fp實現(xiàn)p→γp的轉(zhuǎn)換;

定義14定義Rs為由計算序列S生成的內(nèi)存變量集合,記Rs={γs}={γ|γ=fs(s)∧s∈S},其中S為計算序列,s為S的元素,γs表示從集合S中轉(zhuǎn)換出的內(nèi)存變量元素,函數(shù)fs實現(xiàn)s→γs的轉(zhuǎn)換;

定義15函數(shù)M=Rg+Rp+Rs,M為內(nèi)存變量棧,函數(shù)指明了M的組成,其中“+”表示并集運算,即相同的變量在并集運算時相同標(biāo)識符的變量的值會被新值覆蓋。

所述步驟6,文檔生成引擎:構(gòu)建內(nèi)存變量棧,公式計算引擎,工作序列計算引擎,模板標(biāo)簽替換,文檔轉(zhuǎn)換與生成,其中公式計算引擎,包括:①定義了表達式的操作符及優(yōu)先級;

②加載操作符及優(yōu)先級;

③取中序表達中的操作數(shù)或變量名并以列表返回,為變量替換時使用;

④計算中序數(shù)值表達式的值;

⑤中序表達式轉(zhuǎn)后序表達式;

⑥計算后序表達式的值;

⑦求兩個操作符的優(yōu)先級別;

⑧計算兩個操作數(shù)的表達式值;

⑨將兩數(shù)運算的表達式轉(zhuǎn)成word公式表達式形式。

所述步驟6,文檔生成引擎:構(gòu)建內(nèi)存變量棧,公式計算引擎,工作序列計算引擎,模板標(biāo)簽替換,文檔轉(zhuǎn)換與生成,其中工作序列計算引擎包括:

定義16定義計算步驟s<sk,se,υe,sυ,type,sc>為一個六元組,其中sk為變量標(biāo)識符,se為變量公式,υe為變量替換后的算術(shù)公式;sυ為算術(shù)公式運算結(jié)果值,sc為運算條件表達式,sc的計算結(jié)果決定了下一個參與運算的計算步驟元素的跳轉(zhuǎn)條件,他控制著計算序列的運算邏輯,計算步驟的類型s.type=enum{VAR,EXP,TXT,F(xiàn)UN},VAR表示s.se是一個內(nèi)存變量,參與計算時可以直接在M中取值;EXP表示s.se是一個由數(shù)值常量、內(nèi)存變量和運算符等組成的變量公式,在參與計算時,首先提取公式中的變量,然后依次在M中取值替換生成算術(shù)公式,最后計算算術(shù)公式的值作為計算步驟的值;TXT表示s.se是一個嵌入內(nèi)存變量的文本串,文本串中可以包含數(shù)值常量串、內(nèi)存變量以及它們組成的公式串,參與計算時,文本串中的內(nèi)存變量將被提取,內(nèi)存變量由對應(yīng)的值替換,公式串不參與算術(shù)運算;FUN表示s.se是一個自定義函數(shù),表現(xiàn)形式為一個格式化的文本串,串中可以包含數(shù)值常量串和內(nèi)存變量,參與運算時,首先取變量值替換自定義函數(shù)串的變量,然后對自定義函數(shù)串進行解析,最后在自定義函數(shù)庫中調(diào)用相關(guān)函數(shù)進行計算;

定義17函數(shù)Vc=Gc(SC)計算條件表達式SC的值,SC中可以包含若干數(shù)值串、內(nèi)存變量和條件運算符;

定義18函數(shù)Vf=Gf(FS)解析自定義函數(shù)串FS,分離函數(shù)名和參數(shù),并調(diào)用相關(guān)的自定義函數(shù)計算結(jié)果,F(xiàn)S中可以包括若干數(shù)值串和內(nèi)存變量,內(nèi)存變量根據(jù)上下文在內(nèi)存變量棧M中取值;

定義19定義計算步驟s的類型由一個四元組表示sk<w,x,y,z>,其中w,x,y,z分別代表了VAR,EXP,TXT,F(xiàn)UN類型的計算步驟,

計算步驟計算的過程描述

(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為下一個參與運算的步驟元素在計算序列棧中索引;sNext為下一個參與運算的步驟元素。

所述所述步驟6,文檔生成引擎:構(gòu)建內(nèi)存變量棧,公式計算引擎,工作序列計算引擎,模板標(biāo)簽替換,文檔轉(zhuǎn)換與生成,其中文檔轉(zhuǎn)換與生成包括對模板與文檔的定義:

定義20定義模板為一個二元組T<C,K>,C為模板文檔中不變的文字部分,K為模板文檔中的變量標(biāo)識符,K在模板文檔上下文中表示相同含義;

定義21定義中間文檔為一個二元組W′<C,U>,C為模板中不變的文字部分,U為模板文檔變量的在上下文計算后的結(jié)果值;

定義22函數(shù)Z(K,U)將K替換成U,其中K為文檔中的變量,U為模板變量的在上下文計算后的結(jié)果值;

定義23函數(shù)W=X(W′,Ru)將中間文檔轉(zhuǎn)換為目標(biāo)文檔,其中W′為中間文檔,W為最終的目標(biāo)文檔,Ru為中間文檔向目標(biāo)文檔轉(zhuǎn)換規(guī)則。

所述文檔轉(zhuǎn)換與生成中還包括計算邏輯的存儲定義:

定義24定義集合STO存儲了文檔生成過程中使用的計算邏輯,記STO={M,S,T,K,K<μ,δ>,Ru},其中變量分別表示:內(nèi)存變量棧、模板、模板變量、模板變量類型和中間文檔向目標(biāo)文檔的轉(zhuǎn)換規(guī)則;

定義25操作Get(STO)→T實現(xiàn)從STO中已存儲的計算邏輯提供給模板進行處理;

所述文檔生成的計算步驟如下:

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))>)>。

如圖1所示,根據(jù)以上定義,繪制出模型的整體結(jié)構(gòu),對模型結(jié)構(gòu)進行分析,方框之內(nèi)的功能主要目標(biāo)是完成數(shù)據(jù)轉(zhuǎn)換、計算序列運算、模板數(shù)據(jù)填充和文檔生成,稱之為文檔自動生成系統(tǒng),方框外部的公共數(shù)據(jù)構(gòu)造器(Global Creator,GCR)、設(shè)計參數(shù)構(gòu)建器(Design Creator,DCR)、計算序列構(gòu)造器(Sequences Creator)和模板構(gòu)造器(Template Creator,TCR)是模型的支撐系統(tǒng)。

GCR可看成是外部業(yè)務(wù)系統(tǒng)的抽象,負責(zé)從各業(yè)務(wù)系統(tǒng)中提取數(shù)據(jù)構(gòu)成G集合,為模型運算提供基礎(chǔ)數(shù)據(jù)。DCR可看成是設(shè)計系統(tǒng)的抽象。根據(jù)配置文件生成標(biāo)準(zhǔn)化的UI程序界面,為用戶設(shè)計輸入提供支持,最后導(dǎo)入設(shè)計參數(shù)集P參與模型運算。SCR用來編輯和生成工作序列S集合,模型根據(jù)S集合表達的計算邏輯進行計算。TCR是主要用來生產(chǎn)基于XML格式的模板文檔。

在文檔自動生成系統(tǒng)內(nèi)部,M是變量儲存器,主要計算步驟如下:

步驟1數(shù)據(jù)初始化,構(gòu)建初始內(nèi)存變量棧M和計算序列棧S。通過轉(zhuǎn)換函數(shù)fg和fp將基礎(chǔ)數(shù)據(jù)和設(shè)計數(shù)據(jù)加載到M中,形式描述為f({G,D})→M。

步驟2啟動計算序列棧S運算。S的計算邏輯由其自身決定,計算過程的關(guān)鍵任務(wù)是識別和計算步驟公式和條件跳轉(zhuǎn)公式。序列計算過程中,算法根據(jù)計算步驟公式變量的需要從M中取值,同時動態(tài)更新計算步驟所代表變量的值,并寫回到M中,直到所有步驟執(zhí)行結(jié)束。

步驟3模板標(biāo)簽值替換。計算序列運算結(jié)束后,M和S中有明確的值。遍歷模板提取標(biāo)簽,解析出變量名稱,從中查詢相應(yīng)的值替換,生成中間文檔。

步驟4目標(biāo)文檔生成。根據(jù)目標(biāo)文檔生成的規(guī)則,將中間文檔格式化成目標(biāo)文檔所要求的格式。

該模型結(jié)構(gòu)描述了文檔自動生成的邏輯,定義了文檔生成過程中的內(nèi)部結(jié)構(gòu)及操作,以下將上述操作封裝成系統(tǒng)的功能模塊,該系統(tǒng)包括系統(tǒng)基礎(chǔ)設(shè)置、公共數(shù)據(jù)處理、設(shè)計數(shù)據(jù)處理、工作序列定義和文檔生成引擎,每個模塊對應(yīng)的功能如表1所示:

表1文檔生成系統(tǒng)功能模塊

其中模板以XML文件的形式存在,模板標(biāo)簽包含三種類型:模板變量標(biāo)簽、計算序列結(jié)構(gòu)占位符標(biāo)簽和模板格式控制符標(biāo)簽,其中,

(1)模板變量標(biāo)簽,使用“{$”和“$}”界定標(biāo)簽標(biāo)識符,如{$f#a$}表示變量f#a,在工作序列計算完成之后,該變量的值可直接從內(nèi)存棧中讀取并替換,在文檔中,變量需格式化呈現(xiàn),引入“#”表示下前,“$”表示上簽,如變量f#a在文檔中呈現(xiàn)fa。

(2)計算序列結(jié)構(gòu)占位符標(biāo)簽,使用“{”和“}”界定標(biāo)簽標(biāo)識符,格式為{starIndex-endIndex},它是起始計算步驟號starIndex到結(jié)束計算步驟號endIndex執(zhí)行結(jié)果的占位符。

(3)模板格式控制標(biāo)簽,模板XML向Word文件轉(zhuǎn)換的過程中,通過該標(biāo)簽控制輸出格式,如:Setfont、Settext、paragraph、Table、Merge、Setcell、Cell、subscript、superscript、Field、Header、Footer等。

其中,公式計算引擎的主要作用是完成通用表達式的識別與運算,如圖2所示,表達式計算時具有通用性,不僅能根據(jù)表達計算最終的結(jié)果,還能識別變量表達式,并將計算的過程格式化輸出到最終的Word中呈現(xiàn)。這涉及如下幾個方面的問題:(1)能夠識別表達式字符串運算邏輯;(2)能夠從表達式串中分離變量;(3)能夠?qū)μ鎿Q數(shù)值的表達式進行運算;(4)能夠?qū)ψ址磉_式和數(shù)值表達式進行形式化表示,公式計算引擎中定義的操作摘要如下:

·OperatorPrority定義了表達式的操作符及操作符優(yōu)先級;

·LoadOperatorAndPrority加載操作符及優(yōu)先級字典;

·ValidInOrderExp校驗中序表達式是否合法;

·GetInOrderOperands取中序表達中的操作數(shù)或變量名,以列表返回,為變量替換時使用;

·CalcInOrder計算中序數(shù)值表達式的值;

·InOrderToPostOrder中序表達式轉(zhuǎn)后序表達式;

·CalcPostOrder計算后序數(shù)值表達式的值;

·CompareTwoOperatorSPriority求兩個操作符的優(yōu)先級別;

·CalcTwoNum計算兩個操作數(shù)的表達式值;

·ToWordExpString將兩數(shù)運算的表達式轉(zhuǎn)車Word公式表達式形式。

如圖3所示,工作序列計算引擎的核心是執(zhí)行工作序列的計算,一個工作序列可以存在著若干個計算序列,每個計算序列包含若干個計算步驟。工作序列計算引擎執(zhí)行前,所有的公共基礎(chǔ)數(shù)據(jù)和設(shè)計業(yè)務(wù)數(shù)據(jù)均在內(nèi)存變量棧中準(zhǔn)備好;執(zhí)行過程中,運算所需的數(shù)據(jù)根據(jù)上下文從內(nèi)存棧中取值,計算步驟相關(guān)的屬性值在運算的被更新,計算步驟計算結(jié)果更新到內(nèi)存棧中。

工作序列計算引擎算法執(zhí)行完成以后,如圖4所示,將運算的過程數(shù)據(jù)保存在當(dāng)前計算實例的內(nèi)存變量棧中,程序控制權(quán)交給模板數(shù)值填充算法。填充算法查找對應(yīng)的模板XML文件,將內(nèi)存變量棧中的變量值替換到模板中,生成XML中間文檔,程序控制權(quán)交給Word文檔生成算法,將XML中間文檔轉(zhuǎn)換成目標(biāo)文檔。

以下以“鋼筋混凝土結(jié)構(gòu)梁外貼鋼板加固方法”為例進行應(yīng)用驗證,其參數(shù)配置步驟如下:

(1)對加固設(shè)計方法中要用到的加固設(shè)計行業(yè)的現(xiàn)行國家標(biāo)準(zhǔn)和行業(yè)標(biāo)準(zhǔn)數(shù)據(jù)進行初始化;

(2)對加固方法的計算流程進行分析,找出設(shè)計過程中用到的變量;

(3)對變量進行分類、識別出哪些變量是在加固設(shè)計時與用戶進行交互,對這些變量使用界面參數(shù)配置工作進行建庫,從而設(shè)計出加固設(shè)計界面;

(4)對計算流程進行規(guī)劃,把計算過程變成一系列具有邏輯關(guān)系的計算步驟,使用工作序列生成工具進行建模;

(5)設(shè)計計算書轉(zhuǎn)換所需的XML文檔

上述步驟完成之后,接著對加固方法進行調(diào)試,調(diào)試成功后,就可以通過用戶界面生成器產(chǎn)生加固設(shè)計界面,獲得設(shè)計參數(shù),啟動工作序列計算自動生成計算書。

為了動態(tài)生成用戶界面獲得加固設(shè)計數(shù)據(jù)還需配置界面參數(shù),加固方法的就算過程是與需要加固的建筑構(gòu)件的部位相關(guān)的,一個建筑構(gòu)件的多個部位可能需要使用到相同的參數(shù),因此一個加固方法的參數(shù)是具有層次的。

加固方法的工作序列配置是一個復(fù)雜的過程,梁加固計算工作序列涉及到5個計算序列:梁跨中抗彎、左支座抗彎、左支座抗剪、右支座抗彎、右支座抗剪。

外粘鋼板梁加固包含5個計算序列,每個計算序列的結(jié)構(gòu)都出現(xiàn)在計算書中,因此為每個計算序列指定一個模板,L-B-0模板用于轉(zhuǎn)換計算書中的變量表格,表格中的數(shù)據(jù)來源于加固設(shè)計完成后的內(nèi)存變量棧;L-B-1模板用于轉(zhuǎn)換計算書中的梁跨中抗彎序列。

當(dāng)然,以上僅是本發(fā)明的具體應(yīng)用范例,對本發(fā)明的保護范圍不構(gòu)成任何限制。凡采用等同變換或者等效替換而形成的技術(shù)方案,均落在本發(fā)明權(quán)利保護范圍之內(nèi)。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1