diff --git a/HEZON_ITK/HEZON_ITK.vcxproj b/HEZON_ITK/HEZON_ITK.vcxproj
index 77ad7c2..aab2c65 100644
--- a/HEZON_ITK/HEZON_ITK.vcxproj
+++ b/HEZON_ITK/HEZON_ITK.vcxproj
@@ -166,6 +166,7 @@
+
diff --git a/HEZON_ITK/HEZON_ITK.vcxproj.filters b/HEZON_ITK/HEZON_ITK.vcxproj.filters
index 8440569..3cb9aa5 100644
--- a/HEZON_ITK/HEZON_ITK.vcxproj.filters
+++ b/HEZON_ITK/HEZON_ITK.vcxproj.filters
@@ -82,6 +82,9 @@
epm-handler
+
+ epm-handler
+
diff --git a/HEZON_ITK/epm_handler_common.h b/HEZON_ITK/epm_handler_common.h
index 186ac51..9fe5c7f 100644
--- a/HEZON_ITK/epm_handler_common.h
+++ b/HEZON_ITK/epm_handler_common.h
@@ -49,6 +49,7 @@ int bs_bypass(void *retValType);
int jd_schedule_joint(EPM_action_message_t msg);
int jd_batch_process(EPM_action_message_t msg);
int jd_add_attachments(EPM_action_message_t msg);
+int jd_complate_first_task(EPM_action_message_t msg);
////��������Ϣǩ��汾������ȥ
//int qtmc_sign_ir(EPM_action_message_t msg);
diff --git a/HEZON_ITK/epm_register_handler.cxx b/HEZON_ITK/epm_register_handler.cxx
index 3d4a903..086c800 100644
--- a/HEZON_ITK/epm_register_handler.cxx
+++ b/HEZON_ITK/epm_register_handler.cxx
@@ -160,6 +160,14 @@ extern DLLAPI int CUST_init_module(int *decision, va_list args)
} else {
printf("register jd_add_attachments successfully\n");
+ }
+ ifail = EPM_register_action_handler("jd_complate_first_task", "jd_complate_first_task",
+ (EPM_action_handler_t)jd_complate_first_task);
+ if (ifail) {
+ printf("register jd_complate_first_task failed\n");
+ } else {
+ printf("register jd_complate_first_task successfully\n");
+
}
//if(ifail == ITK_ok)
//{
diff --git a/HEZON_ITK/jd_add_attachments.cpp b/HEZON_ITK/jd_add_attachments.cpp
index 68070e0..fa5fd38 100644
--- a/HEZON_ITK/jd_add_attachments.cpp
+++ b/HEZON_ITK/jd_add_attachments.cpp
@@ -63,7 +63,7 @@ int jd_add_attachments(EPM_action_message_t msg) {
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;
+ 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++) {
@@ -72,29 +72,32 @@ int jd_add_attachments(EPM_action_message_t msg) {
paras[temp_key] = temp_val;
}
const char *relation = paras["realtion"].c_str();
- const char *item_rev = paras["item_rev"].c_str();
+ const char *item = paras["item"].c_str();
printf("relation:%s\n", relation);
- printf("item_rev:%s\n", item_rev);
+ 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, "JD2_GTSYWTSRevision") == 0) {
+ 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_rev) == 0) {
+ if (tc_strcmp(item_type, item) == 0) {
tag_t *csjh_revs;
int rev_cnt;
- char *date;
+ date_t date = NULLDATE;
AOM_ask_value_tags(csjh[i], "revision_list", &rev_cnt, &csjh_revs);
- AOM_ask_value_string(csjh_revs[rev_cnt - 1], "date_released", &date);
- if (date == NULL || tc_strcmp(date, "") == 0) {
+ 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);
}
diff --git a/HEZON_ITK/jd_batch_process.cpp b/HEZON_ITK/jd_batch_process.cpp
index bcca31a..be5c4ff 100644
--- a/HEZON_ITK/jd_batch_process.cpp
+++ b/HEZON_ITK/jd_batch_process.cpp
@@ -53,11 +53,10 @@
#include
#include
#include
-#include
using namespace std;
-void sendRequest(char *uid) {
+DWORD WINAPI sendRequest(void *uid) {
try {
char *pref_values;
PREF_ask_char_value("jd2_server_ip", 0, &pref_values);
@@ -65,22 +64,146 @@ void sendRequest(char *uid) {
stringstream ss;
ss << "http://";
ss << pref_values;
- ss << ":8888/api/batchJob?uid=";
- ss << uid;
+ ss << ":8888/api/deleteJob?uid=";
+ ss << (char *)uid;
printf("request url====>%s\n", ss.str().c_str());
http::Request request(ss.str().c_str());
const http::Response response = request.send("GET");
std::cout << std::string(response.body.begin(), response.body.end()) << '\n'; // print the result
+ } else {
+ printf("jd2_server_ip error\n");
}
} catch (const std::exception& e) {
std::cerr << "Request failed, error: " << e.what() << '\n';
}
+ return 0;
}
int jd_batch_process(EPM_action_message_t msg) {
+
+ int ifail = EPM_go, att_count, tag_cnt, rel_cnt, type = EPM_reference_attachment;
+ tag_t rootTask, *attachments, win, top, *tags, tag, *rels, job, process_template, new_process;
+ char *val;
+ EPM_ask_root_task(msg.task, &rootTask);
+ EPM_ask_job(msg.task, &job);
+ EPM_ask_attachments(rootTask, EPM_target_attachment, &att_count, &attachments);
+ if (att_count < 2)
+ return 0;
+ printf("att_count:%d\n", att_count);
+ AOM_ask_value_tag(job, "process_template", &process_template);
+ vector process_vec;
+
+
+ for (int i = 0; i < att_count; i++) {
+
+ char *object_string, *object_type;
+ AOM_ask_value_string(attachments[i], "object_type", &object_type);
+ AOM_ask_value_string(attachments[i], "object_string", &object_string);
+ printf("object_type:%s object_string:%s\n", object_type, object_string);
+ tag_t new_process;
+ ITKCALL(EPM_create_process(object_string, "", process_template, 1, &attachments[i], &type, &new_process));
+ process_vec.push_back(new_process);
+ }
+ int sub_cnt;
+ tag_t *tasks;
+ EPM_ask_sub_tasks(rootTask, &sub_cnt, &tasks);
+ map> task_map;
+ for (int i = 0;i < sub_cnt;i++) {
+ char *task_name, *task_type;
+ AOM_ask_value_string(tasks[i], "object_name", &task_name);
+ AOM_ask_value_string(tasks[i], "object_type", &task_type);
+ vector tags;
+ if (tc_strcmp("EPMDoTask", task_type) == 0) {
+ tag_t assignee;
+
+ AOM_ask_value_tag(tasks[i], "fnd0Assignee", &assignee);
+ tags.push_back(assignee);
+ } else {
+ tag_t *signoffs;
+ int signoff_cnt;
+ AOM_ask_value_tags(tasks[i], "valid_signoffs", &signoff_cnt, &signoffs);
+ printf("name:%s valid cnt:%d\n", task_name, signoff_cnt);
+ for (int j = 0;j < signoff_cnt;j++) {
+ tag_t member;
+ AOM_ask_value_tag(signoffs[j], "group_member", &member);
+ tags.push_back(member);
+ }
+ }
+ task_map[task_name] = tags;
+ }
+
+ for (auto i = 0;i < process_vec.size();i++) {
+
+ ITKCALL(AOM_refresh(process_vec[i], false));
+
+ tag_t root;
+ EPM_ask_root_task(process_vec[i], &root);
+
+
+ EPM_ask_sub_tasks(root, &sub_cnt, &tasks);
+ for (auto j = 0;j < sub_cnt;j++) {
+ char *task_name, *task_type;
+ AOM_ask_value_string(tasks[j], "object_name", &task_name);
+ if (task_map[task_name].size() == 0)
+ continue;
+ AOM_ask_value_string(tasks[j], "object_type", &task_type);
+ if (tc_strcmp("EPMDoTask", task_type) == 0) {
+ EPM_assign_responsible_party(tasks[j], task_map[task_name][0]);
+ } else {
+
+ tag_t sub_task;
+ int *types = (int*)MEM_alloc(task_map[task_name].size());
+
+ EPM_ask_sub_task(tasks[j], "select-signoff-team", &sub_task);
+ if (sub_task) {
+ for (int k = 0;k < task_map[task_name].size();k++) {
+ int temp_cnt;
+ tag_t *temp;
+ EPM_create_adhoc_signoff(sub_task, task_map[task_name][k], &temp_cnt, &temp);
+
+ }
+ EPM_set_adhoc_signoff_selection_done(sub_task, true);
+
+ if (j == 0) {
+ EPM_trigger_action(tasks[0], EPM_complete_action, "");
+ }
+ }
+ }
+ }
+ }
+
+ printf("ʼתΪĿ\n");
+ int ref_cnt;
+ tag_t *refs;
+ tag_t root_task1;
+ for (int i = 0;i < att_count;i++) {
+ EPM_ask_root_task(process_vec[i], &root_task1);
+ EPM_ask_attachments(root_task1, EPM_reference_attachment, &ref_cnt, &refs);
+ char *name1;
+ AOM_ask_value_string(attachments[i], "object_string", &name1);
+ for (int ii = 0;ii < ref_cnt; ii++) {
+ char *name2;
+ AOM_ask_value_string(refs[ii], "object_string", &name2);
+ if (tc_strcmp(name1, name2) == 0) {
+ printf("object_string======>%s\n", name1);
+ tag_t *new_atts = (tag_t *)MEM_alloc(sizeof(tag_t));
+ new_atts[0] = attachments[i];
+ int types[1];
+ types[0] = EPM_target_attachment;
+ int types1[1];
+ types1[0] = EPM_reference_attachment;
+ ITKCALL(EPM_add_attachments(root_task1, 1, new_atts, types));
+ EPM_remove_attachments_from_att_type(root_task1, 1, new_atts, types1);
+ break;
+ }
+ }
+ }
+
+ EMH_clear_errors();
char *uid;
- ITK__convert_tag_to_uid(msg.task, &uid);
- printf("delete job_uid======>%s\n", uid);
- sendRequest(uid);
+ ITK__convert_tag_to_uid(job, &uid);
+ printf("start delete job_uid======>%s\n", uid);
+ HANDLE thread = CreateThread(NULL, 0, sendRequest, uid, 0, NULL);
+ CloseHandle(thread);
return 0;
}
\ No newline at end of file
diff --git a/HEZON_ITK/jd_complate_first_task.cpp b/HEZON_ITK/jd_complate_first_task.cpp
new file mode 100644
index 0000000..67cd3ef
--- /dev/null
+++ b/HEZON_ITK/jd_complate_first_task.cpp
@@ -0,0 +1,83 @@
+#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