#include "util.h" int jd_check_ID_wllx(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); //判断参数是否符合要求 bool isTransit = true; std::string names = "ID:{"; 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); char *item_id; //获取当前对象的 object_string AOM_ask_value_string(attachments[i], "item_id", &item_id); //转换截取后判断是否以什么开头 是则不能发起流程 std::string taskName = item_id; string str = taskName.substr(0, 1); const char *p = str.c_str(); char *wllx; AOM_ask_value_string(forms[0], "jd2_wllx", &wllx); if ((strcmp(p, "1") == 0) || (strcmp(p, "2") == 0)) { if (strcmp(wllx, "ZR01") != 0) { isTransit = false; names.append(taskName).append(";"); } } else if (strcmp(p, "3") == 0) { if (strcmp(wllx, "ZH01") != 0) { isTransit = false; names.append(taskName).append(";"); } } else if (strcmp(p, "4") == 0) { char *lxs[10] = { "ZF01" ,"ZF02" ,"ZF03" ,"ZF04" ,"ZF05" ,"ZF06" ,"ZF07","ZF09","ZF10"}; char **lx = lxs; bool isTrue = false; for (int i = 0; lx && lx[i]; i++) { if (strcmp(wllx, lx[i]) == 0) { isTrue = true; break; } } if (!isTrue) { isTransit = false; names.append(taskName).append(";"); } } else if (strcmp(p, "Y") == 0) { if (strcmp(wllx, "ZY01") != 0) { isTransit = false; names.append(taskName).append(";"); } } else if (strcmp(p, "9") == 0) { str = taskName.substr(0, 2); p = str.c_str(); if (strcmp(p, "99") == 0) { if (strcmp(wllx, "ZZ01") != 0) { isTransit = false; names.append(taskName).append(";"); } } else if (strcmp(p, "98") == 0) { if (strcmp(wllx, "ZC01") != 0) { isTransit = false; names.append(taskName).append(";"); } } } } } names.append("}"); if (!isTransit) { std::string massage = "与物料类型不一致"; 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; }