MES開發(fā)與應(yīng)用 課件 3.4.1 工業(yè)管理軟件開發(fā)基礎(chǔ)-平臺(tái)通配置-驗(yàn)證規(guī)則;3.4.2 工業(yè)管理軟件開發(fā)基礎(chǔ)-平臺(tái)通配置-提交事件_第1頁(yè)
MES開發(fā)與應(yīng)用 課件 3.4.1 工業(yè)管理軟件開發(fā)基礎(chǔ)-平臺(tái)通配置-驗(yàn)證規(guī)則;3.4.2 工業(yè)管理軟件開發(fā)基礎(chǔ)-平臺(tái)通配置-提交事件_第2頁(yè)
MES開發(fā)與應(yīng)用 課件 3.4.1 工業(yè)管理軟件開發(fā)基礎(chǔ)-平臺(tái)通配置-驗(yàn)證規(guī)則;3.4.2 工業(yè)管理軟件開發(fā)基礎(chǔ)-平臺(tái)通配置-提交事件_第3頁(yè)
MES開發(fā)與應(yīng)用 課件 3.4.1 工業(yè)管理軟件開發(fā)基礎(chǔ)-平臺(tái)通配置-驗(yàn)證規(guī)則;3.4.2 工業(yè)管理軟件開發(fā)基礎(chǔ)-平臺(tái)通配置-提交事件_第4頁(yè)
MES開發(fā)與應(yīng)用 課件 3.4.1 工業(yè)管理軟件開發(fā)基礎(chǔ)-平臺(tái)通配置-驗(yàn)證規(guī)則;3.4.2 工業(yè)管理軟件開發(fā)基礎(chǔ)-平臺(tái)通配置-提交事件_第5頁(yè)
已閱讀5頁(yè),還剩62頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

3.4平臺(tái)通用配置深圳市信息職業(yè)技術(shù)學(xué)院——驗(yàn)證規(guī)則配置實(shí)現(xiàn)目

錄驗(yàn)證規(guī)則開發(fā)實(shí)現(xiàn)示例01框架驗(yàn)證規(guī)則實(shí)現(xiàn)邏輯介紹02框架驗(yàn)證規(guī)則實(shí)現(xiàn)03經(jīng)驗(yàn)總結(jié)04知識(shí)回顧根據(jù)需求進(jìn)行主從表功能UML建模;主從表功能的開發(fā)實(shí)現(xiàn)步驟;初始菜單配置;運(yùn)行項(xiàng)目生成數(shù)據(jù)庫(kù)表、序列、更新元數(shù)據(jù)和配置菜單;能夠獨(dú)立進(jìn)行主從表功能的問(wèn)題修復(fù);能夠?qū)δ苓M(jìn)行擴(kuò)展,完成一主多從、主從孫關(guān)系的功能開發(fā)實(shí)現(xiàn)學(xué)習(xí)目標(biāo)通過(guò)本節(jié)學(xué)習(xí)可以:掌握框架驗(yàn)證規(guī)則包括哪幾種實(shí)現(xiàn)方式,不同的實(shí)現(xiàn)方式有什么差異?掌握不同驗(yàn)證規(guī)則的開發(fā)實(shí)現(xiàn)步驟;能夠修復(fù)驗(yàn)證規(guī)則開發(fā)過(guò)程中的bug。01驗(yàn)證規(guī)則開發(fā)實(shí)現(xiàn)示例思考題通過(guò)前面課程的學(xué)習(xí),我們知道框架驗(yàn)證可以在哪里進(jìn)行配置實(shí)現(xiàn)?可以在實(shí)體屬性中標(biāo)記規(guī)則特性,然后進(jìn)行實(shí)體元數(shù)據(jù)的更新。業(yè)務(wù)描述業(yè)務(wù)描述讀者分類增加驗(yàn)證:

