一種復(fù)合行為驅(qū)動方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種復(fù)合行為驅(qū)動方法及裝置。
【背景技術(shù)】
[0002]現(xiàn)有的軟件設(shè)計技術(shù)中,很多架構(gòu)和實現(xiàn)都采用了以事件驅(qū)動為核心的模式。例如:web前端設(shè)計中對于用戶操作的處理、系統(tǒng)中回調(diào)函數(shù)和方法、異步式處理等。交互界面的開發(fā)者在開發(fā)時,已經(jīng)為每個用戶界面上的需要處理用戶操作的成員(菜單、按鈕、表格、鏈接等)定義好對應(yīng)的處理方法;每一個處理方法只有在用戶該方法對應(yīng)的成員被用戶點(diǎn)擊才會被執(zhí)行。這樣的設(shè)計方式可以實現(xiàn)在相同的用戶界面下,不同的用戶點(diǎn)擊了不同的元素,會進(jìn)入不同的處理。
[0003]事件驅(qū)動模式越來越多地被軟件設(shè)計和架構(gòu)使用,說明現(xiàn)實中存在著大量的需求和使用場景,是天然適合事件驅(qū)動方式的。但是,事件驅(qū)動的模式在很多時候仍會存在如下不足:
[0004]1、復(fù)雜的執(zhí)行過程或流程中往往需要很多事件,這些事件中的聯(lián)系不能很好地從事件驅(qū)動中體現(xiàn)出來。
[0005]2、事件驅(qū)動的控制過于簡單,事件處理方法只有執(zhí)行與不執(zhí)行。但是很難控制有條件的執(zhí)行時間處理方法。
【發(fā)明內(nèi)容】
[0006]為了克服現(xiàn)有技術(shù)的不足,本發(fā)明的目的在于提供一種復(fù)合行為驅(qū)動方法和裝置,既可以很好地繼承事件驅(qū)動的優(yōu)點(diǎn),又可以解決現(xiàn)有技術(shù)中多個事件組成部分結(jié)構(gòu)松散和邏輯控制弱的問題。
[0007]為解決上述問題,本發(fā)明所采用的技術(shù)方案如下:
[0008]方案一:
[0009]—種復(fù)合行為驅(qū)動方法,包括以下步驟:
[0010]S1:讀取行為驅(qū)動集合文件,根據(jù)每個行為節(jié)點(diǎn)的開始時間和結(jié)束時間生成相應(yīng)的定時器;
[0011]S2:當(dāng)觸發(fā)某個行為節(jié)點(diǎn)的定時器的開始時間,則解析該行為節(jié)點(diǎn)的執(zhí)行前提條件,若執(zhí)行前提條件未設(shè)定或者滿足執(zhí)行前提條件,則執(zhí)行步驟S3 ;否則,更新該行為節(jié)點(diǎn)的行為狀態(tài)為失敗,執(zhí)行步驟S4 ;
[0012]S3:根據(jù)該行為節(jié)點(diǎn)中的執(zhí)行方式執(zhí)行其中的行為方法,執(zhí)行結(jié)束后更新該行為節(jié)點(diǎn)的行為狀態(tài)為成功;
[0013]S4:根據(jù)該行為節(jié)點(diǎn)的行為狀態(tài)執(zhí)行對應(yīng)的結(jié)束處理方法,并退出該節(jié)點(diǎn)。
[0014]優(yōu)選的,在步驟S3中,若該行為節(jié)點(diǎn)中的執(zhí)行方式為串行執(zhí)行,則按先后順序執(zhí)行行為方法中的子行為節(jié)點(diǎn);若該行為節(jié)點(diǎn)中的執(zhí)行方式為并行執(zhí)行,則同時執(zhí)行行為方法中的子行為節(jié)點(diǎn);若該行為節(jié)點(diǎn)中的執(zhí)行方式為簡單執(zhí)行,則根據(jù)執(zhí)行行為方法中的行為索引執(zhí)行相應(yīng)的方法。
[0015]優(yōu)選的,所述行為索引為預(yù)定義的函數(shù)或者邏輯程序封裝后所生成的索引值。
[0016]優(yōu)選的,所述行為驅(qū)動集合文件為由JSON對象描述格式對一個或多個行為節(jié)點(diǎn)進(jìn)行描述的文件。
[0017]方案二:
[0018]—種復(fù)合行為驅(qū)動裝置,包括以下模塊:
[0019]定時器生成模塊,用于讀取行為驅(qū)動集合文件,根據(jù)每個行為節(jié)點(diǎn)的開始時間和結(jié)束時間生成相應(yīng)的定時器;
[0020]定時器觸發(fā)模塊,用于當(dāng)觸發(fā)某個行為節(jié)點(diǎn)的定時器的開始時間,則解析該行為節(jié)點(diǎn)的執(zhí)行前提條件,若執(zhí)行前提條件未設(shè)定或者滿足執(zhí)行前提條件,則執(zhí)行方法執(zhí)行模塊;否則,更新該行為節(jié)點(diǎn)的行為狀態(tài)為失敗,執(zhí)行結(jié)束處理模塊;
[0021]方法執(zhí)行模塊,用于根據(jù)該行為節(jié)點(diǎn)中的執(zhí)行方式執(zhí)行其中的行為方法,執(zhí)行結(jié)束后更新該行為節(jié)點(diǎn)的行為狀態(tài)為成功;
[0022]結(jié)束處理模塊,用于根據(jù)該行為節(jié)點(diǎn)的行為狀態(tài)執(zhí)行對應(yīng)的結(jié)束處理方法,并退出該節(jié)點(diǎn)。
[0023]優(yōu)選的,在方法執(zhí)行模塊中,若該行為節(jié)點(diǎn)中的執(zhí)行方式為串行執(zhí)行,則按先后順序執(zhí)行行為方法中的子行為節(jié)點(diǎn);若該行為節(jié)點(diǎn)中的執(zhí)行方式為并行執(zhí)行,則同時執(zhí)行行為方法中的子行為節(jié)點(diǎn);若該行為節(jié)點(diǎn)中的執(zhí)行方式為簡單執(zhí)行,則根據(jù)執(zhí)行行為方法中的行為索引執(zhí)行相應(yīng)的方法。
[0024]優(yōu)選的,所述行為索引為預(yù)定義的函數(shù)或者邏輯程序封裝后所生成的索引值。
[0025]優(yōu)選的,所述行為驅(qū)動集合文件為由JSON對象描述格式對一個或多個行為節(jié)點(diǎn)進(jìn)行描述的文件。
[0026]相比現(xiàn)有技術(shù),本發(fā)明的有益效果在于:通過預(yù)定義好一套完整的行為描述模式,根據(jù)每個行為的描述執(zhí)行不同的動作,根據(jù)前面行為的執(zhí)行狀態(tài)觸發(fā)后面的行為,使行為與行為之間具有關(guān)聯(lián)性,通過組合和嵌套的關(guān)系便可以將多個簡單行為組合成一個復(fù)雜行為,實現(xiàn)一個結(jié)構(gòu)清晰和邏輯控制強(qiáng)的行為驅(qū)動集合。
【附圖說明】
[0027]圖1為本發(fā)明的復(fù)合行為驅(qū)動方法的流程圖。
【具體實施方式】
[0028]下面,結(jié)合附圖以及【具體實施方式】,對本發(fā)明做進(jìn)一步描述:
[0029]—個行為根據(jù)其復(fù)雜程度可以分成簡單行為和復(fù)合行為兩類。復(fù)合行為都可以分解成一系列簡單動作序列,反之,多個簡單行為按照特定的順序執(zhí)行(串行或并行),即可組成復(fù)合行為。JSON是一種通用的對象描述格式,在信息技術(shù)領(lǐng)域,被廣泛的使用,JSON格式的數(shù)據(jù)可以存儲在使用該數(shù)據(jù)的服務(wù)器中,或存儲在能夠被這些服務(wù)器訪問的網(wǎng)絡(luò)位置。JSON通過鍵-值對來描述屬性,將多個鍵值對使用{}組合在一起就可以描述一個包含多個屬性的對象,對象中屬性的值可以是對象,從而實現(xiàn)對象的嵌套。
[0030]首先,行為本身就是包括若干個屬性的對象,使用JSON格式對一個行為進(jìn)行描述可以概括為如下的JSON格式:
[0031]行為方法:{
[0032]行為名稱:行為名稱值,
[0033]行為執(zhí)行前提條件:條件對象,
[0034]行為開始時間:開始時間值,
[0035]行為結(jié)束時間:技術(shù)時間值,
[0036]行為發(fā)起者:行為發(fā)起者名字或ID,
[0037]行為執(zhí)行者:行為執(zhí)行者名稱或ID,
[0038]行為審核:審核者名稱或ID,
[0039]行為狀態(tài):行為的當(dāng)前狀態(tài),
[0040]行為結(jié)束處理:處理對象,
[0041]行為執(zhí)行方式:執(zhí)行方式值(串行、并行、簡單任務(wù)或未使用),
[0042]行為方法:行為的具體操作
[0043]}
[0044]其中,行為的具體操作又可以包括另外一個或多個行為,可以理解為最外層的行為方法為最大的行為節(jié)點(diǎn),嵌套在一個行為節(jié)點(diǎn)的行為方法中的行為理解為該行為節(jié)點(diǎn)的子行為節(jié)點(diǎn),一個子行為節(jié)點(diǎn)也可以嵌套基于它的子行為節(jié)點(diǎn),以此類推可以進(jìn)行多層嵌套,實現(xiàn)復(fù)雜的行為描述。
[0045]參考圖1為本發(fā)明的優(yōu)選實施例,一種復(fù)合行為驅(qū)動方法,包括以下步驟:
[0046]S1:讀取行為驅(qū)動集合文件,根據(jù)每個行為節(jié)點(diǎn)的開始時間和結(jié)束時間生成相應(yīng)的定時器;
[0047]S2:當(dāng)觸發(fā)某個行為節(jié)點(diǎn)的定時器的開始時間,則解析該行為節(jié)點(diǎn)的執(zhí)行前提條件,若執(zhí)行前提條件未設(shè)定或者滿足執(zhí)行前提條件,則執(zhí)行步驟S3 ;否則,更新該行為節(jié)點(diǎn)的行為狀態(tài)為失敗,執(zhí)行步驟S4 ;
[0048]S3:根據(jù)該行為節(jié)點(diǎn)中的執(zhí)行方式執(zhí)行其中的行為方法,執(zhí)行結(jié)束后更新該行為節(jié)點(diǎn)的行為狀態(tài)為成功;
[0049]S4:根據(jù)該行為節(jié)點(diǎn)的行為狀態(tài)執(zhí)行對應(yīng)的結(jié)束處理方法,并退出該節(jié)點(diǎn)。
[0050]其中,在步驟S3中,若該行為節(jié)點(diǎn)中的執(zhí)行方式為串行執(zhí)行,則按先后順序執(zhí)行行為方法中的子行為節(jié)點(diǎn);若該行為節(jié)點(diǎn)中的執(zhí)行方式為并行執(zhí)行,則同時執(zhí)行行為方法中的子行為節(jié)點(diǎn);若該行為節(jié)點(diǎn)中的執(zhí)行方式為簡單執(zhí)行,則根據(jù)執(zhí)行行為方法中的行為索引執(zhí)行相應(yīng)的方法。行為驅(qū)動集合文件是指由JSON對象描述格式對一個或多個行為節(jié)點(diǎn)進(jìn)行描述的文件。行為索引是指預(yù)定義的函數(shù)或者邏輯程序封裝后所生成的索引值。
[0051]為了更好地理解本發(fā)明所描述的方案,下面以一具體例子進(jìn)行描述。外出旅游定義為一個復(fù)合的行為,首先,將它分解成簡單的行為序列:確定目的地、安排觀光行程、預(yù)訂機(jī)/車票、預(yù)定住宿酒店和出行,而且,這些簡單的行為之間是有邏輯關(guān)系的(順序或并列)。則整個外出旅游的行為驅(qū)動集合文件的描述如下:
[0052]行為方法:{
[0053]行為名稱外出旅游”,
[0054]行為執(zhí)行前提條件:“”,
[0055]行為開始時間:“2015-6-01”,
[0056]行為結(jié)束時間:“2015-6_30”,
[0057]行為發(fā)起者:〃XXX〃,
[0058]行為執(zhí)行者:〃XXX〃,
[0059]行為審核:〃XXX〃,
[0060]行為結(jié)束處理:“”,
[0061]行為執(zhí)行方式:串行,
[0062]行為方法:[{行為名稱:“確定旅游目的地”,
[0063]行為執(zhí)行前提條件:“”,
[0064]行為開始時間:“2015-6-10”,
[0065]行為結(jié)束時間:“2015-6-11”,
[0066]行為發(fā)起者:〃XXX〃,
[0067]行為執(zhí)行者:〃XXX〃,
[0068]行為審核:〃XXX〃,
[0069]行為結(jié)束處理:{成功處理:繼續(xù),
[0070]失敗處理:終止},
[0071]行為執(zhí)行方式:簡單行為,
[0072]行為方法:行為索引
[0073]},
[0074]{
[0075]行為名稱:“安排觀光行程”,
[0076]行為執(zhí)行前提條件:“確定旅游目的地行為成功結(jié)束”,
[0077]行為開始時間:“2015-6-12”,
[0078]行為結(jié)束時間:“2015-6-13”,
[0079]行為發(fā)起者:〃XXX〃,
[0080]行為執(zhí)行者:〃XXX〃,
[0081]行為審核:〃XXX〃,
[0082]行為結(jié)束處理:{成功處理:繼續(xù),
[0083]失敗處理:延遲},
[0084]行為執(zhí)行方式:簡單行為,
[0085]行為方