#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 #include #include "ce/ce.h" #include #include #include #include #include #include "string" #include "sstream" #include #include #include #include
#include "ctime" #include "tchar.h" #include #include #include using namespace std; extern "C" int POM_AM__set_application_bypass(logical bypass); int jd_add_attachments(EPM_action_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); TC_argument_list_t *arguments = msg.arguments; int arg_cnt = TC_number_of_arguments(arguments); 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; } const char *relation = paras["realtion"].c_str(); const char *item = paras["item"].c_str(); printf("relation:%s\n", relation); printf("item:%s\n", item); vector csjh_rev; vector csjh_type; for (int i = 0;i < att_cnt;i++) { char *att_type; AOM_ask_value_string(attachments[i], "object_type", &att_type); if (tc_strcmp(att_type, "ItemRevision") == 0) { tag_t *csjh; int csjh_cnt; AOM_ask_value_tags(attachments[i], relation, &csjh_cnt, &csjh); for (int ii = 0;ii < csjh_cnt;ii++) { char *item_type; AOM_ask_value_string(csjh[ii], "object_type", &item_type); if (tc_strcmp(item_type, item) == 0) { tag_t *csjh_revs; int rev_cnt; date_t date = NULLDATE; AOM_ask_value_tags(csjh[i], "revision_list", &rev_cnt, &csjh_revs); AOM_ask_value_date(csjh_revs[rev_cnt - 1], "date_released", &date); if (DATE_IS_NULL(date)) { char *name; AOM_ask_value_string(csjh_revs[rev_cnt - 1], "object_string", &name); printf("%s add success\n", name); csjh_rev.push_back(csjh_revs[rev_cnt - 1]); csjh_type.push_back(EPM_target_attachment); } MEM_free(csjh_revs); } } MEM_free(csjh); } } if (csjh_rev.size() > 0) { tag_t *atts = &csjh_rev[0]; int *types = &csjh_type[0]; EPM_add_attachments(root_task, csjh_rev.size(), atts, types); } POM_AM__set_application_bypass(false); return 0; }