讀者分類被讀者管理引用后,不允許刪除讀者管理增加驗(yàn)證:1、讀者編號(hào)、姓名聯(lián)合驗(yàn)證唯一2、手機(jī)號(hào)驗(yàn)證輸入格式3、已借書數(shù)量不能大于讀者分類中維護(hù)的可借書數(shù)量開發(fā)實(shí)現(xiàn)-讀者分類被讀者管理引用后不允許刪除實(shí)現(xiàn)邏輯:可以用框架的規(guī)則去實(shí)現(xiàn),引用后不允許刪除使用框架的引用規(guī)則,需要自己在服務(wù)端建一個(gè)規(guī)則類,以Rule進(jìn)行結(jié)尾,繼承NoReferencedRule進(jìn)行實(shí)現(xiàn),如下圖實(shí)現(xiàn):開發(fā)實(shí)現(xiàn)開發(fā)實(shí)現(xiàn)-讀者管理中讀者編號(hào)、姓名聯(lián)合驗(yàn)證唯一實(shí)現(xiàn)邏輯:該驗(yàn)證的實(shí)現(xiàn)可以使用非重復(fù)驗(yàn)證來(lái)實(shí)現(xiàn),這里以規(guī)則類的方式開發(fā)實(shí)現(xiàn):開發(fā)實(shí)現(xiàn)開發(fā)實(shí)現(xiàn)-讀者管理中手機(jī)號(hào)輸入格式驗(yàn)證實(shí)現(xiàn)邏輯:該驗(yàn)證的實(shí)現(xiàn)可以使用實(shí)體規(guī)則進(jìn)行驗(yàn)證,也是需要建一個(gè)規(guī)則類進(jìn)行實(shí)現(xiàn):開發(fā)實(shí)現(xiàn)開發(fā)實(shí)現(xiàn)-已借書數(shù)量不能大于讀者分類中維護(hù)的可借書數(shù)量實(shí)現(xiàn)邏輯:該驗(yàn)證的實(shí)現(xiàn)也可以通過(guò)實(shí)體規(guī)則進(jìn)行驗(yàn)證。開發(fā)實(shí)現(xiàn)注意:以上所有的規(guī)則實(shí)現(xiàn)都要進(jìn)行實(shí)體元數(shù)據(jù)的更新才會(huì)生效,修改了對(duì)應(yīng)的規(guī)則需要重新進(jìn)行實(shí)體元數(shù)據(jù)的更新。思考題前面示例驗(yàn)證規(guī)則的實(shí)現(xiàn)中,繼承的父類包括哪些?02框架驗(yàn)證規(guī)則實(shí)現(xiàn)邏輯介紹框架驗(yàn)證規(guī)則實(shí)現(xiàn)邏輯介紹通過(guò)前面單表、主從表的開發(fā)和剛剛的驗(yàn)證規(guī)則示例中可以看出,我們的規(guī)則可以在實(shí)體屬性中標(biāo)記特性進(jìn)行實(shí)現(xiàn),也可以在服務(wù)端定義規(guī)則類進(jìn)行實(shí)現(xiàn),之間有什么差異呢?從實(shí)現(xiàn)可以看出,在實(shí)體中標(biāo)記的特性只能是對(duì)該屬性的簡(jiǎn)單驗(yàn)證;對(duì)于復(fù)雜驗(yàn)證或者是屬性之間的聯(lián)合驗(yàn)證無(wú)法在實(shí)體中標(biāo)記特性,就需要引入規(guī)則類進(jìn)行實(shí)現(xiàn)。兩者的相同點(diǎn)就是:實(shí)現(xiàn)完成后都需要進(jìn)行實(shí)體元數(shù)據(jù)的更新才會(huì)生效??蚣茯?yàn)證規(guī)則實(shí)現(xiàn)邏輯框架驗(yàn)證規(guī)則實(shí)現(xiàn)邏輯介紹框架驗(yàn)證規(guī)則邏輯的實(shí)現(xiàn):框架針對(duì)單個(gè)屬性的簡(jiǎn)單驗(yàn)證是在實(shí)體屬性中標(biāo)記特性進(jìn)行實(shí)現(xiàn)的(這些也可以在驗(yàn)證方法中進(jìn)行實(shí)現(xiàn)),框架在生成表格或者表單的時(shí)候,將屬性的這些特性和屬性對(duì)應(yīng)Ext控件一起生成返回到前端,然后前端解析將可以轉(zhuǎn)換為Ext控件的驗(yàn)證規(guī)則轉(zhuǎn)換為控件規(guī)則,在操作控件時(shí),在對(duì)應(yīng)控件中有紅色框框顯示(這種是做了前后端雙重驗(yàn)證);不能轉(zhuǎn)換的,保存數(shù)據(jù)時(shí)給出具體的異常提示(只做了后臺(tái)驗(yàn)證)。對(duì)于復(fù)雜的驗(yàn)證,如規(guī)則類中實(shí)現(xiàn)的規(guī)則,是無(wú)法解析為對(duì)應(yīng)控件的驗(yàn)證,則是在后臺(tái)進(jìn)行數(shù)據(jù)的驗(yàn)證處理,即通過(guò)RF.Save()保存數(shù)據(jù)前,去調(diào)用實(shí)體對(duì)應(yīng)的驗(yàn)證,驗(yàn)證不通過(guò)給出具體的異常提示(走的后臺(tái)驗(yàn)證)??蚣茯?yàn)證規(guī)則實(shí)現(xiàn)邏輯03框架驗(yàn)證規(guī)則的實(shí)現(xiàn)思考題框架驗(yàn)證規(guī)則的實(shí)現(xiàn)方式包括幾種?分別是?框架驗(yàn)證規(guī)則實(shí)現(xiàn)方式框架通用的驗(yàn)證方式,框架提供了三種實(shí)現(xiàn)方式,分別為運(yùn)行時(shí)規(guī)則、標(biāo)準(zhǔn)規(guī)則和預(yù)編譯規(guī)則。1、運(yùn)行時(shí)規(guī)則:1)通過(guò)在實(shí)體元數(shù)據(jù)模塊進(jìn)行運(yùn)行時(shí)配置的規(guī)則,如字段長(zhǎng)度、非空等驗(yàn)證。如果是部署的服務(wù),添加或者修改了配置規(guī)則,需要重啟服務(wù)。2)在實(shí)體屬性中標(biāo)記特性,只能標(biāo)記非空,非重復(fù),最大長(zhǎng)度,最小長(zhǎng)度,最大值和最小值,標(biāo)記的特性是針對(duì)單個(gè)屬性的驗(yàn)證,標(biāo)記完成后需要對(duì)實(shí)體元數(shù)據(jù)進(jìn)行更新操作,驗(yàn)證才會(huì)生效。說(shuō)明:該種方式實(shí)現(xiàn)的規(guī)則如果在實(shí)體元數(shù)據(jù)規(guī)則類中把對(duì)應(yīng)規(guī)則禁用了,即使在代碼中標(biāo)記了對(duì)應(yīng)的規(guī)則,也不會(huì)生效;規(guī)則刪除后,實(shí)體元數(shù)據(jù)的規(guī)則不能自動(dòng)刪除,需要手動(dòng)把對(duì)應(yīng)的規(guī)則刪除或者是禁用。驗(yàn)證規(guī)則的實(shí)現(xiàn)方式框架驗(yàn)證規(guī)則實(shí)現(xiàn)方式2、標(biāo)準(zhǔn)規(guī)則:在實(shí)體配置中重寫AddValidations()方法實(shí)現(xiàn)規(guī)則驗(yàn)證,編寫代碼運(yùn)行項(xiàng)目后立即生效,不可配置。3、預(yù)編譯規(guī)則:通過(guò)C#代碼的方式實(shí)現(xiàn)驗(yàn)證規(guī)則,然后在實(shí)體元數(shù)據(jù)功能進(jìn)行更新并配置啟用。包含的規(guī)則父類:實(shí)體規(guī)則(繼承EntityRule<T>)、非重復(fù)規(guī)則(繼承NotDuplicateRule<T>)、刪除被引用規(guī)則(繼承NoReferencedRule<T>)說(shuō)明:預(yù)編譯規(guī)則也需要在實(shí)體元數(shù)據(jù)中進(jìn)行更新才會(huì)生效,如果規(guī)則的類名修改了,原來(lái)類名生成的規(guī)則不會(huì)自動(dòng)刪除,會(huì)根據(jù)新的類名重新生成一條規(guī)則。驗(yàn)證規(guī)則的實(shí)現(xiàn)方式運(yùn)行時(shí)規(guī)則實(shí)現(xiàn)1、在“實(shí)體元數(shù)據(jù)(數(shù)據(jù)字典)”菜單的“實(shí)體規(guī)則”頁(yè)簽中,維護(hù)規(guī)則,做基礎(chǔ)的驗(yàn)證。運(yùn)行時(shí)規(guī)則實(shí)現(xiàn)說(shuō)明:在項(xiàng)目開發(fā)階段不建議在該界面直接維護(hù)規(guī)則。運(yùn)行時(shí)規(guī)則實(shí)現(xiàn)2、在實(shí)體屬性中配置驗(yàn)證規(guī)則,包含的驗(yàn)證:

