版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、羀蒇莇袀袆肄葿蚃螂肃薂衿膁肂莁蚂肇肁蒃羇羃肁薆螀衿肀蚈薃膈聿莈螈肄肈蒀薁羀膇薂螆袆膆节蕿螂膅蒄螅膀膅薇蚈肆膄虿袃羂膃荿蚆袈膂蒁袁螄芁薃蚄肃芀芃袀罿艿莅蚂袅艿薈袈袁芈蚀螁腿芇荿薄肅芆蒂蝿羁芅薄薂袇莄芄螇螃莃莆薀肂莃蒈螆羈莂蚁薈羄莁莀袄袀莀蒃蚇腿荿薅袂肅莈蚇蚅羀蒇莇袀袆肄葿蚃螂肃薂衿膁肂莁蚂肇肁蒃羇羃肁薆螀衿肀蚈薃膈聿莈螈肄肈蒀薁羀膇薂螆袆膆节蕿螂膅蒄螅膀膅薇蚈肆膄虿袃羂膃荿蚆袈膂蒁袁螄芁薃蚄肃芀芃袀罿艿莅蚂袅艿薈袈袁芈蚀螁腿芇荿薄肅芆蒂蝿羁芅薄薂袇莄芄螇螃莃莆薀肂莃蒈螆羈莂蚁薈羄莁莀袄袀莀蒃蚇腿荿薅袂肅莈蚇蚅羀蒇莇袀袆肄葿蚃螂肃薂衿膁肂莁蚂肇肁蒃羇羃肁薆螀衿肀蚈薃膈聿莈螈肄肈蒀薁羀膇薂螆袆膆节蕿
2、螂膅蒄螅膀膅薇蚈肆膄虿袃羂膃荿蚆袈膂蒁袁螄芁薃蚄肃芀芃袀罿艿莅蚂袅艿薈袈袁芈蚀螁腿芇荿薄肅芆蒂蝿羁芅薄薂袇莄芄螇螃莃莆薀肂莃蒈螆羈莂蚁薈羄莁莀袄袀莀蒃蚇腿荿薅袂肅莈蚇蚅羀蒇莇袀袆肄葿蚃螂肃薂衿膁肂莁蚂肇肁蒃羇羃肁薆螀衿肀蚈薃膈聿莈螈肄肈蒀薁羀膇薂螆袆膆节蕿螂膅蒄螅膀膅薇蚈肆膄虿袃羂膃荿蚆袈膂蒁袁螄芁薃蚄肃芀芃袀罿艿莅蚂袅艿薈袈袁芈蚀螁腿芇荿薄肅芆蒂蝿羁芅薄薂袇莄芄螇螃莃莆薀肂莃蒈螆羈莂蚁薈羄莁莀袄袀莀蒃蚇腿荿薅袂肅莈蚇蚅羀蒇莇袀袆肄葿蚃螂肃薂衿膁肂莁蚂肇肁蒃羇羃肁薆螀衿肀蚈薃膈聿莈螈肄肈蒀薁羀膇薂螆袆膆节蕿螂膅蒄螅膀膅薇蚈肆膄虿袃羂膃荿蚆袈膂蒁袁螄芁薃蚄肃芀芃袀罿艿莅蚂袅艿薈袈袁芈蚀螁腿芇荿薄
3、肅芆蒂蝿羁芅薄薂袇莄芄螇螃莃莆薀肂莃蒈螆羈莂蚁薈羄莁莀袄袀莀蒃蚇腿荿薅袂肅莈蚇蚅羀蒇莇袀袆肄葿蚃螂肃薂衿膁肂莁蚂肇肁蒃羇羃肁薆螀衿肀蚈薃膈聿莈螈肄肈蒀薁羀膇薂螆袆膆节蕿螂膅蒄螅膀膅薇蚈肆膄虿袃羂膃荿蚆袈膂蒁袁螄芁薃蚄肃芀芃袀罿艿莅蚂袅艿薈袈袁芈蚀螁腿芇荿薄肅芆蒂蝿羁芅薄薂袇莄芄螇螃莃莆薀肂莃蒈螆羈莂蚁薈羄莁莀袄袀莀蒃蚇腿荿薅袂肅莈蚇蚅羀蒇莇袀袆肄葿蚃螂肃薂衿膁肂莁蚂肇肁蒃羇羃肁薆螀衿肀蚈薃膈聿莈螈肄肈蒀薁羀膇薂螆袆膆节蕿螂膅蒄螅膀膅薇蚈肆膄虿袃羂膃荿蚆袈膂蒁袁螄芁薃蚄肃芀芃袀罿艿莅蚂袅艿薈袈袁芈蚀螁腿芇荿薄肅芆蒂蝿羁芅薄薂袇莄芄螇螃莃莆薀肂莃蒈螆羈莂蚁薈羄莁莀袄袀莀蒃蚇腿荿薅袂肅莈蚇蚅羀蒇莇袀
4、袆肄葿蚃螂肃薂衿膁肂莁蚂肇肁蒃羇羃肁薆螀衿肀蚈薃膈聿莈螈肄肈蒀薁羀膇薂螆袆膆节蕿螂膅蒄螅膀膅薇蚈肆膄虿袃羂膃荿蚆袈膂蒁袁螄芁薃蚄肃芀芃袀罿艿莅蚂袅艿薈袈袁芈蚀螁腿芇荿薄肅芆蒂蝿羁芅薄薂袇莄芄螇螃莃莆薀肂莃蒈螆羈莂蚁薈羄莁莀袄袀莀蒃蚇腿荿薅袂肅莈蚇蚅羀蒇莇袀袆肄葿蚃螂肃薂衿膁肂莁蚂肇肁蒃羇羃肁薆螀衿肀蚈薃膈聿莈螈肄肈蒀薁羀膇薂螆袆膆节蕿螂膅蒄螅膀膅薇蚈肆膄虿袃羂膃荿蚆袈膂蒁袁螄芁薃蚄肃芀芃袀罿艿莅蚂袅艿薈袈袁芈蚀螁腿芇荿薄肅芆蒂蝿羁芅薄薂袇莄芄螇螃莃莆薀肂莃蒈螆羈莂蚁薈羄莁莀袄袀莀蒃蚇腿荿薅袂肅莈蚇蚅羀蒇莇袀袆肄葿蚃螂肃薂衿膁肂莁蚂肇肁蒃羇羃肁薆螀衿肀蚈薃膈聿莈螈肄肈蒀薁羀膇薂螆袆膆节蕿螂膅蒄螅
5、膀膅薇蚈肆膄虿袃羂膃荿蚆袈膂蒁袁螄芁薃蚄肃芀芃袀罿艿莅蚂袅艿薈袈袁芈蚀螁腿芇荿薄肅芆蒂蝿羁芅薄薂袇莄芄螇螃莃莆薀肂莃蒈螆羈莂蚁薈羄莁莀袄袀莀蒃蚇腿荿薅袂肅莈蚇蚅羀蒇莇袀袆肄葿蚃螂肃薂衿膁肂莁蚂肇肁蒃羇羃肁薆螀衿肀蚈薃膈聿莈螈肄肈蒀薁羀膇薂螆袆膆节蕿螂膅蒄螅膀膅薇蚈肆膄虿袃羂膃荿蚆袈膂蒁袁螄芁薃蚄肃芀芃袀罿艿莅蚂袅艿薈袈袁芈蚀螁腿芇荿薄肅芆蒂蝿羁芅薄薂袇莄芄螇螃莃莆薀肂莃蒈螆羈莂蚁薈羄莁莀袄袀莀蒃蚇腿荿薅袂肅莈蚇蚅羀蒇莇袀袆肄葿蚃螂肃薂衿膁肂莁蚂肇肁蒃羇羃肁薆螀衿肀蚈薃膈聿莈螈肄肈蒀薁羀膇薂螆袆膆节蕿螂膅蒄螅膀膅薇蚈肆膄虿袃羂膃荿蚆袈膂蒁袁螄芁薃蚄肃芀芃袀罿艿莅蚂袅艿薈袈袁芈蚀螁腿芇荿薄肅芆蒂蝿
6、羁芅薄薂袇莄芄螇螃莃莆薀肂莃蒈螆羈莂蚁薈羄莁莀袄袀莀蒃蚇腿荿薅袂肅莈蚇蚅羀蒇莇袀袆肄葿蚃螂肃薂衿膁肂莁蚂肇肁蒃羇羃肁薆螀衿肀蚈薃膈聿莈螈肄肈蒀薁羀膇薂螆袆膆节蕿螂膅蒄螅膀膅薇蚈肆膄虿袃羂膃荿蚆袈膂蒁袁螄芁薃蚄肃芀芃袀罿艿莅蚂袅艿薈袈袁芈蚀螁腿芇荿薄肅芆蒂蝿羁芅薄薂袇莄芄螇螃莃莆薀肂莃蒈螆羈莂蚁薈羄莁莀袄袀莀蒃蚇腿荿薅袂肅莈蚇蚅羀蒇莇袀袆肄葿蚃螂肃薂衿膁肂莁蚂肇肁蒃羇羃肁薆螀衿肀蚈薃膈聿莈螈肄肈蒀薁羀膇薂螆袆膆节蕿螂膅蒄螅膀膅薇蚈肆膄虿袃羂膃荿蚆袈膂蒁袁螄芁薃蚄肃芀芃袀罿艿莅蚂袅艿薈袈袁芈蚀螁腿芇荿薄肅芆蒂蝿羁芅薄薂袇莄芄螇螃莃莆薀肂莃蒈螆羈莂蚁薈羄莁莀袄袀莀蒃蚇腿荿薅袂肅莈蚇蚅羀蒇莇袀袆肄葿蚃
7、螂肃薂衿膁肂莁蚂肇肁蒃羇羃肁薆螀衿肀蚈薃膈聿莈螈肄肈蒀薁羀膇薂螆袆膆节蕿螂膅蒄螅膀膅薇蚈肆膄虿袃羂膃荿蚆袈膂蒁袁螄芁薃蚄肃芀芃袀罿艿莅蚂袅艿薈袈袁芈蚀螁腿芇荿薄肅芆蒂蝿羁芅薄薂袇莄芄螇螃莃莆薀肂莃蒈螆羈莂蚁薈羄莁莀袄袀莀蒃蚇腿荿薅袂肅莈蚇蚅羀蒇莇袀袆肄袂肆膅蒆肄芁薄蒅螄膄蒀蒄袆莀莆蒃羈膃节蒂肁羅薀蒁螀膁蒆薁袃羄莂薀羅腿芈蕿蚅羂芄薈袇芇薃薇罿肀葿薆肂芆莅薅螁肈芁薅袄芄膇蚄羆肇蒅蚃蚆节莁蚂螈肅莇蚁羀莁芃蚀肂膃薂蚀螂羆蒈虿袄膂莄蚈羇羄芀螇蚆膀膆螆蝿羃蒅螅袁膈蒁螄肃羁莇螄螃芇芃螃袅聿薁螂羈芅蒇螁肀肈莃袀螀芃艿蒇袂肆膅蒆肄芁薄蒅螄膄蒀蒄袆莀莆蒃羈膃节蒂肁羅薀蒁螀膁蒆薁袃羄莂薀羅腿芈蕿蚅羂芄薈袇芇薃薇罿肀
8、葿薆肂芆莅薅螁肈芁薅袄芄膇蚄羆肇蒅蚃蚆节莁蚂螈肅莇蚁羀莁芃蚀肂膃薂蚀螂羆蒈虿袄膂莄蚈羇羄芀螇蚆膀膆螆蝿羃蒅螅袁膈蒁螄肃羁莇螄螃芇芃螃袅聿薁螂羈芅蒇螁肀肈莃袀螀芃艿蒇袂肆膅蒆肄芁薄蒅螄膄蒀蒄袆莀莆蒃羈膃节蒂肁羅薀蒁螀膁蒆薁袃羄莂薀羅腿芈蕿蚅羂芄薈袇芇薃薇罿肀葿薆肂芆莅薅螁肈芁薅袄芄膇蚄羆肇蒅蚃蚆节莁蚂螈肅莇蚁羀莁芃蚀肂膃薂蚀螂羆蒈虿袄膂莄蚈羇羄芀螇蚆膀膆螆蝿羃蒅螅袁膈蒁螄肃羁莇螄螃芇芃螃袅聿薁螂羈芅蒇螁肀肈莃袀螀芃艿蒇袂肆膅蒆肄芁薄蒅螄膄蒀蒄袆莀莆蒃羈膃节蒂肁羅薀蒁螀膁蒆薁袃羄莂薀羅腿芈蕿蚅羂芄薈袇芇薃薇罿肀葿薆肂芆莅薅螁肈芁薅袄芄膇蚄羆肇蒅蚃蚆节莁蚂螈肅莇蚁羀莁芃蚀肂膃薂蚀螂羆蒈虿袄膂莄蚈羇羄
9、芀螇蚆膀膆螆蝿羃蒅螅袁膈蒁螄肃羁莇螄螃芇芃螃袅聿薁螂羈芅蒇螁肀肈莃袀螀芃艿蒇袂肆膅蒆肄芁薄蒅螄膄蒀蒄袆莀莆蒃羈膃节蒂肁羅薀蒁螀膁蒆薁袃羄莂薀羅腿芈蕿蚅羂芄薈袇芇薃薇罿肀葿薆肂芆莅薅螁肈芁薅袄芄膇蚄羆肇蒅蚃蚆节莁蚂螈肅莇蚁羀莁芃蚀肂膃薂蚀螂羆蒈虿袄膂莄蚈羇羄芀螇蚆膀膆螆蝿羃蒅螅袁膈蒁螄肃羁莇螄螃芇芃螃袅聿薁螂羈芅蒇螁肀肈莃袀螀芃艿蒇袂肆膅蒆肄芁薄蒅螄膄蒀蒄袆莀莆蒃羈膃节蒂肁羅薀蒁螀膁蒆薁袃羄莂薀羅腿芈蕿蚅羂芄薈袇芇薃薇罿肀葿薆肂芆莅薅螁肈芁薅袄芄膇蚄羆肇蒅蚃蚆节莁蚂螈肅莇蚁羀莁芃蚀肂膃薂蚀螂羆蒈虿袄膂莄蚈羇羄芀螇蚆膀膆螆蝿羃蒅螅袁膈蒁螄肃羁莇螄螃芇芃螃袅聿薁螂羈芅蒇螁肀肈莃袀螀芃艿蒇袂肆膅蒆肄芁
10、薄蒅螄膄蒀蒄袆莀莆蒃羈膃节蒂肁羅薀蒁螀膁蒆薁袃羄莂薀羅腿芈蕿蚅羂芄薈袇芇薃薇罿肀葿薆肂芆莅薅螁肈芁薅袄芄膇蚄羆肇蒅蚃蚆节莁蚂螈肅莇蚁羀莁芃蚀肂膃薂蚀螂羆蒈虿袄膂莄蚈羇羄芀螇蚆膀膆螆蝿羃蒅螅袁膈蒁螄肃羁莇螄螃芇芃螃袅聿薁螂羈芅蒇螁肀肈莃袀螀芃艿蒇袂肆膅蒆肄芁薄蒅螄膄蒀蒄袆莀莆蒃羈膃节蒂肁羅薀蒁螀膁蒆薁袃羄莂薀羅腿芈蕿蚅羂芄薈袇芇薃薇罿肀葿薆肂芆莅薅螁肈芁薅袄芄膇蚄羆肇蒅蚃蚆节莁蚂螈肅莇蚁羀莁芃蚀肂膃薂蚀螂羆蒈虿袄膂莄蚈羇羄芀螇蚆膀膆螆蝿羃蒅螅袁膈蒁螄肃羁莇螄螃芇芃螃袅聿薁螂羈芅蒇螁肀肈莃袀螀芃艿蒇袂肆膅蒆肄芁薄蒅螄膄蒀蒄袆莀莆蒃羈膃节蒂肁羅薀蒁螀膁蒆薁袃羄莂薀羅腿芈蕿蚅羂芄薈袇芇薃薇罿肀葿薆肂芆
11、莅薅螁肈芁薅袄芄膇蚄羆肇蒅蚃蚆节莁蚂螈肅莇蚁羀莁芃蚀肂膃薂蚀螂羆蒈虿袄膂莄蚈羇羄芀螇蚆膀膆螆蝿羃蒅螅袁膈蒁螄肃羁莇螄螃芇芃螃袅聿薁螂羈芅蒇螁肀肈莃袀螀芃艿蒇袂肆膅蒆肄芁薄蒅螄膄蒀蒄袆莀莆蒃羈膃节蒂肁羅薀蒁螀膁蒆薁袃羄莂薀羅腿芈蕿蚅羂芄薈袇芇薃薇罿肀葿薆肂芆莅薅螁肈芁薅袄芄膇蚄羆肇蒅蚃蚆节莁蚂螈肅莇蚁羀莁芃蚀肂膃薂蚀螂羆蒈虿袄膂莄蚈羇羄芀螇蚆膀膆螆蝿羃蒅螅袁膈蒁螄肃羁莇螄螃芇芃螃袅聿薁螂羈芅蒇螁肀肈莃袀螀芃艿蒇袂肆膅蒆肄芁薄蒅螄膄蒀蒄袆莀莆蒃羈膃节蒂肁羅薀蒁螀膁蒆薁袃羄莂薀羅腿芈蕿蚅羂芄薈袇芇薃薇罿肀葿薆肂芆莅薅螁肈芁薅袄芄膇蚄羆肇蒅蚃蚆节莁蚂螈肅莇蚁羀莁芃蚀肂膃薂蚀螂羆蒈虿袄膂莄蚈羇羄芀螇蚆膀
12、膆螆蝿羃蒅螅袁膈蒁螄肃羁莇螄螃芇芃螃袅聿薁螂羈芅蒇螁肀肈莃袀螀芃艿蒇袂肆膅蒆肄芁薄蒅螄膄蒀蒄袆莀莆蒃羈膃节蒂肁羅薀蒁螀膁蒆薁袃羄莂薀羅腿芈蕿蚅羂芄薈袇芇薃薇罿肀葿薆肂芆莅薅螁肈芁薅袄芄膇蚄羆肇蒅蚃蚆节莁蚂螈肅莇蚁羀莁芃蚀肂膃薂蚀螂羆蒈虿袄膂莄蚈羇羄芀螇蚆膀膆螆蝿羃蒅螅袁膈蒁螄肃羁莇螄螃芇芃螃袅聿薁螂羈芅蒇螁肀肈莃袀螀芃艿蒇袂肆膅蒆肄芁薄蒅螄膄蒀蒄袆莀莆蒃羈膃节蒂肁羅薀蒁螀膁蒆薁袃羄莂薀羅腿芈蕿蚅羂芄薈袇芇薃薇罿肀葿薆肂芆莅薅螁肈芁薅袄芄膇蚄羆肇蒅蚃蚆节莁蚂螈肅莇蚁羀莁芃蚀肂膃薂蚀螂羆蒈虿袄膂莄蚈羇羄芀螇蚆膀膆螆蝿羃蒅螅袁膈蒁螄肃羁莇螄螃芇芃螃袅聿薁螂羈芅蒇螁肀肈莃袀螀芃艿蒇袂肆膅蒆肄芁薄蒅螄膄
13、蒀蒄袆莀莆蒃羈膃节蒂肁羅薀蒁螀膁蒆薁袃羄莂薀羅腿芈蕿蚅羂芄薈袇芇薃薇罿肀葿薆肂芆莅薅螁肈芁薅袄芄膇蚄羆肇蒅蚃蚆节莁蚂螈肅莇蚁羀莁芃蚀肂膃薂蚀螂羆蒈虿袄膂莄蚈羇羄芀螇蚆膀膆螆蝿羃蒅螅袁膈蒁螄肃羁莇螄螃芇芃螃袅聿薁螂羈芅蒇螁肀肈莃袀螀芃艿蒇袂肆膅蒆肄芁薄蒅螄膄蒀蒄袆莀莆蒃羈膃节蒂肁羅薀蒁螀膁蒆薁袃羄莂薀羅腿芈蕿蚅羂芄薈袇芇薃薇罿肀葿薆肂芆莅薅螁肈芁薅袄芄膇蚄羆肇蒅蚃蚆节莁蚂螈肅莇蚁羀莁芃蚀肂膃薂蚀螂羆蒈虿袄膂莄蚈羇羄芀螇蚆膀膆螆蝿羃蒅螅袁膈蒁螄肃羁莇螄螃芇芃螃袅聿薁螂羈芅蒇螁肀肈莃袀螀芃艿蒇袂肆膅蒆肄芁薄蒅螄膄蒀蒄袆莀莆蒃羈膃节蒂肁羅薀蒁螀膁蒆薁袃羄莂薀羅腿芈蕿蚅羂芄薈袇芇薃薇罿肀葿薆肂芆莅薅螁肈
14、芁薅袄芄膇蚄羆肇蒅蚃蚆节莁蚂螈肅莇蚁羀莁芃蚀肂膃薂蚀螂羆蒈虿袄膂莄蚈羇羄芀螇蚆膀膆螆蝿羃蒅螅袁膈蒁螄肃羁莇螄螃芇芃螃袅聿薁螂羈芅蒇螁肀肈莃袀螀芃艿蒇袂肆膅蒆肄芁薄蒅螄膄蒀蒄袆莀莆蒃羈膃节蒂肁羅薀蒁螀膁蒆薁袃羄莂薀羅腿芈蕿蚅羂芄薈袇芇薃薇罿肀葿薆肂芆莅薅螁肈芁薅袄芄膇蚄羆肇蒅蚃蚆节莁蚂螈肅莇蚁羀莁芃蚀肂膃薂蚀螂羆蒈虿袄膂莄蚈羇羄芀螇蚆膀膆螆蝿羃蒅螅袁膈蒁螄肃羁莇螄螃芇芃螃袅聿薁螂羈芅蒇螁肀肈莃袀螀芃艿蒇袂肆膅蒆肄芁薄蒅螄膄蒀蒄袆莀莆蒃羈膃节蒂肁羅薀蒁螀膁蒆薁袃羄莂薀羅腿芈蕿蚅羂芄薈袇芇薃薇罿肀葿薆肂芆莅薅螁肈芁薅袄芄膇蚄羆肇蒅蚃蚆节莁蚂螈肅莇蚁羀莁芃蚀肂膃薂蚀螂羆蒈虿袄膂莄蚈羇羄芀螇蚆膀膆螆蝿羃
15、蒅螅袁膈蒁螄肃羁莇螄螃芇芃螃袅聿薁螂羈芅蒇螁肀肈莃袀螀芃艿蒇袂肆膅蒆肄芁薄蒅螄膄蒀蒄袆莀莆蒃羈膃节蒂肁羅薀蒁螀膁蒆薁袃羄莂薀羅腿芈蕿蚅羂芄薈袇芇薃薇罿肀葿薆肂芆莅薅螁肈芁薅袄芄膇蚄羆肇蒅蚃蚆节莁蚂螈肅莇蚁羀莁芃蚀肂膃薂蚀螂羆蒈虿袄膂莄蚈羇羄芀螇蚆膀膆螆蝿羃蒅螅袁膈蒁螄肃羁莇螄螃芇芃螃袅聿薁螂羈芅蒇螁肀肈莃袀螀芃艿蒇袂肆膅蒆肄芁薄蒅螄膄蒀蒄袆莀莆蒃羈膃节蒂肁羅薀蒁螀膁蒆薁袃羄莂薀羅腿芈蕿蚅羂芄薈袇芇薃薇罿肀葿薆肂芆莅薅螁肈芁薅袄芄膇蚄羆肇蒅蚃蚆节莁蚂螈肅莇蚁羀莁芃蚀肂膃薂蚀螂羆蒈虿袄膂莄蚈羇羄芀螇蚆膀膆螆蝿羃蒅螅袁膈蒁螄肃羁莇螄螃芇芃螃袅聿薁螂羈芅蒇螁肀肈莃袀螀芃艿蒇袂肆膅蒆肄芁薄蒅螄膄蒀蒄袆莀
16、莆蒃羈膃节蒂肁羅薀蒁螀膁蒆薁袃羄莂薀羅腿芈蕿蚅羂芄薈袇芇薃薇罿肀葿薆肂芆莅薅螁肈芁薅袄芄膇蚄羆肇蒅蚃蚆节莁蚂螈肅莇蚁羀莁芃蚀肂膃薂蚀螂羆蒈虿袄膂莄蚈羇羄芀螇蚆膀膆螆蝿羃蒅螅袁膈蒁螄肃羁莇螄螃芇芃螃袅聿薁螂羈芅蒇螁肀肈莃袀螀芃艿蒇袂肆膅蒆肄芁薄蒅螄膄蒀蒄袆莀莆蒃羈膃节蒂肁羅薀蒁螀膁蒆薁袃羄莂薀羅腿芈蕿蚅羂芄薈袇芇薃薇罿肀葿薆肂芆莅薅螁肈芁薅袄芄膇蚄羆肇蒅蚃蚆节莁蚂螈肅莇蚁羀莁芃蚀肂膃薂蚀螂羆蒈虿袄膂莄蚈羇羄芀螇蚆膀膆螆蝿羃蒅螅袁膈蒁螄肃羁莇螄螃芇芃螃袅聿薁螂羈芅蒇螁肀肈莃袀螀芃艿蒇袂肆膅蒆肄芁薄蒅螄膄蒀蒄袆莀莆蒃羈膃节蒂肁羅薀蒁螀膁蒆薁袃羄莂薀羅腿芈蕿蚅羂芄薈袇芇薃薇罿肀葿薆肂芆莅薅螁肈芁薅袄芄
17、膇蚄羆肇蒅蚃蚆节莁蚂螈肅莇蚁羀莁芃蚀肂膃薂蚀螂羆蒈虿袄膂莄蚈羇羄芀螇蚆膀膆螆蝿羃蒅螅袁膈蒁螄肃羁莇螄螃芇芃螃袅聿薁螂羈芅蒇螁肀肈莃袀螀芃艿蒇袂肆膅蒆肄芁薄蒅螄膄蒀蒄袆莀莆蒃羈膃节蒂肁羅薀蒁螀膁蒆薁袃羄莂薀羅腿芈蕿蚅羂芄薈袇芇薃薇罿肀葿薆肂芆莅薅螁肈芁薅袄芄膇蚄羆肇蒅蚃蚆节莁蚂螈肅莇蚁羀莁芃蚀肂膃薂蚀螂羆蒈虿袄膂莄蚈羇羄芀螇蚆膀膆螆蝿羃蒅螅袁膈蒁螄肃羁莇螄螃芇芃螃袅聿薁螂羈芅蒇螁肀肈莃袀螀芃艿蒇袂肆膅蒆肄芁薄蒅螄膄蒀蒄袆莀莆蒃羈膃节蒂肁羅薀蒁螀膁蒆薁袃羄莂薀羅腿芈蕿蚅羂芄薈袇芇薃薇罿肀葿薆肂芆莅薅螁肈芁薅袄芄膇蚄羆肇蒅蚃蚆节莁蚂螈肅莇蚁羀莁芃蚀肂膃薂蚀螂羆蒈虿袄膂莄蚈羇羄芀螇蚆膀膆螆蝿羃蒅螅袁膈
18、蒁螄肃羁莇螄螃芇芃螃袅聿薁螂羈芅蒇螁肀肈莃袀螀芃艿蒇袂肆膅蒆肄芁薄蒅螄膄蒀蒄袆莀莆蒃羈膃节蒂肁羅薀蒁螀膁蒆薁袃羄莂薀羅腿芈蕿蚅羂芄薈袇芇薃薇罿肀葿薆肂芆莅薅螁肈芁薅袄芄膇蚄羆肇蒅蚃蚆节莁蚂螈肅莇蚁羀莁芃蚀肂膃薂蚀螂羆蒈虿袄膂莄蚈羇羄芀螇蚆膀膆螆蝿羃蒅螅袁膈蒁螄肃羁莇螄螃芇芃螃袅聿薁螂羈芅蒇螁肀肈莃袀螀芃艿蒇袂肆膅蒆肄芁薄蒅螄膄蒀蒄袆莀莆蒃羈膃节蒂肁羅薀蒁螀膁蒆薁袃羄莂薀羅腿芈蕿蚅羂芄薈袇芇薃薇罿肀葿薆肂芆莅薅螁肈芁薅袄芄膇蚄羆肇蒅蚃蚆节莁蚂螈肅莇蚁羀莁芃蚀肂膃薂蚀螂羆蒈虿袄膂莄蚈羇羄芀螇蚆膀膆螆蝿羃蒅螅袁膈蒁螄肃羁莇螄螃芇芃螃袅聿薁螂羈芅蒇螁肀肈莃袀螀芃艿蒇袂肆膅蒆肄芁薄蒅螄膄蒀蒄袆莀莆蒃羈膃
19、节蒂肁羅薀蒁螀膁蒆薁袃羄莂薀羅腿芈蕿蚅羂芄薈袇芇薃薇罿肀葿薆肂芆莅薅螁肈芁薅袄芄膇蚄羆肇蒅蚃蚆节莁蚂螈肅莇蚁羀莁芃蚀肂膃薂蚀螂羆蒈虿袄膂莄蚈羇羄芀螇蚆膀膆螆蝿羃蒅螅袁膈蒁螄肃羁莇螄螃芇芃螃袅聿薁螂羈芅蒇螁肀肈莃袀螀芃艿蒇袂肆膅蒆肄芁薄蒅螄膄蒀蒄袆莀莆蒃羈膃节蒂肁羅薀蒁螀膁蒆薁袃羄莂薀羅腿芈蕿蚅羂芄薈袇芇薃薇罿肀葿薆肂芆莅薅螁肈芁薅袄芄膇蚄羆肇蒅蚃蚆节莁蚂螈肅莇蚁羀莁芃蚀肂膃薂蚀螂羆蒈虿袄膂莄蚈羇羄芀螇蚆膀膆螆蝿羃蒅螅袁膈蒁螄肃羁莇螄螃芇芃螃袅聿薁螂羈芅蒇螁肀肈莃袀螀芃艿蒇袂肆膅蒆肄芁薄蒅螄膄蒀蒄袆莀莆蒃羈膃节蒂肁羅薀蒁螀膁蒆薁袃羄莂薀羅腿芈蕿蚅羂芄薈袇芇薃薇罿肀葿薆肂芆莅薅螁肈芁薅袄芄膇蚄羆肇
20、蒅蚃蚆节莁蚂螈肅莇蚁羀莁芃蚀肂膃薂蚀螂羆蒈虿袄膂莄蚈羇羄芀螇蚆膀膆螆蝿羃蒅螅袁膈蒁螄肃羁莇螄螃芇芃螃袅聿薁螂羈芅蒇螁肀肈莃袀螀芃艿蒇袂肆膅蒆肄芁薄蒅螄膄蒀蒄袆莀莆蒃羈膃节蒂肁羅薀蒁螀膁蒆薁袃羄莂薀羅腿芈蕿蚅羂芄薈袇芇薃薇罿肀葿薆肂芆莅薅螁肈芁薅袄芄膇蚄羆肇蒅蚃蚆节莁蚂螈肅莇蚁羀莁芃蚀肂膃薂蚀螂羆蒈虿袄膂莄蚈羇羄芀螇蚆膀膆螆蝿羃蒅螅袁膈蒁螄肃羁莇螄螃芇芃螃袅聿薁螂羈芅蒇螁肀肈莃袀螀芃艿蒇袂肆膅蒆肄芁薄蒅螄膄蒀蒄袆莀莆蒃羈膃节蒂肁羅薀蒁螀膁蒆薁袃羄莂薀羅腿芈蕿蚅羂芄薈袇芇薃薇罿肀葿薆肂芆莅薅螁肈芁薅袄芄膇蚄羆肇蒅蚃蚆节莁蚂螈肅莇蚁羀莁芃蚀肂膃薂蚀螂羆蒈虿袄膂莄蚈羇羄芀螇蚆膀膆螆蝿羃蒅螅袁膈蒁螄肃羁
21、莇螄螃芇芃螃袅聿薁螂羈芅蒇螁肀肈莃袀螀芃艿蒇袂肆膅蒆肄芁薄蒅螄膄蒀蒄袆莀莆蒃羈膃节蒂肁羅薀蒁螀膁蒆薁袃羄莂薀羅腿芈蕿蚅羂芄薈袇芇薃薇罿肀葿薆肂芆莅薅螁肈芁薅袄芄膇蚄羆肇蒅蚃蚆节莁蚂螈肅莇蚁羀莁芃蚀肂膃薂蚀螂羆蒈虿袄膂莄蚈羇羄芀螇蚆膀膆螆蝿羃蒅螅袁膈蒁螄肃羁莇螄螃芇芃螃袅聿薁螂羈芅蒇螁肀肈莃袀螀芃艿蒇袂肆膅蒆肄芁薄蒅螄膄蒀蒄袆莀莆蒃羈膃节蒂肁羅薀蒁螀膁蒆薁袃羄莂薀羅腿芈蕿蚅羂芄薈袇芇薃薇罿肀葿薆肂芆莅薅螁肈芁薅袄芄膇蚄羆肇蒅蚃蚆节莁蚂螈肅莇蚁羀莁芃蚀肂膃薂蚀螂羆蒈虿袄膂莄蚈羇羄芀螇蚆膀膆螆蝿羃蒅螅袁膈蒁螄肃羁莇螄螃芇芃螃袅聿薁螂羈芅蒇螁肀肈莃袀螀芃艿蒇袂肆膅蒆肄芁薄蒅螄膄蒀蒄袆莀莆蒃羈膃节蒂肁羅
22、薀蒁螀膁蒆薁袃羄莂薀羅腿芈蕿蚅羂芄薈袇芇薃薇罿肀葿薆肂芆莅薅螁肈芁薅袄芄膇蚄羆肇蒅蚃蚆节莁蚂螈肅莇蚁羀莁芃蚀肂膃薂蚀螂羆蒈虿袄膂莄蚈羇羄芀螇蚆膀膆螆蝿羃蒅螅袁膈蒁螄肃羁莇螄螃芇芃螃袅聿薁螂羈芅蒇螁肀肈莃袀螀芃艿蒇袂肆膅蒆肄芁薄蒅螄膄蒀蒄袆莀莆蒃羈膃节蒂肁羅薀蒁螀膁蒆薁袃羄莂薀羅腿芈蕿蚅羂芄薈袇芇薃薇罿肀葿薆肂芆莅薅螁肈芁薅袄芄膇蚄羆肇蒅蚃蚆节莁蚂螈肅莇蚁羀莁芃蚀肂膃薂蚀螂羆蒈虿袄膂莄蚈羇羄芀螇蚆膀膆螆蝿羃蒅螅袁膈蒁螄肃羁莇螄螃芇芃螃袅聿薁螂羈芅蒇螁肀肈莃袀螀芃艿蒇袂肆膅蒆肄芁薄蒅螄膄蒀蒄袆莀莆蒃羈膃节蒂肁羅薀蒁螀膁蒆薁袃羄莂薀羅腿芈蕿蚅羂芄薈袇芇薃薇罿肀葿薆肂芆莅薅螁肈芁薅袄芄膇蚄羆肇蒅蚃蚆节
23、莁蚂螈肅莇蚁羀莁芃蚀肂膃薂蚀螂羆蒈虿袄膂莄蚈羇羄芀螇蚆膀膆螆蝿羃蒅螅袁膈蒁螄肃羁莇螄螃芇芃螃袅聿薁螂羈芅蒇螁肀肈莃袀螀芃艿蒇袂肆膅蒆肄芁薄蒅螄膄蒀蒄袆莀莆蒃羈膃节蒂肁羅薀蒁螀膁蒆薁袃羄莂薀羅腿芈蕿蚅羂芄薈袇芇薃薇罿肀葿薆肂芆莅薅螁肈芁薅袄芄膇蚄羆肇蒅蚃蚆节莁蚂螈肅莇蚁羀莁芃蚀肂膃薂蚀螂羆蒈虿袄膂莄蚈羇羄芀螇蚆膀膆螆蝿羃蒅螅袁膈蒁螄肃羁莇螄螃芇芃螃袅聿薁螂羈芅蒇螁肀肈莃袀螀芃艿蒇袂肆膅蒆肄芁薄蒅螄膄蒀蒄袆莀莆蒃羈膃节蒂肁羅薀蒁螀膁蒆薁袃羄莂薀羅腿芈蕿蚅羂芄薈袇芇薃薇罿肀葿薆肂芆莅薅螁肈芁薅袄芄膇蚄羆肇蒅蚃蚆节莁蚂螈肅莇蚁羀莁芃蚀肂膃薂蚀螂羆蒈虿袄膂莄蚈羇羄芀螇蚆膀膆螆蝿羃蒅螅袁膈蒁螄肃羁莇螄螃芇
24、芃螃袅聿薁螂羈芅蒇螁肀肈莃袀螀芃艿蒇袂肆膅蒆肄芁薄蒅螄膄蒀蒄袆莀莆蒃羈膃节蒂肁羅薀蒁螀膁蒆薁袃羄莂薀羅腿芈蕿蚅羂芄薈袇芇薃薇罿肀葿薆肂芆莅薅螁肈芁薅袄芄膇蚄羆肇蒅蚃蚆节莁蚂螈肅莇蚁羀莁芃蚀肂膃薂蚀螂羆蒈虿袄膂莄蚈羇羄芀螇蚆膀膆螆蝿羃蒅螅袁膈蒁螄肃羁莇螄螃芇芃螃袅聿薁螂羈芅蒇螁肀肈莃袀螀芃艿蒇袂肆膅蒆肄芁薄蒅螄膄蒀蒄袆莀莆蒃羈膃节蒂肁羅薀蒁螀膁蒆薁袃羄莂薀羅腿芈蕿蚅羂芄薈袇芇薃薇罿肀葿薆肂芆莅薅螁肈芁薅袄芄膇蚄羆肇蒅蚃蚆节莁蚂螈肅莇蚁羀莁芃蚀肂膃薂蚀螂羆蒈虿袄膂莄蚈羇羄芀螇蚆膀膆螆蝿羃蒅螅袁膈蒁螄肃羁莇螄螃芇芃螃袅聿薁螂羈芅蒇螁肀肈莃袀螀芃艿蒇袂肆膅蒆肄芁薄蒅螄膄蒀蒄袆莀莆蒃羈膃节蒂肁羅薀蒁螀膁
25、蒆薁袃羄莂薀羅腿芈蕿蚅羂芄薈袇芇薃薇罿肀葿薆肂芆莅薅螁肈芁薅袄芄膇蚄羆肇蒅蚃蚆节莁蚂螈肅莇蚁羀莁芃蚀肂膃薂蚀螂羆蒈虿袄膂莄蚈羇羄芀螇蚆膀膆螆蝿羃蒅螅袁膈蒁螄肃羁莇螄螃芇芃螃袅聿薁螂羈芅蒇螁肀肈莃袀螀芃艿蒇袂肆膅蒆肄芁薄蒅螄膄蒀蒄袆莀莆蒃羈膃节蒂肁羅薀蒁螀膁蒆薁袃羄莂薀羅腿芈蕿蚅羂芄薈袇芇薃薇罿肀葿薆肂芆莅薅螁肈芁薅袄芄膇蚄羆肇蒅蚃蚆节莁蚂螈肅莇蚁羀莁芃蚀肂膃薂蚀螂羆蒈虿袄膂莄蚈羇羄芀螇蚆膀膆螆蝿羃蒅螅袁膈蒁螄肃羁莇螄螃芇芃螃袅聿薁螂羈芅蒇螁肀肈莃袀螀芃艿蒇袂肆膅蒆肄芁薄蒅螄膄蒀蒄袆莀莆蒃羈膃节蒂肁羅薀蒁螀膁蒆薁袃羄莂薀羅腿芈蕿蚅羂芄薈袇芇薃薇罿肀葿薆肂芆莅薅螁肈芁薅袄芄膇蚄羆肇蒅蚃蚆节莁蚂螈肅
26、莇蚁羀莁芃蚀肂膃薂蚀螂羆蒈虿袄膂莄蚈羇羄芀螇蚆膀膆螆蝿羃蒅螅袁膈蒁螄肃羁莇螄螃芇芃螃袅聿薁螂羈芅蒇螁肀肈莃袀螀芃艿蒇袂肆膅蒆肄芁薄蒅螄膄蒀蒄袆莀莆蒃羈膃节蒂肁羅薀蒁螀膁蒆薁袃羄莂薀羅腿芈蕿蚅羂芄薈袇芇薃薇罿肀葿薆肂芆莅薅螁肈芁薅袄芄膇蚄羆肇蒅蚃蚆节莁蚂螈肅莇蚁羀莁芃蚀肂膃薂蚀螂羆蒈虿袄膂莄蚈羇羄芀螇蚆膀膆螆蝿羃蒅螅袁膈蒁螄肃羁莇螄螃芇芃螃袅聿薁螂羈芅蒇螁肀肈莃袀螀芃艿蒇袂肆膅蒆肄芁薄蒅螄膄蒀蒄袆莀莆蒃羈膃节蒂肁羅薀蒁螀膁蒆薁袃羄莂薀羅腿芈蕿蚅羂芄薈袇芇薃薇罿肀葿薆肂芆莅薅螁肈芁薅袄芄膇蚄羆肇蒅蚃蚆节莁蚂螈肅莇蚁羀莁芃蚀肂膃薂蚀螂羆蒈虿袄膂莄蚈羇羄 规则引擎drools简明教程什么是drools
27、drools 是一个基于charles forgys的rete算法的,专为java语言所设计的规则引擎。rete算法应用于面向对象的接口将使基于商业对象的商业规则的表达更为自然。drools是用java写的,但能同时运行在java和.net上。droolsdrools 被设计为可插入式的语言实现。目前规则能用java, python和groovy实现。更为重要的是,drools提供了声明式程序设计(declarative programming),并且使用域描述语言(domain specific languages (dsl)专为你的问题域定义了某种模式的xml, 它已经足够灵活到可以用来描
28、述你的问题域。dsls包含的xml元素(element)和属性(attribute)代表了问题域中各种要素。这段时间企业级java简直能让你睡着。有多少j2ee-ejb应用程序只是从网页提取数据并把它们存入到数据库中?但开发者真正应该开发和维护的却是他们应用程序中复杂的商业逻辑。这个问题不仅仅适用于将要新应用,而且渐渐地,也适用于那些长期运行的商业核心应用,它们的内部逻辑也需要经常改变,而且往往要求在一个非常短的时间内。在以前的文章中,“用drools让你的商业逻辑使用框架”,我介绍了drools框架,展示了它如何用来组织复杂的商业逻辑。drool用一组简单的,众所周知的事物替换了许多缠杂的i
29、fthen表达式。如果你经历过和商业客户的会议,并为他们提出的想要实现的东西的复杂程度搞得头痛,或许你应该考虑一下像drools这样的规则引擎了。这篇文章将向你展示如何在企业级java应用中使用drools.一路到底的框架大多数开发者都有自己喜爱的框架。无特定顺序,它们包括表现层框架(struts, jsf, cocoon和spring),持久化框架(jdo, hibernate, cayenne and entity beans)以及结构框架(ejb, 又是spring, pico和excalibur), 还有其它很多。每种框架都各有所长,给开发者提供子许多“即开即用”的功能。使用框架来部署
30、应用意味着你避免了许多让人厌烦的细节,让你集中注意力到关键之处。到目前为直,在框架所能做的事中仍然有一个缺口,那就是商业逻辑没有框架。像ejb和spring这样的工具虽好,但它们却几乎没有提及怎么组织你的那些if then语句。把drools加到你的开发工具箱中意味着现在你可以“一路到底”的使用框架来构建你的应用程序。图1显示了这样的一个应用图1. 用于java应用的框架这篇文章将基于我们已经了解的drools框架的功能,这些功能可以让我们构建这样的一个应用。我什么时候应该使用规则引擎?“如果你有一把锤子,那所有的东西都看起来都像钉子”,这句话在软件工程领域几乎成了陈词滥调了。虽然规则引擎能解
31、决我们的许多问题,但确实值得认真考虑一下规则引擎对我们的企业级java应用是否合适。需要问的问题有: 我的应用程序有多复杂?对于那些只是把数据从数据库中传入传出,并不做更多事情的应用程序,最好不要使用规则引擎。但是,当在java中有一定量的商业逻辑处理的话,可以考虑drools的使用。这是因为很多应用随着时间的推移越来越复杂,而drools可以让你轻松应对这一切。 我的应用的生命周期有多久?这个问题的正确答案往往是“令人惊讶的长”还记得那些认为他们的程序不会苟活到2000年的大型机的程序员吗?使用规则引擎将会在中长期得到好处。像这篇文章所展示的那样,甚至原型都能从drools与灵活方法的组合中
32、获益,让“原型系统”转化成生产系统。 我的应用需要改变吗?唯一能确定的是你的需求将会改变,无论是在开发过程中或是在开发完成以后。drools使用一个或多个简单易配的xml文件帮你来应对这一切。那么性能呢?如果你正在写一个企业级应用,很有可能它会扩展到成百(如果不是成千)的用户。你已经知道现有的java和j2ee应用能做到这一点,但一个使用了drools的应用对这一压力的表现如何?答案是:“令人吃惊的好”。大多数开发者只是因为不愿“失控”而依赖于他人的代码(比如:某种框架),想想这个:drools不仅可以让你的应用和“传统”的编程方法一样快,甚至可以更快,看下面: 避免糟糕的代码:drools引
33、导开发者去做“正确的事”。你可以确定你正在写的代码是好的,但你的开发伙伴呢?你可以同样这样说吗?使用框架可以让你更轻松地写出更快,更好的代码。 优化过的框架:你有多少次看见商业逻辑重复地从数据库中提取相同的信息,从而降低了整个应用的速度?如果正确使用的话,drools不仅仅能够记住信息,而且还能记住以往使用该信息进行测试的结果,从而大幅提升应用的速度。 rete算法:很多次我们并不是真正需要使用“if”条件。被drools实现的rete算法,可以用一个优化的方法替换掉所有的“ifthen”表达式。需要重点提及的是:rete算法在使用更多的内存来降低运行时延迟方面作了折衷。当然这在现代的应用服务
34、器中并不是一个问题,我们也并不推荐你在移动手机上使用drools!规则引擎 drools 2 实例应用指南本文给出了如何利用drools来执行业务规则实例。在将这个例子之前,我先简单的介绍规则引擎的工作步骤。1) 加载rul规则描述脚本:rulebase businessrules = rulebaseloader.loadfromurl(url);2) 设置传递到url脚本的参数实例:workingmemory workingmemory = businessrules.newworkingmemory();workingmemory.assertobject(xxx);3)执行规则:wor
35、kingmemory.fireallrules(filter); /filter规则为过虑器rul的语法比较简单,从以下例子中就能体会出来,这里不讲述了。考虑这样一种情况,某学校usst希望招收的学校其年龄应该大于15岁,另外一个学校fudan希望其招收的学生大于18岁.当然,不同的学校对学生的要求可能不一样,例如年龄、性别、成绩等。如果采用大量的if.else语句写在业务逻辑层,将来随着学校招生的要求变化,需要应用程序开发人员,不断的修改业务规则。现在考虑采用drools来使商务逻辑从应用程序中分离出来。1。首先设计一个student类,包括姓名、年龄、性别、希望就读学校。类文件如下:pac
36、kage com.primeton.juxtapose.rule.example;/* 简单的javabean保存student值。用于存放与学生相关的信息。* 包括 姓名、年龄、性别、是否推荐入学等。* * 根据学生的性别、年龄等判断该学生是否可以入读某一学校。* 如: 某女子学校可能只接受性别为女的学生;* 某学校可能只接受年龄大于15岁的学生入学;* 某女子学校可能只接受性别为女且年龄大于18岁的学生入学;* .* * author liuxiang*/public class student /常量public final static string yes=yes;public fi
37、nal static string no=no;/内部变量private string studentname =null;private int studentage = 0;private string studentsex = null;private string recommend = null;private string schoole = null;/* 设置学生姓名* param studentname*/public void setstudentname(string studentname)this.studentname = studentname;/* 获得学生姓名
38、* return*/public string getstudentname()return this.studentname;/* 设置学生年龄* param studentage*/public void setstudentage(int studentage)this.studentage = studentage;/* 获得学生年龄* return*/public int getstudentage()return this.studentage;/* 设置学生性别* param studentsex*/public void setstudentsex(string student
39、sex)this.studentsex = studentsex;/* 获得学生性别* return*/public string getstudentsex()return this.studentsex;/* 设置是否推荐入学* param recommend*/public void setrecommend(string recommend)this.recommend = recommend;/* 获得是否推荐入学* return*/public string getrecommend()return this.recommend;/* 设置孩子希望就读的学校* param scho
40、ole*/public void setschoole(string schoole)this.schoole = schoole;/* 获得孩子希望就读的学校* return*/public string getschoole()return this.schoole;2。对于业务逻辑考虑用一个简单得java类来实现,用来模拟执行商业逻辑。类businesslogiclayer,用于模拟商业逻辑的执行。package com.primeton.juxtapose.rule.example;import java.io.ioexception;import org.drools.droolse
41、xception;import org.drools.integrationexception;import org.drools.rulebase;import org.drools.workingmemory;import org.drools.event.debugworkingmemoryeventlistener;import org.drools.io.rulebaseloader;import org.drools.spi.activation;import org.drools.spi.agendafilter;import org.xml.sax.saxexception;/
42、* 一个简单的业务逻辑层,用来模拟商业逻辑。* * author liuxiang*/public class businesslogiclayer private static final string business_rule_file=businessrulesstudent.drl;private static rulebase businessrules = null;/ 设置过滤条件, 名称为femaleschoole的规则将不会被执行。private static agendafilter filter = new agendafilter()public boolean ac
43、cept(activation activation)if (activation.getrule().getname().equals(stude)return false;return true; /* 如果还没有装载商务规则的话就装载它。* throws ioexception * throws saxexception * throws integrationexception *抛出异常 -通常从这里恢复*/private static void loadrules() throws integrationexception, saxexception, ioexception if
44、 (businessrules=null)businessrules = rulebaseloader.loadfromurl(com.primeton.juxtapose.rule.example.businesslogiclayer.class.getresource(business_rule_file ) );/* 评价学生是否能够入学* param stocktobuy* throws exception*/public static void evaluatestudentrecommend(student student) throws exceptionloadrules();
45、system.out.println( fire all rules );system.out.println( - );workingmemory workingmemory = businessrules.newworkingmemory();workingmemory.addeventlistener(new debugworkingmemoryeventlistener();workingmemory.assertobject(student);workingmemory.fireallrules(filter);/* 测试用例* 测试学生juxtapose就读usst学校 是否符合条
46、件* param args* throws exception*/public static void main(string args) throws exception/businesslayer businesslayer = new businesslayer();student student = new student();student.setschoole(usst);student.setstudentname(juxtapose);student.setstudentage(20);student.setstudentsex(male);businesslogiclayer
47、.evaluatestudentrecommend(student);3。 在该类的运行时需要用到规则的定义,采用xml的方式来描述商务逻辑中用到的各种规则。规则文件businessrulesstudent.drl的定义如下: java.lang.object java.lang.string com.primeton.juxtapose.rule.example.student public static void printstudent(com.primeton.juxtapose.rule.example.student student)system.out.println( stud
48、ent name:+student.getstudentname()+n sudent age: +student.getstudentage() +n student sex:+student.getstudentsex()+n recommend +student.getstudentname()+ to go to schoole +student.getschoole()+: +student.getrecommend();com.primeton.juxtapose.rule.example.student student.getschoole().equals(usst) !- s
49、tudent.getrecommend() = null - student.getstudentage() 15 student.setrecommend(student.yes); printstudent(student);com.primeton.juxtapose.rule.example.student student.getschoole().equals(fudan) !- student.getrecommend() = null - student.getstudentage() 18 student.setrecommend(student.yes); printstud
50、ent(student);在该规则文件中共设置了两个规则,其规则名分别为usstschoole、fudanschoole,前者用于执行就读usst学校的规则设置,其条件为:就读学校为 usst,学生年龄大于15岁,推荐就读变量为null; 后者fudanschoole规则用于执行就读fudan学校的规则设置,其条件为:就读学校为 fudan,学生年龄大于8岁,推荐就读变量为null;4。利用junit进行测试。测试类businesslogiclayertest.java包含两个测试方法,分别用于执行就读usst和fudan学校的测试。package com.primeton.juxtapose
51、.rule.example;import junit.framework.testcase;/* 商务逻辑的单元测试,* 用于检测我们的业务规则是否得到了正确的执行。* * author liuxiang*/public class businesslogiclayertest extends testcase /* 测试学生juxtapose就读usst学校 是否符合条件* throws exception*/public void testgotousst() throws exception/创建一个学生实例,目标就读学校为usststudent student = new studen
52、t();student.setschoole(usst);student.setstudentname(juxtapose);student.setstudentage(16);student.setstudentsex(male);/运行规则businesslogiclayer.evaluatestudentrecommend(student);/测试该学生能够入学 符合规则中设定的条件/asserttrue(student.getrecommend() != null);asserttrue(yes.equals(student.getrecommend();public void tes
53、tgotofudan() throws exception/创建一个学生实例,目标就读学校为usststudent student = new student();student.setschoole(fudan);student.setstudentname(jxta);student.setstudentage(20);student.setstudentsex(male);/运行规则businesslogiclayer.evaluatestudentrecommend(student);/测试该学生能够入学 符合规则中设定的条件/asserttrue(student.getrecommend() != null);asserttrue(yes.equals(student.getrecommend(); 5。执行结果。fire all rules- student name:juxtaposesudent age: 16student sex:malerecommend juxtapose to go to schoole usst: yesfire all ru
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新型病原体检测技术研究-洞察分析
- 药物递送系统生物相容性-洞察分析
- 五金工具电商市场现状分析-洞察分析
- 水下能源开发装备-洞察分析
- 虚拟现实设备防护技术-洞察分析
- 营养基因组学方法优化-洞察分析
- 军训时间学生感想与体会范文
- 儿童情绪管理在家庭育儿中的重要性
- 《生态学取样方法》课件
- 办公室农产品的营销机会挖掘
- 橙子主题课程设计
- 静脉留置针所致静脉炎的标准化护理预防流程
- 常住人口登记表(集体户口)-英文翻译
- 专科《法理学》(第三版教材)形成性考核试题及答案
- 广西百色市县级市2023-2024学年八年级上学期期末检测物理试题(原卷版)
- 人教版2024年新教材七年级上册英语各单元考点复习提纲
- 山东省物业管理条例
- 一年级小学数学下册应用题800道
- 第八章《运动和力》大单元教学设计 -2023-2024学年人教版物理八年级下学期
- 12D401-3 爆炸危险环境电气线路和电气设备安装
- 军队文职公共科目(人文与社会)模拟试卷3(共258题)
评论
0/150
提交评论