#include "util.h" int jd_check_bom_use(EPM_rule_message_t msg) { POM_AM__set_application_bypass(true); tag_t root_task, *attachments; int att_cnt; //获得根节点 EPM_ask_root_task(msg.task, &root_task); //获得根任务下的组件 EPM_ask_attachments(root_task, EPM_target_attachment, &att_cnt, &attachments); //判断参数是否符合要求 char *object_string; std::string names = ""; int BOMytNum = 0; for (int i = 0; i < att_cnt; i++) { if (isTypeOf(attachments[i], "ItemRevision")) { //获取版本表单 int form_att; tag_t *forms; AOM_ask_value_tags(attachments[i], "IMAN_master_form_rev", &form_att, &forms); //拿到指定参数判断参数值 if (form_att == 0) { continue; } //判断版本表单属性 jd2_BOMyt 是否为空 char *BOMyt; AOM_ask_value_string(forms[0], "jd2_BOMyt", &BOMyt); if ((strcmp(BOMyt, "") != 0) && BOMyt != NULL) { continue; } else { //如果存在 BOM用途没填写的,打一个标记,并记录所有没有填写的对象 BOMytNum = -1; AOM_ask_value_string(attachments[i], "object_string", &object_string); names.append(object_string); names.append(";"); } } } if (BOMytNum == -1) { std::string massage = "BOM用途未填写,不予许发起流程"; names.append(massage); const char *p = names.c_str(); cout << "Exception:" << p << endl; POM_AM__set_application_bypass(false); return EMH_store_error_s1(EMH_severity_error, EMH_IDGENERATION_ERROR_BASE, p); } POM_AM__set_application_bypass(false); return EPM_go; }