非空驗(yàn)證:[Required]

非重復(fù)驗(yàn)證:[NotDuplicate]

最大長(zhǎng)度驗(yàn)證:[MaxLength(40)]

最小長(zhǎng)度驗(yàn)證:[MinLength(2)]

最大值驗(yàn)證:[MaxValue(9999)]

最小值驗(yàn)證:[MinValue(1)]

示例:運(yùn)行時(shí)規(guī)則驗(yàn)證示例,如讀者分類中類別號(hào)的驗(yàn)證:運(yùn)行時(shí)規(guī)則實(shí)現(xiàn)運(yùn)行時(shí)規(guī)則實(shí)現(xiàn)注意事項(xiàng):1、驗(yàn)證要生效,必須進(jìn)行實(shí)體元數(shù)據(jù)的更新,且規(guī)則狀態(tài)是啟用狀態(tài)才會(huì)生效;2、實(shí)體屬性配置的規(guī)則刪除,元數(shù)據(jù)生成的規(guī)則不會(huì)自動(dòng)刪除,需要手動(dòng)刪除或者禁用,否則規(guī)則還會(huì)生效;3、引用屬性的非空驗(yàn)證是通過(guò)屬性的類型進(jìn)行驗(yàn)證的,不要在引用屬性中標(biāo)記非空特性[Required],否則非空驗(yàn)證的提示會(huì)提示兩次。運(yùn)行時(shí)規(guī)則實(shí)現(xiàn)標(biāo)準(zhǔn)規(guī)則實(shí)現(xiàn)標(biāo)準(zhǔn)規(guī)則是在實(shí)體配置中重寫添加驗(yàn)證方法AddValidations進(jìn)行實(shí)現(xiàn):標(biāo)準(zhǔn)規(guī)則實(shí)現(xiàn)1、標(biāo)準(zhǔn)規(guī)則中可以實(shí)現(xiàn)運(yùn)行時(shí)規(guī)則和預(yù)編譯規(guī)則中實(shí)現(xiàn)的所有規(guī)則(雖然可以實(shí)現(xiàn),但是被引用刪除規(guī)則建議還是使用預(yù)編譯中刪除被引用的規(guī)則實(shí)現(xiàn),減少開發(fā)的代碼量);2、標(biāo)準(zhǔn)規(guī)則與運(yùn)行時(shí)和預(yù)編譯規(guī)則的差異:標(biāo)準(zhǔn)規(guī)則不可配置,運(yùn)行時(shí)和預(yù)編譯規(guī)則可配置。標(biāo)準(zhǔn)規(guī)則實(shí)現(xiàn)標(biāo)準(zhǔn)規(guī)則中可以實(shí)現(xiàn)的驗(yàn)證:1、非空驗(yàn)證;rules.AddRule(屬性名,newRequiredRule());2、非重復(fù)驗(yàn)證,單個(gè)和多個(gè)屬性的非重復(fù)驗(yàn)證;

