diff --git a/HEZON_ITK.VC.db b/HEZON_ITK.VC.db
index d662205..ab172e8 100644
Binary files a/HEZON_ITK.VC.db and b/HEZON_ITK.VC.db differ
diff --git a/HEZON_ITK/HEZON_ITK.vcxproj b/HEZON_ITK/HEZON_ITK.vcxproj
index c3b813b..491fc5b 100644
--- a/HEZON_ITK/HEZON_ITK.vcxproj
+++ b/HEZON_ITK/HEZON_ITK.vcxproj
@@ -153,16 +153,22 @@
+
+
+
+
+
+
diff --git a/HEZON_ITK/HEZON_ITK.vcxproj.filters b/HEZON_ITK/HEZON_ITK.vcxproj.filters
index 4b31baf..a413b68 100644
--- a/HEZON_ITK/HEZON_ITK.vcxproj.filters
+++ b/HEZON_ITK/HEZON_ITK.vcxproj.filters
@@ -49,6 +49,21 @@
epm-handler
+
+ epm-handler
+
+
+ epm-handler
+
+
+ epm-handler
+
+
+ epm-handler
+
+
+ epm-handler
+
@@ -57,5 +72,8 @@
epm-handler
+
+ epm-handler
+
\ No newline at end of file
diff --git a/HEZON_ITK/bs_bom_check.cpp b/HEZON_ITK/bs_bom_check.cpp
new file mode 100644
index 0000000..5ccf513
--- /dev/null
+++ b/HEZON_ITK/bs_bom_check.cpp
@@ -0,0 +1,79 @@
+#include "util.h"
+
+boolean judge(tag_t top,string &status,string &name)
+{
+ int line_cnt;
+ tag_t *lines;
+ char *val;
+ BOM_line_ask_child_lines(top, &line_cnt, &lines);
+ for (int j = 0; j < line_cnt; j++)
+ {
+ AOM_UIF_ask_value(lines[j], "jd2_last_release_status", &val);
+ printf("status:%s\n", val);
+ string temp = val;
+ if (temp.length()>0&&status.find(val) != -1)
+ {
+ AOM_ask_value_string(lines[j], "bl_rev_object_string", &val);
+ name = val;
+ return false;
+ }
+ if (!judge(lines[j], status, name))
+ return false;
+ }
+ return true;
+}
+
+int bs_bom_check(EPM_rule_message_t msg)
+{
+ int ifail = EPM_go, att_count, line_cnt;
+ tag_t rootTask, *attachments, win, top, *lines;
+ char *val;
+ EPM_ask_root_task(msg.task, &rootTask);
+
+ EPM_ask_attachments(rootTask, EPM_target_attachment, &att_count, &attachments);
+ TC_argument_list_t * arguments = msg.arguments;
+ int arg_cnt = TC_number_of_arguments(arguments), status = 0;
+ vector types;
+ string name;
+ map paras;
+ for (auto i = 0; i < arg_cnt; i++)
+ {
+ char *temp_key, *temp_val;
+ ITK_ask_argument_named_value(TC_next_argument(arguments), &temp_key, &temp_val);
+ paras[temp_key] = temp_val;
+
+ }
+ split(paras["type"].c_str(),",", &types);
+ printf("check status:%s\n", paras["status"].c_str());
+ BOM_create_window(&win);
+ for (int i = 0; i < att_count; i++)
+ {
+ bool pass = false;
+ for (int j = 0; j < types.size(); j++)
+ {
+ if (isTypeOf(attachments[i], types[j].c_str()))
+ {
+ pass = true;
+ break;
+ }
+ }
+ if (!pass)
+ continue;
+ printf("begin check \n");
+ BOM_set_window_top_line(win, NULLTAG, attachments[i], NULLTAG, &top);
+ if(!judge(top, paras["status"],name))
+ {
+ ifail = EPM_nogo;
+ break;
+ }
+ printf("end check \n");
+
+ }
+ BOM_close_window(win);
+ if (ifail==EPM_nogo) {
+ name += paras["prompt"];
+ EMH_store_error_s1(EMH_severity_user_error, EMH_PROP_error_base, name.c_str());
+ }
+ return ifail;
+}
+
diff --git a/HEZON_ITK/bs_bom_save_check.cpp b/HEZON_ITK/bs_bom_save_check.cpp
new file mode 100644
index 0000000..0a197a9
--- /dev/null
+++ b/HEZON_ITK/bs_bom_save_check.cpp
@@ -0,0 +1,62 @@
+#include "util.h"
+
+boolean save_judge(tag_t top,string &check,string &name,vector &type_vec)
+{
+ int line_cnt;
+ tag_t *lines;
+ BOM_line_ask_child_lines(top, &line_cnt, &lines);
+ char *val;
+ for (int i = 0; i type_vec(type_val,type_val+type_cnt);
+
+ check = check_val;
+ BOM_ask_window_top_line(win, &top);
+ if (!save_judge(top, check, name,type_vec)) {
+ ifail = 1;
+ name += "¶ÔÏóΪ¶³½á״̬»òδ·¢²¼£¬²»Äܱ£´æBOM!";
+ EMH_store_error_s1(EMH_severity_user_error, EMH_PROP_error_base, name.c_str());
+ }
+
+ printf("bs_bom_save_check end11\n");
+
+ return ifail;
+}
+
diff --git a/HEZON_ITK/bs_sap.cpp b/HEZON_ITK/bs_sap.cpp
index 267ee92..4023004 100644
--- a/HEZON_ITK/bs_sap.cpp
+++ b/HEZON_ITK/bs_sap.cpp
@@ -1,97 +1,4 @@
-#include "epm_handler_common.h"
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include "tc/envelope.h"
-#include
-#include "ae/dataset.h"
-#include
-#include
-#include
-#include
-#include
-#include