專利名稱:采用用戶引導(dǎo)進(jìn)行自動(dòng)應(yīng)用開發(fā)的系統(tǒng)設(shè)置和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種采用用戶引導(dǎo)進(jìn)行自動(dòng)應(yīng)用開發(fā)的系統(tǒng)設(shè)置和方法。
背景技術(shù):
當(dāng)今的軟件體系結(jié)構(gòu)一般都提供了根據(jù)特定的規(guī)則構(gòu)造前端邏輯和后端邏輯來實(shí)現(xiàn)軟件的均勻性并構(gòu)建軟件。由此可以實(shí)現(xiàn)產(chǎn)生軟件應(yīng)用程序的應(yīng)用軟件的開發(fā)。在此前端邏輯理解為已準(zhǔn)備好的程序邏輯,而后端邏輯以多個(gè)有序的處理步驟為目標(biāo),如將信息存儲(chǔ)在數(shù)據(jù)庫以及重新獲取該信息。常見的應(yīng)用程序具有整體特性,這在該應(yīng)用長時(shí)間使用時(shí)會(huì)導(dǎo)致非常難以將針對(duì)該應(yīng)用的變化的或者說新的要求移植到該應(yīng)用中。這首先是因?yàn)楫?dāng)今的軟件體系結(jié)構(gòu)好得沒有為應(yīng)用的內(nèi)部問題提供支持。
目前不存在子應(yīng)用的概念。此外當(dāng)今的軟件體系結(jié)構(gòu)沒有為應(yīng)用內(nèi)部的數(shù)據(jù)流提供支持。使用者更多地是在處理查詢、新信息的輸入、從數(shù)據(jù)庫獲得信息等等時(shí)、尤其是在復(fù)雜的貫穿多個(gè)單獨(dú)的邏輯階段的過程中依靠自己。
此外,當(dāng)今軟件體系結(jié)構(gòu)的特征是前端和后端中的編程模型原則上是不同的,這甚至?xí)纬蓪iT的軟件開發(fā)團(tuán)隊(duì),即前端開發(fā)者和后端開發(fā)者。但這種專門化會(huì)對(duì)整個(gè)開發(fā)過程、尤其是對(duì)成本產(chǎn)生負(fù)面影響。
此外當(dāng)今的軟件體系結(jié)構(gòu)沒有為應(yīng)用內(nèi)部的數(shù)據(jù)流提供支持,這會(huì)部分導(dǎo)致應(yīng)用內(nèi)不一目了然和不受控制的數(shù)據(jù)交換并且容易出錯(cuò)。當(dāng)使用者在工作時(shí)沒有受到特定的軟件系統(tǒng)的各個(gè)工作步驟的布置支持,而是被告知要自己產(chǎn)生流程計(jì)劃時(shí),也可能會(huì)出現(xiàn)錯(cuò)誤。
此外當(dāng)前的根據(jù)現(xiàn)有技術(shù)的措施也帶來安全性風(fēng)險(xiǎn),因?yàn)樵?非期望的)系統(tǒng)中斷時(shí)無法保證開發(fā)狀態(tài)。因此Oracle的白皮書“Oracle ApplicationDevelopment Framework Overview”,2004年4月存檔,同樣展示了在建立軟件體系結(jié)構(gòu)時(shí)的框架。但該框架的缺點(diǎn)是不包含尤其是使得可以存儲(chǔ)系統(tǒng)存在的狀態(tài)、從而在出現(xiàn)干擾時(shí)可以保證無差錯(cuò)地重新運(yùn)行的安全邏輯。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提供一種軟件系統(tǒng)設(shè)置和相應(yīng)的方法,可以改善目前的過程并在開發(fā)時(shí)向應(yīng)用程序開發(fā)工程師提供結(jié)構(gòu)化的引導(dǎo),同時(shí)提高系統(tǒng)的安全性。
該技術(shù)問題是通過一種用于在應(yīng)用開發(fā)時(shí)自動(dòng)產(chǎn)生用戶引導(dǎo)的系統(tǒng)來解決的。
經(jīng)典的系統(tǒng)由用于顯示數(shù)據(jù)并以諸如表格、清單等不同形式顯示該數(shù)據(jù)的可視組件組成。此外經(jīng)典系統(tǒng)還包括作為后端的模型組件,其用于存儲(chǔ)數(shù)據(jù)并具有關(guān)于數(shù)據(jù)存儲(chǔ)類型的知識(shí)。上述系統(tǒng)中的第三部分是控制組件或控制器,其邏輯地設(shè)置在可視組件和模型組件之間??刂平M件處理用戶交互行為(鍵盤、鼠標(biāo)事件等),將該用戶交互行為轉(zhuǎn)換為對(duì)模型組件的數(shù)據(jù)要求,并將其發(fā)送到模型組件。如果模型組件返回?cái)?shù)據(jù),則該數(shù)據(jù)由控制組件傳送到可視組件并在該可視組件上以用戶期望的方式進(jìn)行顯示。這個(gè)過程的優(yōu)點(diǎn)在于,數(shù)據(jù)存儲(chǔ)的類型和數(shù)據(jù)顯示的類型都能被改變,而無需重建整個(gè)軟件系統(tǒng)??刂平M件的作用相當(dāng)于“可視組件”和“模型組件”之間的中介。因此可視組件不涉及模型組件內(nèi)的變化,并且模型組件不受可視組件中變化的影響。
對(duì)應(yīng)地,本發(fā)明的用于在應(yīng)用開發(fā)時(shí)自動(dòng)進(jìn)行用戶引導(dǎo)的系統(tǒng)設(shè)置具有以下組件-至少一個(gè)具有多種表現(xiàn)形式的可視組件(前端),分別用于在特定時(shí)刻察看數(shù)據(jù)和由用戶進(jìn)行輸入,-至少一個(gè)用于存儲(chǔ)和調(diào)用數(shù)據(jù)的模型組件(后端),-用于將用戶輸入和/或?qū)?shù)據(jù)的查詢傳遞到模型組件并將被查詢的數(shù)據(jù)傳遞到可視組件的控制組件,其中控制組件還用于在不同的表現(xiàn)形式之間進(jìn)行切換,-用于確定不同表現(xiàn)形式之間的切換順序的過程運(yùn)行組件,-狀態(tài)管理器,用于在系統(tǒng)掛起時(shí)存儲(chǔ)系統(tǒng)的其它部分的狀態(tài)以及在系統(tǒng)恢復(fù)時(shí)重新建立這些狀態(tài)。
在優(yōu)選實(shí)施方式中,所述過程運(yùn)行組件用于提供可配置的運(yùn)行過程。在本發(fā)明中,可配置的意思是針對(duì)每個(gè)開發(fā)過程專門匹配該運(yùn)行過程,并且可由使用者進(jìn)行設(shè)置。
所述過程運(yùn)行組件用于提供可視組件之間可配置的切換順序。此外還用于在應(yīng)用開發(fā)時(shí)提供可配置的處理步驟順序。
新型的體系結(jié)構(gòu)引入了一種稱為過程運(yùn)行組件或“過程”的新量綱。該量綱針對(duì)上述與應(yīng)用內(nèi)的數(shù)據(jù)流在該應(yīng)用及其開發(fā)所基于的軟件體系結(jié)構(gòu)沒有為排列和導(dǎo)向數(shù)據(jù)流提供支持時(shí)可能為無序相關(guān)聯(lián)的問題。利用過程運(yùn)行組件可以達(dá)到如下目標(biāo)進(jìn)行工作流自動(dòng)化,從而使軟件用戶在其決定時(shí)受到數(shù)據(jù)處理步驟的可配置順序的支持。這帶來了能產(chǎn)生更少錯(cuò)誤的優(yōu)點(diǎn)。
與本發(fā)明的可視組件具有多種表現(xiàn)形式雷同,模型組件也構(gòu)造為具有數(shù)據(jù)存儲(chǔ)的多種業(yè)務(wù)形式,這些業(yè)務(wù)形式分別與至少一個(gè)表現(xiàn)形式邏輯關(guān)聯(lián),其中不同表現(xiàn)形式之間的切換與不同業(yè)務(wù)形式之間的切換相耦合。
在此業(yè)務(wù)形式理解為一種特定的編程技術(shù)方式,來自數(shù)據(jù)庫或類似數(shù)據(jù)儲(chǔ)備源的數(shù)據(jù)以該方式被存儲(chǔ)、調(diào)用和處理。通過這種方式可以在針對(duì)每個(gè)表現(xiàn)形式或一組表現(xiàn)形式具有匹配的業(yè)務(wù)形式的情況下優(yōu)化數(shù)據(jù)流。
在另一個(gè)優(yōu)選實(shí)施方式中,表現(xiàn)形式以及必要時(shí)(如果存在)業(yè)務(wù)形式都分層地設(shè)置,從而切換順序在一個(gè)層次內(nèi)部進(jìn)行時(shí)該切換順序已在下一個(gè)更低層的層次中運(yùn)行過。實(shí)際中每個(gè)表現(xiàn)形式和每個(gè)業(yè)務(wù)形式例如還可以由相繼被激活、調(diào)用和處理的任務(wù)組成。
通過這種方式可以對(duì)用戶引導(dǎo)進(jìn)行結(jié)構(gòu)化的控制,直至向下達(dá)到開發(fā)者被迫要輸入形式表格的一個(gè)特定字段或命令行的特定格式化輸入的層面。優(yōu)選的,過程運(yùn)行組件基于預(yù)先給定的事件在用戶輸入時(shí)在一個(gè)視圖中指示控制組件利用所確定的順序在兩個(gè)表現(xiàn)形式以及必要時(shí)兩個(gè)業(yè)務(wù)形式之間進(jìn)行切換。在此分別對(duì)有效的用戶輸入進(jìn)行分析,在對(duì)用戶輸入的特定要求進(jìn)行編輯之后,過程運(yùn)行組件可以整理特定條件,以便為用戶輸入更換表現(xiàn)形式??梢岳斫?,還可以切換其它“觸發(fā)器”,即切換到從顯示表現(xiàn)形式以來的某個(gè)特定時(shí)刻的流程或清楚闡明該表現(xiàn)形式的明白的用戶動(dòng)作,使得該流程已完全處理了當(dāng)前表現(xiàn)形式(例如按下返回鍵)。
優(yōu)選的,通過針對(duì)過程運(yùn)行組件的配置文件來確定表現(xiàn)形式的順序,該配置文件被讀出并確定哪個(gè)表現(xiàn)形式應(yīng)當(dāng)被切換為下一個(gè)。
兩個(gè)表現(xiàn)形式之間的切換通過以下方式進(jìn)行當(dāng)用戶完成子數(shù)據(jù)流的最后一個(gè)任務(wù)之后,跳轉(zhuǎn)到主數(shù)據(jù)流的第一個(gè)步驟。在瀏覽圖表中配置主數(shù)據(jù)流的步驟。也就是說通過瀏覽圖表確定可視組件被切換為哪一種順序。
可視組件又可以分為多個(gè)子組件,以實(shí)現(xiàn)結(jié)構(gòu)化的編程。這樣就可以將可視組件分為通用的“前端”組件和實(shí)際的表現(xiàn)形式,其中前一個(gè)的任務(wù)是提供作為基礎(chǔ)的功能來顯示數(shù)據(jù),后一個(gè)要定義表現(xiàn)這些數(shù)據(jù)的具體結(jié)構(gòu)。
對(duì)應(yīng)的,根據(jù)本發(fā)明的系統(tǒng)還包括可視管理器來為至少一個(gè)可視組件產(chǎn)生通用的前端程序組件。此外還可以包括模型管理器來為至少一個(gè)模型組件產(chǎn)生通用后端程序組件。通過相應(yīng)的管理器產(chǎn)生前段程序組件和后端程序組件同樣也可以由過程運(yùn)行組件控制或至少由它來啟動(dòng),當(dāng)采用自己的管理器來產(chǎn)生通用后端和前端組件時(shí),可以通過控制組件來產(chǎn)生實(shí)際的表現(xiàn)形式和業(yè)務(wù)形式。相應(yīng)的,控制組件可以包含或處理用于產(chǎn)生可視組件的表現(xiàn)形式的程序代碼。
控制組件還可以包含或處理用于產(chǎn)生可視組件的模型的程序代碼。
該程序代碼例如可以是配置文件,尤其是基于XML的配置文件。
此外在所述系統(tǒng)設(shè)置中還具有狀態(tài)管理器,用于在系統(tǒng)中斷(或掛起)時(shí)存儲(chǔ)該系統(tǒng)其它部分的狀態(tài)并在該系統(tǒng)恢復(fù)運(yùn)行時(shí)重新建立這些狀態(tài)。通過這種方式可以中斷本發(fā)明的系統(tǒng)設(shè)置或者說轉(zhuǎn)換到停止?fàn)顟B(tài)并重新恢復(fù)到同一狀態(tài)下,而不必完全重新啟動(dòng)該處理過程。
本發(fā)明的系統(tǒng)設(shè)置既可以在計(jì)算機(jī)上本地實(shí)施,也可以在網(wǎng)絡(luò)中實(shí)施,其中至少可以有通過網(wǎng)絡(luò)相互連接的模型組件和可視組件運(yùn)行在不同的計(jì)算機(jī)上。相應(yīng)的,優(yōu)選系統(tǒng)設(shè)置包括至少一個(gè)用于在操作系統(tǒng)層面、即在各個(gè)計(jì)算機(jī)上本地使用的可視組件,和至少一個(gè)用于通過網(wǎng)絡(luò)協(xié)議在網(wǎng)絡(luò)中使用的可視組件。由于在本地顯示器上例如通過X-Windows、PDF、Postscript或GDI提供的與通過網(wǎng)絡(luò)例如借助HTML、XML或?qū)iT協(xié)議提供的顯示相比完全不同的處理方式,還需要專門的可視組件(要注意,X-Windows和Display-Postscript變形既可以本地使用也可以通過網(wǎng)絡(luò)使用,因此在此不是一定需要不同的可視組件)。原則上還提供了不同的可能性,即不是為本發(fā)明系統(tǒng)設(shè)置的單個(gè)組件而是為這些組件之間的交互及其運(yùn)行來實(shí)施必要的程序代碼。
本發(fā)明的系統(tǒng)設(shè)置還可以包括用于在切換表現(xiàn)形式時(shí)臨時(shí)存儲(chǔ)數(shù)據(jù)的裝置,以便能將以一種表現(xiàn)形式獲得的數(shù)據(jù)繼續(xù)用于另一種表現(xiàn)形式。數(shù)據(jù)的臨時(shí)存儲(chǔ)可以通過過程運(yùn)行組件、并且在控制組件的例如通過“端口”進(jìn)入的存儲(chǔ)區(qū)中進(jìn)行。
在優(yōu)選實(shí)施方式中,用于產(chǎn)生和配置所述系統(tǒng)設(shè)置的組件的程序代碼是以腳本語言編寫的代碼。通過這種方式即使在建立所述系統(tǒng)設(shè)置之后也可以隨時(shí)通過簡(jiǎn)單的修改腳本代碼來更改系統(tǒng)設(shè)置,因此系統(tǒng)設(shè)置的維護(hù)也很簡(jiǎn)單。
上述本發(fā)明方法的實(shí)施方式也可以構(gòu)成為計(jì)算機(jī)程序產(chǎn)品,其中該計(jì)算機(jī)用于執(zhí)行上述本發(fā)明的方法,并通過處理器執(zhí)行其程序代碼。
可替換的解決技術(shù)問題的方案在于一種存儲(chǔ)介質(zhì),其用于存儲(chǔ)上述用計(jì)算機(jī)實(shí)施的方法,并可由計(jì)算機(jī)讀取。
此外還可以按照一種可銷售整體來實(shí)施上述方法的各個(gè)組件,并按照另一種可銷售整體來實(shí)施其余組件。因此本發(fā)明技術(shù)問題的其它解決方案在于一種產(chǎn)品,包括分布式系統(tǒng)的至少一個(gè)可視組件、模型組件、控制組件和過程運(yùn)行組件,該系統(tǒng)包括根據(jù)至少一個(gè)上述方法方面來執(zhí)行由該產(chǎn)品完成的方法的步驟的裝置,其中至少另一個(gè)產(chǎn)品用于執(zhí)行該方法的其余步驟,并通過該至少兩個(gè)產(chǎn)品的協(xié)作來執(zhí)行該方法的所有步驟。
在下面的詳細(xì)附圖描述中借助附圖非限制性地給出了實(shí)施例及其特征和其它優(yōu)點(diǎn)。其中圖1示出本發(fā)明的系統(tǒng)設(shè)置的體系結(jié)構(gòu);圖2示出形成本發(fā)明系統(tǒng)設(shè)置的各個(gè)組件;圖3示出各個(gè)表現(xiàn)形式的分層流程計(jì)劃的例子。
具體實(shí)施例方式
當(dāng)向已知的軟件模式MVC(模型·可視·控制器·)添加過程運(yùn)行組件時(shí),可以在用戶與軟件系統(tǒng)的交互中提供該軟件系統(tǒng)應(yīng)當(dāng)向應(yīng)用開發(fā)者或用戶作為序列提供的可執(zhí)行步驟的可配置模式。通過以特定順序?qū)iT化這些步驟,可視組件恰好以該順序通過控制組件要求模型組件的數(shù)據(jù),從而軟件利用這些步驟構(gòu)成的引導(dǎo)來支持開發(fā)者做出決定。
圖1示出本發(fā)明的用于引導(dǎo)用戶的系統(tǒng)設(shè)置的體系結(jié)構(gòu)的概貌。可視組件通過控制組件與模型組件通信。在此本發(fā)明的過程是負(fù)責(zé)該交互的設(shè)置或者說序列,并確定該交互應(yīng)當(dāng)以何種順序進(jìn)行。該過程由所謂的瀏覽圖、即配置文件執(zhí)行。瀏覽圖具有關(guān)于在處理步驟進(jìn)行之后下一步進(jìn)行什么步驟的信息。在分層設(shè)置中,除了瀏覽圖之外還有子瀏覽圖。例如用于特定的“任務(wù)”序列。下面詳細(xì)解釋本發(fā)明系統(tǒng)的組件結(jié)構(gòu)。在開發(fā)體系結(jié)構(gòu)時(shí)就非常重視應(yīng)用組成部分的對(duì)稱性??梢暯M件由所謂的通用前端(GenFE)表示,模型組件由通用后端(GenBE)表示。兩種組件都要容納容器的通用實(shí)施。GenFE是應(yīng)用的可視前端部分的通用容器,GenBE是應(yīng)用的后端部分的通用容器。這些前段和后端組件之間的通信通過控制組件控制。
從圖1可以看出,GenFE和GenBE分別包含所謂的形式,也就是用于表現(xiàn)數(shù)據(jù)和輸入該數(shù)據(jù)或進(jìn)行格式化處理的顯示。在前端中具有由GenFE容納的表現(xiàn)形式,在后端中具有由GenBE容納的業(yè)務(wù)形式。
兩種形式都基于將軟件層的組件(前端或后端組件)及其交互可能在配置文件中進(jìn)行說明并可以由所謂的形式產(chǎn)生的思想。真正的交互是本地化的,并在一個(gè)或多個(gè)文件中優(yōu)選以腳本語言進(jìn)行編程,從而該軟件層的用戶可以靈活地適應(yīng)由已配置的組件組成的形式內(nèi)容以及組件交互,而不必重新建立整個(gè)軟件層。圖2示出在優(yōu)選實(shí)施方式中兩種形式的腳本代碼駐留在控制組件中,這稱為腳本代碼支持(Script Code Behind)。這在顯示程序組件必須以不同技術(shù)、例如本地或通過網(wǎng)絡(luò)(例如用WinForm或WebForm)來顯示數(shù)據(jù)時(shí)有利。如果表現(xiàn)形式的腳本在控制組件中運(yùn)行,則當(dāng)前端組件的顯示類型改變時(shí)不一定改變組件交互。該“形式”已在較早時(shí)刻定義過。
當(dāng)今的軟件體系結(jié)構(gòu)的特征在于,前端和后端中的程序模型原則上是不同的。但前端開發(fā)和后端開發(fā)的不對(duì)稱可以通過在這里介紹的本發(fā)明的體系結(jié)構(gòu)中采用形式概念來顯著減小。
圖2以示意性的結(jié)構(gòu)示出本發(fā)明系統(tǒng)的細(xì)化模型。本發(fā)明體系結(jié)構(gòu)的4個(gè)核心元件在圖2中清楚示出。4個(gè)激活的主部件是控制器1、可視管理器2、模型管理器3以及本發(fā)明的過程,也就是過程運(yùn)行程序組件4。可視管理器2產(chǎn)生通用前端組件5、6,它們又分別借助腳本代碼產(chǎn)生描述和處理應(yīng)用的前端邏輯的表現(xiàn)形式7、8。在本發(fā)明的該實(shí)施方式中值得注意的特征是可視管理器2可配置,且在圖4示出的例子中針對(duì)不同的技術(shù)Webform和Winform存在兩個(gè)可視管理器2。通過從外面進(jìn)行配置來選擇、產(chǎn)生和應(yīng)用特定的可視管理器2。WinForm前端組件5、7可以在Windows下用于桌面,WebForm前端6、8用于本發(fā)明系統(tǒng)的網(wǎng)絡(luò)應(yīng)用。在網(wǎng)絡(luò)應(yīng)用中,容器或者說整體容器在Web服務(wù)器中運(yùn)行。通常在Windows下采用Microsoft Internet Information Server(IIS)。
在本發(fā)明系統(tǒng)的后端中具有能產(chǎn)生通用后端組件9、10的模型管理器3。通用后端組件9、10又借助腳本代碼17產(chǎn)生描述并處理應(yīng)用的應(yīng)用邏輯的業(yè)務(wù)形式11、12。
在圖2中可以在右側(cè)看見狀態(tài)管理器13,其中可視管理器2和模型管理器3取出它們的狀態(tài)。對(duì)狀態(tài)管理器13的訪問一直傳播到形式7、8、11、12中,由此位于相應(yīng)形式的組件可以存儲(chǔ)其狀態(tài)并又讀出。利用該特征,本發(fā)明的整個(gè)系統(tǒng)可以在系統(tǒng)暫停之前通過狀態(tài)管理器13存儲(chǔ)系統(tǒng)的狀態(tài),并在系統(tǒng)重新恢復(fù)之后馬上讀取該狀態(tài)。因此可以中斷處理并重新開始,而無需完全重新啟動(dòng)處理過程。
圖2的左邊是控制前端和后端之間通信的控制組件1。前端和后端不必在操作系統(tǒng)的同一個(gè)過程中運(yùn)行。同樣可以啟動(dòng)兩個(gè)分別只具有前端或后端的容器,駐留在容器1中的通信層負(fù)責(zé)使兩個(gè)通信伙伴也通過網(wǎng)絡(luò)找到對(duì)方。此外,控制器1還容納了事件系統(tǒng)14,其負(fù)責(zé)使應(yīng)用的前端和后端能產(chǎn)生事件。
在圖2的中間,用數(shù)據(jù)流機(jī)可以看見本發(fā)明的系統(tǒng)體系結(jié)構(gòu)的第4個(gè)基本組件,即由瀏覽圖代表的過程運(yùn)行程序組件4(過程)。瀏覽圖包含關(guān)于用戶應(yīng)當(dāng)以何種順序執(zhí)行特定的工作步驟的信息,以開發(fā)特定的應(yīng)用或執(zhí)行特定的工作。下面的程序清單示出瀏覽圖的配置。其中有3個(gè)視圖相互連接View_2D,View_3D和View_Filming。因此如果使用者已經(jīng)結(jié)束了與View_2D的交互,則連接到View_3D。此外,如果使用者結(jié)束了與View_3D的交互,則連接到View_Filming等。<navigationGraph name="Datenfluss1"startView="View_2D" state="State"statePersist="MemoryStatePersistence"iViewManager=“UserControlViewManager”>
<node view=‘View2D’screen=‘’subWorkFlow=‘’>
<navigateTo navigateValue=”previous”view=’View_Filming’/>
<navigateTo navigateValue=”next”view=’View_3D’/>
</node>
<node view=’View_3D’screen=”screenl’popup=’false’subWorkFlow=‘’>
<navigateTo navigateValue=”previous”view=’View_2D’/>
<navigateTo navigateValue=”next”view=’View_Filming’/>
</node>
<node view=‘View_Filming’screen=’screen2’subworkFlow=‘SubWorkFlow.xml’>
<navigateTo navigateValue=”previous”view=’View_3D’/>
<navigateTo navigateValue=”next”view=‘View_2D’/>
</node>
</navigationGraph>
所屬的模型11、12在此由可視組件或者說表現(xiàn)形式7、8驅(qū)動(dòng),也就是在從一個(gè)可視組件切換到另一個(gè)可視組件時(shí)所屬的模型11、12也一起自動(dòng)被切換。數(shù)據(jù)流機(jī)可以在切換可視組件時(shí)還在該可視組件之間傳輸數(shù)據(jù)。為此圖2中在控制器1上具有端口15??梢暯M件7、8可以使數(shù)據(jù)流機(jī)將其完成的數(shù)據(jù)存儲(chǔ)到一個(gè)端口中,下一個(gè)可視組件可以使數(shù)據(jù)流機(jī)從該端口中取出數(shù)據(jù)以進(jìn)行處理。
分層運(yùn)行控制和所屬后臺(tái)數(shù)據(jù)流的概念同樣屬于本發(fā)明系統(tǒng)設(shè)置的過程方面。外部的數(shù)據(jù)流通過先前示出的瀏覽圖描述,并確定各個(gè)所謂的活動(dòng)(可視組件+模型組件)怎樣相互連接。“內(nèi)部”的數(shù)據(jù)流或者說下一個(gè)低級(jí)的層次通過在下列程序清單中引用的數(shù)據(jù)流“Subdatenfluss1”描述,并確定活動(dòng)中的數(shù)據(jù)流如何表現(xiàn)。
< xml version=”1.0”encoding=”UTF-8” >
-<document xmlns:xi=”http://www.w3.org/2003/XInclude”>
-<SUBWORKFLOW>
-<TASKS>
-<TASK name=”task1”>
-<!--<xi:include href=“.\Task\task1.xml”xpointer=”xpointer(//Task)”/>
-->
<xi:include href=“..\.\Task\task1.xml”xpointer=“xpointer(//Model)”/>
<xi:include href=“..\.\Task\task1.xml”xpointer=“xpointer(//View)”/>
</TASK>
-<TASK name=“task2”>
-<!--<xi:include href=“\XML-Files\Task\task2.xml”xpointer=“xpointer(//Task)”/>
-->
<xi:include href=“..\.\Task\task2.xml”xpointer=“xpointer(//Model)”/>
<xi:include href=“..\.\Task\task2.xml”xpointer=“xpointer(//View)”/>
</TASK>
-<TASK name=“task3”>
<xi:include href=“..\.\Task\task3.xml”xpointer=“xpointer(//Task)”/>
</TASK>
</TASKS>
-<NAVIGATIONGRAPH name=“Subdatenfluss1”startTask=“task1”>
<xi:include href=“..\.\TaskNavigationGraph\TaskNavigationGraph.xml”xpointer=“xpointer(//NODE)”/>
</NAVIGATIONGRAPH>
</SUBWORKFLOW>
</document>
圖3以不涉及上述具體例子的示意圖的形式示出系統(tǒng)設(shè)置的整個(gè)數(shù)據(jù)流。在此數(shù)據(jù)流1(DF1)同等地與子數(shù)據(jù)流1、2、3(SDF1,SDF2,SDF3)連接,這些子數(shù)據(jù)流的輸出數(shù)據(jù)又引向數(shù)據(jù)流1并在經(jīng)過繼續(xù)處理之后到達(dá)數(shù)據(jù)流2(DF2),子數(shù)據(jù)流4、5、6(SDF4,SDF5,SDF6)中的數(shù)據(jù)同樣也到達(dá)數(shù)據(jù)流2。
上述程序清單展示了每個(gè)任務(wù)都由一個(gè)模型組件和一個(gè)可視組件構(gòu)成。相應(yīng)的配置如所述地對(duì)業(yè)務(wù)形式和表現(xiàn)形式來說是完全標(biāo)準(zhǔn)的配置。用于連接各任務(wù)的瀏覽圖顯示在下面給出的程序清單中< xml version=“1.0”encoding=“UTF-B” >
-<NAVIGATIONGRAPH>
-<NODE task=”task1”>
<navigateTo navigateValue=”PREVIOUS”task=”task3”/>
<navigateTo navigateValue=“NEXT”task=”task2”/>
</NODE>
-<NODE task=”task2”>
<navigateTo navigateValue=”PREVIOUS”task=”task1”/>
<navigateTo navigateValue=“NEXT”task=”task3”/>
</NODE>
-<NODE task=”task3”>
<navigateTo navigateValue=”PREVIOUS”task=”task2”/>
<navigateTo navigateValue=“NEXT”task=”task1”/>
</NODE>
</NAVIGATIONGRAPH>
本發(fā)明系統(tǒng)設(shè)置的不同現(xiàn)有組件必須被啟動(dòng)并相互連接。這也是通過在下面的程序清單中顯示出來的腳本邏輯地進(jìn)行的。
< xml version=”1.0”encoding=”UTF-8” >
-<objectTypes>
<iViewManager name=“UserControlViewManager”type=”Siemens.ApplicationBlocks.UIProcess.UserControlViewManager,Siemens.ApplicationBlocks.UIProcess,Version=1.0.1.0,Culture=neutral,PublicKeyToken=null”/>
<iModelManager name=“MyModelManager”type=“BusinessProcess.MyModelManager,BusinessProcess,Version=1.0.1.0,Culture=neutral,PublicKeyToken=null”/>
<state name=”State”type=“Siemens.ApplicationBlocks.UIProcess.State,Siemens.
ApplicationBlocks.UIProcess,Version=1.0.1.0,Culture=neutral,PublicKeyToken=null”/>
<controller name=“ActivityWorkflowController”type=“UIPUtil.ActivityWorkflowController,UIPUtil,Version=1.
0.1.0,Culture=neutral,PublicKeyToken=null”/>
<statePersistenceProvider name=“MemoryStatePersistence”type=”Siemens.ApplicationBlocks.UIProcess.MemoryStatePersistence,Siemens.ApplicationBlocks.UIProcess,Version=1.0.1.0,Culture=neutral,PublicKevToken=null”/>
</objectTypes>
上面的程序清單展示了被引用的對(duì)象類型的配置,在后面進(jìn)行的配置中對(duì)該對(duì)象類型進(jìn)行了引用。在此定義了可視管理器2、模型管理器3、狀態(tài)管理器13和控制器1。
下面的程序清單展示了反映本發(fā)明的整個(gè)系統(tǒng)設(shè)置的所謂的活動(dòng)的配置。在此定義了一個(gè)模型組件、一個(gè)可視組件和一個(gè)控制器??刂破魍ㄟ^ActivityWork Flow Controller被引用。實(shí)際的定義已經(jīng)在下面和上面的程序清單中配置對(duì)象類型時(shí)進(jìn)行了。
< xml version=”1.0”encoding=”UTF-8” >
-<Activity>
<Model name=”MyModel_l”type=“BusinessProcess.MyModel,BusinessProcess,Version=1.0.1.0,Culture=neutral,PublicKeyToken=null”iModelManager=“MyModelManager”config-File=“\AT\dotNet\Core\BusinessForm\test.u\config\BizFormConfig.xml”CMDPATTERN=“cmdPtnl”EVENTPATTERN=“eventPtnl”/>
<View name=“Activityl”type=“syngo.Common.Activity.Activity,Activity,Version=1.0.1.0,Culture=neutral,PublicKeyToken=”null”configFile=“.
/PresentationContent/UI_Activitylxml”CMDPATTERN=“cmdPtnl”EVENTPATTERN=“eventPtnl”/>
<Controller name=“ActivityWorkflowController”/>
</Activity>
下面給出的程序清單說明了應(yīng)用的具有數(shù)據(jù)和子數(shù)據(jù)流的完整配置。
< xml version=”1.0”encoding=”UTF-8” >
-<document xmlns:xi=”http://www.w3.org/2003/XInclude”>
-<workflow>
-<!---<objectTypes>
-->
-<objectTypes xml:base=”O(jiān)bjectTypes/ObjectTypes.xml”>
<iViewManager name=“UserControlViewManager”type=”Siemens.ApplicationBlocks.UIProcess.UserControlViewManager,Siemens.ApplicationBlocks.UIProcess,Version=1.0.1.0,Culture=neutral,PublicKeyToken=null”/>
<iModelManager name=“MyModelManager”type=”BusinessProcess.MyModelManager,BusinessProcess,Version=1.0.1.0,Culture=neutral,PublicKeyToken=null”/>
<state name=”State”type=”Siemens.ApplicationBlocks.UIProcess.State,Siemens.ApplicationBlocks.UIProcess,Version=1.0.1.0,Culture=neutral,PublicKeyToken=null”/>
<controller name=“ActivityWorkflowController”type=”UIPUtil.ActivityWorkflowController,UIPUtil,Version=1.0.1.0,Culture=neutral,PublicKeyToken=null”/>
<statePersistenceProvider name=”MemoryStatePersistence”type=”Siemens.ApplicationBlocks.UIProcess.MemoryStatePersistence,Siemens.ApplicationBlocks.UIProcess,Version=1.0.1.0,Culture=neutral,PublicKeyToken=null”/>
</objectTypes>
-<!---</objectTypes>
-->
-<Activities>
-<Activity name=”Activity1”>
<Model name=”MyModel_l”type=”BusinessProcess.MyModel,BusinessProcess,Version=1.0.1.0,Culture=neutral,PublicKeyToken=null”iModelManager=“MyModelManager”config-File=“\AT\dotNet\Core\BusinessForm\test.u\config\BiZFormConfig.xml”CMDPATTERN=“cmdPtnl”EVENTPATTERN=“eventPtnl”xml:base=“Activity/Activity1.xml”/>
<View name=”Activity1”type=”syngo.Common.Activity.Activity,Activity,
Version=1.0.1.0,Culture=neutral,PublicKeyToken=null”config-File=“.
/PresentationContent/UI_Activitylxml”CMDPATTERN=“cmdPtnl”EVENTPATTERN=“eventPtnl”xml:base=“Activity/Activity1.xml”/>
<Controller name=”ActivityworkflowController”xml:base=”Activity/Activity1.xml”/>
-<SUBWORKFLOW xml:base=“Subworkflow/Subworkflow1.xml”>
-<TASKS>
-<TASK name=”task1”>
-<!---<xi:include href=”.\Task\task1.xml”xpointer=”xpointer(//Task)“/>
-->
<Model name=”task1”ID=”group1”PATTERNCMD=”pat1”PATTERNEVT=“evt1”FILE=”.\BusinessContent\step1_Model.xml”xml:base=”Task/task1.xml”/>
<View name=”task1”ID=“group1”PATTERNCMD=“pat1”PATTERNEVT=“evt1”FILE=”.\PresentationContent\subworkflow step1.xml”xml:base=”Task/task1.xml”/>
</TASK>
-<TASK name=”task2”>
-<!---<xi:include href=”\XML-Files\Task\task2.xml”xpointer=“xpointer(//Task)”/>
-->
<Model name=“task2”ID=“group2”PATTERNCMD=“pat2”PATTERNEVT=“evt2”FILE=“\BusinessContent\step2_Model.xml”xml:base=“Task/task2.xml”/>
<View name=”task2”ID=“group2”PATTERNCMD=“pat2”PATTERNEVT=“evt2”FILE=“.\PresentationContent\subworkflow step2.xml”xml:base=”Task/task2.xml”/>
</TASK>
-<TASK name=“task3”>
-<Task xml:base=“Task/task3.xml”>
<Model name=“task3”ID=“group3”PATTERNCMD=“pat3”PATTERNEVT=”evt3”FILE=“\BusinessContent\step3Model.xml”/>
<View name=”task3”ID=“group3”PATTERNCMD=”pat3”PATTERNEVT=”evt3”FILE=“.\PresentationContent\subworkflow step3.xml”/>
</Task>
</TASK>
</TASKS>
<NAVIGATIONGRAPH name=“navgraphl”startTask=“task1”>
-<!--<xi:include href=“.\TaskNavigationGraph\TaskNavigationGraph.xml”xpointer=“xpointer(//NAVIGATIONGRAPH)”/>
--->
-<NODE task=”task1”xml:base=“TaskNavigationGraph/TaskNavigationGraph.xml”>
<navigateTo navigateValue=”PREVIOUS”task=“task3”/>
<navigateTo navigateValuer=“NEXT”task=”task2”/>
</NODE>
-<NODE task=”task2”xml:base=”TaskNavigationGraph/TaskNavigationGraph.xml”>
<navigateTo navigateValue=”PREVIOUS”task=”task1”/>
<navigateTo navigateValue=”NEXT”task=”task3”/>
</NODE>
-<NODE task=”task3”xml:base=”TaskNavigationGraph/TaskNavigationGraph.xml”>
<navigateTo navigateValue=“PREVIOUS”task=“task2”/>
<navigateTo navigateValue=“NEXT”task=“task1”/>
</NODE>
</NAVIGATIONGRAPH>
</SUBWORKFLOW>
</Activity>
-<Activity name=“Activity2”>
-<Activity xml:base=“Activity/Activity2.xml”>
<Model name=”MyModel_2”type=”BusinessProcess.MyModel,Busi-nessProcess,Version=1.0.1.0,Culture=neutral,PublicKeyToken=null”iModelManager=“MyModelManager”config-File=“\AT\dotNet\Core\BusinessForm\test.u\config\BizFormConfig.xml”CMDPATTERN=“cmdPtn2”EVENTPATTERN=“eventPtn2”/>
<View name=”Activity2”type=”syngo.Common.Activity.Activity,Activity,Version=1.0.1.0,Culture=neutral,PublicKeyToken=null”config-File=“.
\PresentationContent\UI_Activcity2.xml”CMDPATTERN=“cmdPtn2”EVENTPATTERN=“eventPtn2”/>
<Controller name=“ActivityWorkflowController”/>
</Activity>
-<SUBWORKFLOW xml:base=“Subworkflow/Subworkflowl.xml”>
-<TASKS>
-<TASK name=“task1”>
-<!--<xi:include href=“.\Task\task1.xml”xpointer=“xpointer(//Task)”/>
-->
<Model name=”task1”ID=”group1”PATTERNCMD=”pat1”PATTERNEVT=“evt1”FILE=“.\BusinessContent\step1_Model.xml”xml:base=“Task/task1.
xml”/>
<View name=“task1”ID=“group1”PATTERNCMD=“pat1”PATTERNEVT=”evt1”FILE=“.\PresentationContent\subworkflow_step1.xml”xml:base=“Task/task1.xml”/>
</TASK>
-<TASK name=”task2”>
-<!--<xi:include href=“\XML-Files\Task\task2.xml”xpointer=“xpointer (//Task)”/>
-->
<Model name=“task2”ID=“group2”PATTERNCMD=“pat2”PATTERNEVT=”evt2”FILE=“\BusinessContent\step2_Model.xml”xml:base=”Task/task2.xml”/>
<View name=“task2”ID=“group2”PATTERNCIVD=“pat2”PATTERNEVT=“evt2”FILE=“.\PresentationContent\subworkflow_step2.xml”xml:base=“Task/task2.xml”/>
</TASK>
-<TASK name=”task3”>
-<Task xml:base=”Task/task3.xml”>
<Model name=”task3”ID=“group3”PATTERNCMD=“pat3”PATTERNEVT“evt3”FILE=”.\BusinessContent\step3_Model.xml”/>
<View name=”task3”ID=“group3”PATTERNCMD=“pat3”PATTERNEVT=“evt3”FILE=”.\PresentationContent\subworkflow_step3.xml”/>
</Task>
</TASK>
</TASKs>
-<NAVIGATIONGRAPH name=“navgraphl”startTask=“task1”>
-<!--<xi:include href=“.\TaskNavigationGraph\TaskNavigationGraph.xml”xpointer=“xpointer(//NAVIGATIONGRAPH)”/>
-->
-<NODE task=”task1”xml:base=”TaskNavigationGraph/TaskNavigationGraph.xml”>
<navigateTo navigateValuer”PREVIOUS”task=”task3”/>
<navigateTo navigateValue=”NEXT”task=“task2”/>
</NODE>
-<NODE task=“task2”xml:base=“TaskNavigationGraph/TaskNavigationGraph.xml”>
<navigateTo navigateValue=”PREVIOUS”task=”task1”/>
<navigateTo navigateValue=”NEXT”task=”task3”/>
</NODE>
-<NODE task=”task3”xml:base=”Task.NavigationGraph/TaskNavigationGraph.xml”>
<navigateTo navigateValue=“PREVIOUS”task=”task2”/>
<navigateTo navigateValue=“NEXT”task=”task1”/>
</NODE>
</NAVIGATIONGRAPH>
</SUBWORKFLOW>
</Activity>
-<Activity name=”Activity3”>
-<Activity xml:base=”Activity/Activity3.xml”>
<Model name=”MyModel3”type=”BusinessProcess.MyModel,Busi-nessProcess,Version=1.0.1.0,Culture=neutral,PublicKeyToken=null”iModelManager=“MyModelManager”config-File=“\AT\dotNet\Core\BusinessForm\test.u\config\BizFormConfig.xml”CMDPATTERN=“cmdPtn3”EVENTPATTERN=”event Ptn3”/>
<View name=”Activity3”type=”syngo.Common.Activity.Activity,Activity,Version=1.0.1.0,Culture=neutral,PublicKeyToken=null”config-File=“./PresentationContent/UI_Activity3.xml”CMDPATTERN=”cmdPtn3”EVENTPATTERN=”eventPtn3”/>
<Controller name=”ActivityWorkflowController”/>
</Activity>
-<!--can be optional when activity has no subworkflow<includeSubworkflow href=“./Subworkflow/Subworkflow3.xml”xpointer=“xpointer(//Subworkf low)”/>
-->
</Activity>
</Activities>
-<navigationGraph name=“Workflow_l”startView=”Activityl”state=“State”statePersist=“MemoryStatePersistence”iViewManager=“UserControlViewManager”>
-<!--<xi:includehref=“.\ActivityNavigationGraph\ActivityNavigationGraph.xml”xpointer=“xpointer(//navigationGraph)”/>
-->
-<node view=”Activity1”xml:base=“ActivityNavjgationGraph/ActivityNavigationGraph.xml”>
<navigateTo navigateValue=”previous”view=“Activity3”/>
<navigateTo navigateValue=“next”view=”Activity2”/>
</node>
-<node view=“Activity2”xml:base=“ActivityNavigationGraph/ActivityNavigationGraph.xml”>
<navigateTo navigateValue=”previous”view=”Activityl”/>
<navigateTo navigateValue=”next”view=“Activity3”/>
</node>
-<node view=”Activity3”xml:base=“ActivityNavigationGraph/ActivityNavigationGraph.xml”>
<navigateTo navigateValue=”previous”view=”Activity2”/>
<navigateTo navigateValue=“next”view=“Activity1”/>
</node>
-->
</navigationGraph>
</workflow>
</document>
通過采用有利且基于本發(fā)明系統(tǒng)設(shè)置的容器,可以描述其業(yè)務(wù)邏輯和表現(xiàn)邏輯是根據(jù)相同模式建立起來的應(yīng)用。
此外還可以將一個(gè)應(yīng)用分為獨(dú)立的子應(yīng)用,并且使可配置的數(shù)據(jù)流機(jī)來運(yùn)行該子應(yīng)用,以便靈活地支持用戶作出決定。
優(yōu)選的,本發(fā)明的轉(zhuǎn)換不需要對(duì)現(xiàn)有技術(shù)作出原理上的修改,而是可以原則上事后作為組件、尤其是作為經(jīng)過修改或附加的計(jì)算機(jī)程序產(chǎn)品添加進(jìn)來。
最后要指出,本發(fā)明的描述和實(shí)施例原則上不能限制的理解成對(duì)本發(fā)明的物理實(shí)現(xiàn)。對(duì)于有關(guān)的技術(shù)人員來說,很明顯本發(fā)明可以部分或完全以軟件實(shí)現(xiàn)并分布在多個(gè)物理產(chǎn)品、在此尤其是計(jì)算機(jī)程序產(chǎn)品上。
權(quán)利要求
1.一種用于利用用戶引導(dǎo)進(jìn)行應(yīng)用開發(fā)的系統(tǒng)設(shè)置,包括-至少一個(gè)具有多種表現(xiàn)形式(7,8)的可視組件(5-8),分別用于在特定時(shí)刻察看數(shù)據(jù)和由用戶進(jìn)行輸入,-至少一個(gè)用于存儲(chǔ)、處理和/或調(diào)用數(shù)據(jù)的模型組件(9-12),-用于將用戶輸入和/或?qū)?shù)據(jù)的處理傳遞到模型組件(9-12)并將被查詢/被處理的數(shù)據(jù)傳遞到表現(xiàn)形式(7,8)的控制組件(1),其中該控制組件(1)還用于在不同的表現(xiàn)形式(7,8)之間進(jìn)行切換,以及其中還具有用于提供不同表現(xiàn)形式之間的切換的至少一種可配置順序的過程運(yùn)行組件(4),其特征在于,-具有狀態(tài)管理器(13),用于在系統(tǒng)設(shè)置掛起時(shí)存儲(chǔ)該系統(tǒng)設(shè)置的其它組件的狀態(tài)并在該系統(tǒng)設(shè)置恢復(fù)時(shí)重新建立這些狀態(tài)。
2.根據(jù)權(quán)利要求1所述的系統(tǒng)設(shè)置,其特征在于,所述模型組件(9-12)具有多個(gè)業(yè)務(wù)形式(11,12),這些業(yè)務(wù)形式分別與至少一個(gè)表現(xiàn)形式(7,8)邏輯關(guān)聯(lián),其中不同表現(xiàn)形式(7,8)之間的切換與不同業(yè)務(wù)形式(11,12)之間的切換相耦合。
3.根據(jù)權(quán)利要求1或2所述的系統(tǒng)設(shè)置,其特征在于,所述表現(xiàn)形式(7,8)以及必要時(shí)業(yè)務(wù)形式(11,12)都分層地設(shè)置,從而切換順序在一個(gè)層次內(nèi)部進(jìn)行時(shí)該切換順序已在下一個(gè)更低層的層次中運(yùn)行過。
4.根據(jù)權(quán)利要求1至3中任一項(xiàng)所述的系統(tǒng)設(shè)置,其特征在于,所述過程運(yùn)行組件(4)基于用戶在表現(xiàn)形式(7,8)中輸入的預(yù)定事件指示控制組件(1),利用所設(shè)置的順序在兩個(gè)表現(xiàn)形式(7,8)之間切換以及必要時(shí)在兩個(gè)業(yè)務(wù)形式(11,12)之間切換。
5.根據(jù)權(quán)利要求1至4中任一項(xiàng)所述的系統(tǒng)設(shè)置,其特征在于,所述表現(xiàn)形式(7,8)的順序通過針對(duì)過程運(yùn)行組件(4)的至少一個(gè)配置文件來確定。
6.根據(jù)權(quán)利要求1至5中任一項(xiàng)所述的系統(tǒng)設(shè)置,其特征在于,所述切換通過至少一個(gè)可預(yù)先配置的事件觸發(fā)。
7.根據(jù)權(quán)利要求1至6中任一項(xiàng)所述的系統(tǒng)設(shè)置,其特征在于,還包括可視管理器(2)來為至少一個(gè)可視組件(5-8)產(chǎn)生通用的前端程序組件(5,6)。
8.根據(jù)權(quán)利要求1至7中任一項(xiàng)所述的系統(tǒng)設(shè)置,其特征在于,還包括模型管理器(3)來為至少一個(gè)模型組件(9-12)產(chǎn)生通用的后端程序組件(9,10)。
9.根據(jù)權(quán)利要求1至8中任一項(xiàng)所述的系統(tǒng)設(shè)置,其特征在于,所述控制組件(1)包括與所述模型組件(9-12)和可視組件(5-8)相互傳遞事件的裝置。
10.根據(jù)權(quán)利要求1至9中任一項(xiàng)所述的系統(tǒng)設(shè)置,其特征在于,所述控制組件(1)包含或處理用于產(chǎn)生至少一個(gè)可視組件(5-8)的表現(xiàn)形式(7,8)的程序代碼(16)。
11.根據(jù)權(quán)利要求2至10中任一項(xiàng)所述的系統(tǒng)設(shè)置,其特征在于,所述控制組件(1)包含或處理用于產(chǎn)生模型組件(9-12)的業(yè)務(wù)形式(11,12)的程序代碼(17)。
12.根據(jù)權(quán)利要求10或11所述的系統(tǒng)設(shè)置,其特征在于,所述程序代碼基于腳本。
13.根據(jù)權(quán)利要求1至12中任一項(xiàng)所述的系統(tǒng)設(shè)置,其特征在于,所述系統(tǒng)設(shè)置包括至少一個(gè)用于在操作系統(tǒng)層面上本地使用的可視組件(5,7),和至少一個(gè)用于通過網(wǎng)絡(luò)協(xié)議在網(wǎng)絡(luò)中使用的可視組件(6,8)。
14.根據(jù)權(quán)利要求1至13中任一項(xiàng)所述的系統(tǒng)設(shè)置,其特征在于,所述系統(tǒng)設(shè)置還包括用于在切換表現(xiàn)形式時(shí)臨時(shí)存儲(chǔ)數(shù)據(jù)的裝置。
15.根據(jù)權(quán)利要求14所述的系統(tǒng)設(shè)置,其特征在于,所述數(shù)據(jù)的臨時(shí)存儲(chǔ)可以通過過程運(yùn)行組件(4)進(jìn)行,并且在控制組件(4)的存儲(chǔ)區(qū)中進(jìn)行。
16.根據(jù)權(quán)利要求1至15中任一項(xiàng)所述的系統(tǒng)設(shè)置,其特征在于,用于產(chǎn)生和配置系統(tǒng)組件的程序代碼是以腳本語言編寫的代碼。
17.一種采用自動(dòng)用戶引導(dǎo)進(jìn)行應(yīng)用開發(fā)的方法,包括以下步驟-提供具有多種表現(xiàn)形式(7,8)的可視組件(5-8),分別用于在特定時(shí)刻察看數(shù)據(jù)和由用戶進(jìn)行輸入,-提供至少一個(gè)用于存儲(chǔ)、處理和/或調(diào)用數(shù)據(jù)的模型組件(9-12),-通過控制組件(1)將用戶輸入和/或?qū)?shù)據(jù)的處理傳遞到模型組件(9-12)并將被查詢/被處理的數(shù)據(jù)傳遞到表現(xiàn)形式(5-8),-在確定了預(yù)定的用戶輸入之后,通過控制組件(1)從一個(gè)表現(xiàn)形式(7,8)切換到另一預(yù)定的表現(xiàn)形式,-利用過程運(yùn)行組件(4)確定不同表現(xiàn)形式(7,8)之間的切換順序,-通過狀態(tài)管理器組件(13)在系統(tǒng)設(shè)置掛起時(shí)存儲(chǔ)該系統(tǒng)設(shè)置的其它組件的狀態(tài)以及在系統(tǒng)恢復(fù)時(shí)重新建立這些狀態(tài)。
18.根據(jù)權(quán)利要求17所述的方法,其特征在于,所述模型組件(9-12)具有多個(gè)業(yè)務(wù)形式(11,12),這些業(yè)務(wù)形式分別與至少一個(gè)表現(xiàn)形式(7,8)邏輯關(guān)聯(lián),并且還具有步驟-將不同表現(xiàn)形式(7,8)之間的切換與不同業(yè)務(wù)形式(11,12)之間的切換相耦合。
19.根據(jù)權(quán)利要求17或18所述的方法,其特征在于,該方法借助根據(jù)權(quán)利要求1至16中任一項(xiàng)所述的系統(tǒng)設(shè)置來執(zhí)行。
全文摘要
本發(fā)明涉及一種用于利用用戶引導(dǎo)進(jìn)行應(yīng)用開發(fā)的系統(tǒng)設(shè)置,包括至少一個(gè)具有多種表現(xiàn)形式(7,8)的可視組件(5-8),分別用于在特定時(shí)刻察看數(shù)據(jù)和由用戶進(jìn)行輸入,至少一個(gè)用于存儲(chǔ)和調(diào)用該數(shù)據(jù)的模型組件(9-12),用于將用戶輸入和/或?qū)?shù)據(jù)的查詢傳遞到模型組件(9-12)并將被查詢的數(shù)據(jù)傳遞到表現(xiàn)形式(7,8)的控制組件(1),其中控制組件還用于在不同的表現(xiàn)形式(7,8)之間進(jìn)行切換,還具有用于提供不同表現(xiàn)形式之間的切換的可配置順序的過程運(yùn)行組件(4)。
文檔編號(hào)G06F9/44GK1831767SQ200610058898
公開日2006年9月13日 申請(qǐng)日期2006年3月7日 優(yōu)先權(quán)日2005年3月7日
發(fā)明者德特利夫·貝克爾, 卡爾海因茲·多恩, 克里斯琴·沙夫, 弗拉迪斯拉夫·尤基斯, 漢斯-馬丁·范斯托克豪森 申請(qǐng)人:西門子公司