單個(gè)屬性非重復(fù)驗(yàn)證:rules.AddRule(屬性名,newNotDuplicateRule());

多個(gè)屬性非重復(fù)驗(yàn)證

rules.AddRule(newNotDuplicateRule()

{Properties=

{

屬性名1,

屬性名2

},MessageBuilder=(e)=>

{return“驗(yàn)證不通過(guò)的提示信息".L10N();

}

});標(biāo)準(zhǔn)規(guī)則實(shí)現(xiàn)標(biāo)準(zhǔn)規(guī)則實(shí)現(xiàn)3、長(zhǎng)度驗(yàn)證,包括最小和最大長(zhǎng)度的設(shè)置;

rules.AddRule(屬性名,newStringLengthRangeRule(){Min=2,Max=40});4、最大最小值驗(yàn)證;rules.AddRule(屬性名,newNumberRangeRule(){Min=1,Max=100});5、正則表達(dá)式驗(yàn)證;

rules.AddRule(屬性名,newRegexMatchRule(){Regex=newRegex(@"^((\d{3}-\d{8}|\d{4}-\d{7,8})|(0?(13|14|15|17|18|19)[0-9]{9}))$"),MessageBuilder=(o)=>{ return"電話號(hào)碼不正確";}});標(biāo)準(zhǔn)規(guī)則實(shí)現(xiàn)標(biāo)準(zhǔn)規(guī)則實(shí)現(xiàn)6、實(shí)體驗(yàn)證

rules.AddRule(newHandlerRule(){Handler=(o,e)=>{

//這里可以進(jìn)行查數(shù)據(jù)庫(kù)進(jìn)行操作,當(dāng)前實(shí)體的數(shù)據(jù)不能滿足驗(yàn)證判斷要求時(shí)可查數(shù)據(jù)庫(kù)判斷varreader=o.CastTo<實(shí)體類>();if(判斷的條件)

e.BrokenDescription=“具體的驗(yàn)證提示信息".L10nFormat(reader.Name);}});標(biāo)準(zhǔn)規(guī)則實(shí)現(xiàn)標(biāo)準(zhǔn)規(guī)則實(shí)現(xiàn)示例讀者管理中通過(guò)標(biāo)準(zhǔn)規(guī)則驗(yàn)證實(shí)現(xiàn)如下驗(yàn)證:讀者編號(hào)非空,姓名非空,單位非空讀者編號(hào),姓名聯(lián)合驗(yàn)證唯一讀者編號(hào)和姓名最大可輸入長(zhǎng)度為20手機(jī)號(hào)需要驗(yàn)證格式已借書數(shù)量不能大于可借書數(shù)量標(biāo)準(zhǔn)規(guī)則實(shí)現(xiàn)示例預(yù)編譯規(guī)則實(shí)現(xiàn)預(yù)編譯規(guī)則也是需要對(duì)實(shí)體元數(shù)據(jù)進(jìn)行更新,編寫的規(guī)則才會(huì)生效;1、非重復(fù)規(guī)則:繼承NotDuplicateRule<T>,在構(gòu)造函數(shù)中實(shí)現(xiàn)非重復(fù)邏輯預(yù)編譯規(guī)則實(shí)現(xiàn)[System.ComponentModel.DisplayName(“規(guī)則名稱信息")][System.ComponentModel.Description(“規(guī)則描述信息")]

public

class

XXXRule:NotDuplicateRule<T>

{

public

XXXRule()

{Scope=EntityStatusScopes.Update|EntityStatusScopes.Add;Properties.Add(屬性1);Properties.Add(屬性2);MessageBuilder=(e)=>

{

vart=easT;//e為對(duì)應(yīng)的實(shí)體

return

“驗(yàn)證不通過(guò)的提示信息[{0}]”.L10nFormat(t.A);//{0}為參數(shù)設(shè)置

};

}

}規(guī)則作用域,用Scope進(jìn)行設(shè)置,默認(rèn)為Add和Update。非重復(fù)驗(yàn)證的屬性,只能設(shè)置數(shù)據(jù)庫(kù)存在的字段屬性,且不能是復(fù)雜屬性提示信息,可不設(shè)置,非重復(fù)框架有默認(rèn)的提示。預(yù)編譯規(guī)則實(shí)現(xiàn)2、被引用不允許刪除:繼承NoReferencedRule<T>,在構(gòu)造函數(shù)中實(shí)現(xiàn)被引用不能刪除的邏輯。預(yù)編譯規(guī)則實(shí)現(xiàn)[System.ComponentModel.DisplayName(“規(guī)則名稱信息")][System.ComponentModel.Description(“規(guī)則描述信息")]

public

class

XXXRule:NoReferencedRule<T>

{

public

XXXRule()

{Scope=EntityStatusScopes.Delete;Properties.Add(被引用的屬性名);MessageBuilder=(e,c)=>

{

varcat=easT;

return

“被引用刪除的提示信息{0}”.L10nFormat(c);

};

}

}規(guī)則作用域,用Scope進(jìn)行設(shè)置,默認(rèn)為刪除,通常不用設(shè)置。只能是引用Id屬性,通過(guò)其他實(shí)體.引用Id屬性名加載出來(lái)。驗(yàn)證不通過(guò)的提示信息,引用不允許刪除框架有默認(rèn)提示信息,如果想修改框架的提示信息可通過(guò)此屬性添加,其中e為實(shí)體,c為被引用的次數(shù)。預(yù)編譯規(guī)則實(shí)現(xiàn)3、實(shí)體規(guī)則:繼承EntityRule<T>,在這個(gè)規(guī)則中可以實(shí)現(xiàn)所有規(guī)則。預(yù)編譯規(guī)則實(shí)現(xiàn)[System.ComponentModel.DisplayName("規(guī)則名稱信息")][System.ComponentModel.Description("規(guī)則描述信息")]

public

class

XXXRule:EntityRule<T>

{

public

XXXRule()//構(gòu)造函數(shù)

{Scope=EntityStatusScopes.Add|EntityStatusScopes.Update;//規(guī)則作用域默認(rèn)為新增和修改,如果是只在添加操作生效,可以對(duì)該屬性進(jìn)行規(guī)則設(shè)置ConnectToDataSource=false;

}

protected

override

voidValidate(IEntityentity,RuleArgse)//驗(yàn)證方法

{ //這里可以調(diào)用控制器方法對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作

vart=entityasT;//entity為當(dāng)前驗(yàn)證的實(shí)體

if(驗(yàn)證的條件)e.BrokenDescription=“驗(yàn)證不通過(guò)的提示信息{0}".L10nFormat(t.A);

}

}是否連接數(shù)據(jù)倉(cāng)庫(kù),默認(rèn)為false,如果在驗(yàn)證方法中有對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作,該屬性要設(shè)置為true。思考題標(biāo)準(zhǔn)規(guī)則的實(shí)體驗(yàn)證和預(yù)編譯規(guī)則的標(biāo)準(zhǔn)規(guī)則,都能實(shí)現(xiàn)所有的驗(yàn)證,有什么區(qū)別?04經(jīng)驗(yàn)總結(jié)經(jīng)驗(yàn)總結(jié)標(biāo)準(zhǔn)驗(yàn)證AddValidations和預(yù)編譯驗(yàn)證(在服務(wù)端編寫驗(yàn)證規(guī)則類)是兩種不一樣的實(shí)現(xiàn)方式,同一邏輯用兩種方式驗(yàn)證的效果是一樣的,只是其中一種是代碼所見即所得,一種是可配置;在項(xiàng)目上對(duì)應(yīng)的驗(yàn)證邏輯,根據(jù)實(shí)際需要選擇其中一種方式實(shí)現(xiàn)即可;非重復(fù)驗(yàn)證盡量使用框架非重復(fù)的子類進(jìn)行驗(yàn)證,不要在實(shí)體規(guī)則中進(jìn)行驗(yàn)證,原因是寫的邏輯比較多,還有可能寫漏,用框架的非重復(fù)驗(yàn)證會(huì)簡(jiǎn)單很多,也避免一些不必要的bug出現(xiàn);被引用不允許刪除盡量使用框架的,原因與非重復(fù)驗(yàn)證一致;String類型的長(zhǎng)度驗(yàn)證,框架默認(rèn)配置的長(zhǎng)度是20,如果有些字段需要設(shè)置為其他的長(zhǎng)度限制,需要自己手動(dòng)設(shè)置,如果框架string類型的長(zhǎng)度限制都需要調(diào)整,可以在配置文件中配置DefaultFieldMaximumLength??蚣艿倪@些驗(yàn)證都是在調(diào)用RF.Save()保存數(shù)據(jù)庫(kù)前進(jìn)行校驗(yàn)的,使用DB操作數(shù)據(jù)庫(kù)驗(yàn)證不會(huì)生效。經(jīng)驗(yàn)總結(jié)思考題在部署好的服務(wù)中,為什么增加或者修改實(shí)體元數(shù)據(jù)對(duì)應(yīng)功能的規(guī)則不生效?使用db或者sql語(yǔ)句執(zhí)行數(shù)據(jù)庫(kù)保存操作,驗(yàn)證規(guī)則未生效?修改實(shí)體元數(shù)據(jù)的規(guī)則要重啟服務(wù)后才能生效??蚣艿膶?shí)體規(guī)則是要在通過(guò)實(shí)體倉(cāng)庫(kù)保存數(shù)據(jù)前才會(huì)執(zhí)行,通過(guò)db和sql直接操作數(shù)據(jù)庫(kù)不會(huì)執(zhí)行。練習(xí)1、框架驗(yàn)證規(guī)則是什么時(shí)候執(zhí)行的()A:數(shù)據(jù)添加時(shí); B:數(shù)據(jù)修改時(shí);C:數(shù)據(jù)保存前; D:數(shù)據(jù)刪除時(shí)。2、被引用不允許刪除規(guī)則的作用域是新增和修改。()3、標(biāo)準(zhǔn)規(guī)則需要進(jìn)行實(shí)體元數(shù)據(jù)的初始化才會(huì)生效。()C錯(cuò)錯(cuò)本章小結(jié)本章主要講解了工業(yè)管理軟件驗(yàn)證規(guī)則的實(shí)現(xiàn),包括:框架驗(yàn)證規(guī)則的實(shí)現(xiàn)邏輯;運(yùn)行時(shí)驗(yàn)證規(guī)則的開發(fā)實(shí)現(xiàn)步驟與配置;標(biāo)準(zhǔn)規(guī)則的開發(fā)實(shí)現(xiàn);預(yù)編譯規(guī)則的開發(fā)實(shí)現(xiàn);框架驗(yàn)證規(guī)則是在什么情況下執(zhí)行的。驗(yàn)證規(guī)則在整個(gè)工業(yè)管理軟件開發(fā)中比較重要,學(xué)員要能夠根據(jù)不同的業(yè)務(wù)需求選擇合適的驗(yàn)證規(guī)則去實(shí)現(xiàn)對(duì)應(yīng)的業(yè)務(wù)驗(yàn)證邏輯,并且遇到問(wèn)題能夠定位和修復(fù)。THANKYOU深圳市信息職業(yè)技術(shù)學(xué)院3.4平臺(tái)通用配置深圳市信息職業(yè)技術(shù)學(xué)院——提交事件目

錄提交事件課題導(dǎo)入01提交前事件02提交后事件03經(jīng)驗(yàn)總結(jié)04知識(shí)回顧框架驗(yàn)證規(guī)則的實(shí)現(xiàn)邏輯;運(yùn)行時(shí)驗(yàn)證規(guī)則的開發(fā)實(shí)現(xiàn)步驟與配置;標(biāo)準(zhǔn)規(guī)則的開發(fā)實(shí)現(xiàn)步驟;預(yù)編譯規(guī)則的開發(fā)實(shí)現(xiàn)步驟;驗(yàn)證規(guī)則使用的注意事項(xiàng);學(xué)習(xí)目標(biāo)通過(guò)本節(jié)學(xué)習(xí)可以:掌握提交前事件的開發(fā)實(shí)現(xiàn)步驟;掌握提交后事件的開發(fā)實(shí)現(xiàn)步驟;掌握使用提交事件應(yīng)該注意哪些問(wèn)題;了解框架提交事件的應(yīng)用場(chǎng)景。01提交事件課題導(dǎo)入課題導(dǎo)入在做功能開發(fā)時(shí),對(duì)于一些功能或者是框架通用的邏輯,我們常規(guī)的開發(fā)思路是寫一個(gè)通用的方法,需要用到這個(gè)方法時(shí)去調(diào)用該方法,這種方式是需要開發(fā)人員自己寫代碼去調(diào)用;提交事件是針對(duì)上述這種通用邏輯引入的,將功能的一些通用邏輯寫到提交事件的方法中,由框架統(tǒng)一去執(zhí)行,不需要自己額外去調(diào)用。提交事件介紹提交事件介紹提交事件:分為提交前和提交后事件。提交前事件:針對(duì)某個(gè)實(shí)體,保存之前的通用邏輯處理,可以使用提交前事件處理;程序在調(diào)用RF.Save()保存實(shí)體數(shù)據(jù)之前框架會(huì)自動(dòng)去調(diào)用提交前事件的方法執(zhí)行對(duì)應(yīng)的邏輯。提交后事件:針對(duì)某個(gè)實(shí)體,保存之后的通用邏輯處理,可以使用提交后事件處理;程序在調(diào)用RF.Save()保存實(shí)體數(shù)據(jù)之后框架會(huì)自動(dòng)去調(diào)用提交后事件的方法執(zhí)行對(duì)應(yīng)的邏輯。02提交前事件提交前事件開發(fā)示例實(shí)現(xiàn)步驟業(yè)務(wù)描述:讀者管理功能數(shù)據(jù)保存前,如果讀者管理的操作為新增時(shí),將讀者管理關(guān)聯(lián)的讀者分類的更新時(shí)間設(shè)置為當(dāng)前操作時(shí)間。該業(yè)務(wù)實(shí)現(xiàn)使用提交前事件來(lái)處理,實(shí)現(xiàn)步驟如下:1、在服務(wù)端新建一個(gè)類,以Submitting結(jié)尾,繼承OnSubmitting,關(guān)聯(lián)實(shí)體為讀者管理的實(shí)體類提交前事件開發(fā)步驟提交前事件開發(fā)示例實(shí)現(xiàn)步驟2、鼠標(biāo)點(diǎn)擊報(bào)錯(cuò)的地方,實(shí)現(xiàn)抽象類。提交前事件開發(fā)步驟提交前事件開發(fā)示例實(shí)現(xiàn)步驟3、給提交前事件類增加名稱DisplayName和描述Description信息。提交前事件開發(fā)步驟提交前事件開發(fā)示例實(shí)現(xiàn)步驟4、實(shí)現(xiàn)業(yè)務(wù)邏輯:讀者管理的操作為新增時(shí),將讀者管理關(guān)聯(lián)的讀者分類的更新時(shí)間設(shè)置為當(dāng)前操作時(shí)間。提交前事件開發(fā)步驟提交前事件開發(fā)示例實(shí)現(xiàn)步驟5、運(yùn)行項(xiàng)目,進(jìn)行實(shí)體元數(shù)據(jù)的更新,會(huì)在讀者管理的提交前事件的子頁(yè)簽生成一筆對(duì)應(yīng)的數(shù)據(jù),如下:提交前事件開發(fā)步驟提交前事件開發(fā)示例實(shí)現(xiàn)步驟6、可以在Invoke方法中設(shè)置斷點(diǎn),在讀者管理中插入一筆數(shù)據(jù)點(diǎn)擊保存,在讀者分類中查看效果,可以看到修改時(shí)間更新了。提交前事件開發(fā)步驟思考題提交前事件的命名規(guī)范?該類是添加在服務(wù)端工程還是客戶端工程?提交前事件繼承的父類是?03提交后事件提交后事件開發(fā)示例實(shí)現(xiàn)步驟業(yè)務(wù)描述:讀者管理功能數(shù)據(jù)保存后,如果讀者管理的操作狀態(tài)為修改時(shí),且管理的讀者分類為學(xué)生時(shí),更新對(duì)應(yīng)讀者分類的可借書天數(shù),可借書天數(shù)在原來(lái)的基礎(chǔ)上加1,當(dāng)可借書天數(shù)>=90時(shí),不執(zhí)行更新操作;該業(yè)務(wù)實(shí)現(xiàn)使用提交前事件來(lái)處理,實(shí)現(xiàn)步驟如下:1、在服務(wù)端新建一個(gè)類,以Submitted結(jié)尾,繼承OnSubmitted,關(guān)聯(lián)實(shí)體為讀者管理的實(shí)體類提交后事件開發(fā)步驟提交后事件開發(fā)示例實(shí)現(xiàn)步驟2、鼠標(biāo)點(diǎn)擊報(bào)錯(cuò)的地方,實(shí)現(xiàn)Invoke抽象類。提交后事件開發(fā)步驟提交后事件開發(fā)示例實(shí)現(xiàn)步驟3、給類增加名稱DisplayName和描述Description信息提交后事件開發(fā)步驟提交后事件開發(fā)示例實(shí)現(xiàn)步驟4、實(shí)現(xiàn)業(yè)務(wù)邏輯。提交后事件開發(fā)步驟提交后事件開發(fā)示例實(shí)現(xiàn)步驟5、運(yùn)行項(xiàng)目,進(jìn)行實(shí)體元數(shù)據(jù)的更新,會(huì)在讀者管理的提交后事件的子頁(yè)簽生成一筆對(duì)應(yīng)的數(shù)據(jù),如下:提交后事件開發(fā)步驟提交后事件開發(fā)示例實(shí)現(xiàn)步驟6

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論