#include "signoff_rev.h" #include "tccore\iman_msg.h" //流程节点信息 struct FLOWNODEINFOS { char taskname[128]; char username[128]; char timeinfo[128]; char group[128]; char comments[1024]; }flownode_s[64]; //参数人员信息 struct USERINFOS { char taskname[128]; char propertyname[128]; char group[128]; }userinfo_s[64]; //参数日期信息 struct TIMEINFOS { char taskname[128]; char propertyname[128]; char group[128]; }timeinfo_s[64]; int nodecount = 0; int userinfoscount = 0; int timeinfoscount = 0; extern "C" int POM_AM__set_application_bypass(logical bypass); int ORIGIN_ask_sign_info(tag_t task_node, char *output_str,char *task_name,char *arg3value) { int ifail = ITK_ok; tag_t cur_perform_task = NULLTAG,tempTask = NULLTAG; char cur_task_name[WSO_name_size_c+1]="",buf[128] = ""; //编制判断变量 int s = 0; EPM_decision_t decision = EPM_nogo; char* userName; char *timeinfo1 = "",person_name[SA_name_size_c+1]="",*group_name="",*prop_name = "last_mod_date"; tag_t aUserTag = NULLTAG,responsibleParty = NULLTAG; date_t decision_date; //其他节点相关 int perform_count = 0; int *attach_type; tag_t *perform_attaches = NULLTAG; tag_t memberTag = NULLTAG; SIGNOFF_TYPE_t memberType; CR_signoff_decision_t signoff_decision; char *comments,*timeinfo="",*group_full_name = NULL; tag_t user_tag=NULLTAG, group_tag = NULLTAG; //循环判断变量 int i=0; EPM_ask_name( task_node, cur_task_name ) ; ECHO("cur_task_name = %s\n",cur_task_name); if ( stricmp( cur_task_name, "perform-signoffs" ) == 0 ) { cur_perform_task = task_node; //得到父节点 EPM_ask_parent_task( cur_perform_task, &tempTask ); EPM_ask_name( tempTask, cur_task_name ); } else if( strstr( cur_task_name, "编制" )!=NULL || strcmp( cur_task_name, "设计" ) == 0) { cur_perform_task = task_node; } else { EPM_ask_sub_task(task_node, "perform-signoffs", &cur_perform_task) ; if ( cur_perform_task != NULLTAG ) { EPM_ask_name( task_node, cur_task_name ); } } if(cur_perform_task != NULLTAG ) { if( strstr(cur_task_name,"编制") !=NULL||strcmp( cur_task_name, "设计" ) == 0 ) { tag_t owner = NULLTAG; s = EPM_ask_responsible_party(cur_perform_task,&responsibleParty); if(responsibleParty != NULLTAG) { decision = EPM_go; } AOM_ask_owner( cur_perform_task, &owner); //s = POM_get_user(&userName,&aUserTag); if( owner != NULLTAG ) SA_ask_user_person_name(owner, person_name); AOM_ask_value_date(cur_perform_task,prop_name,&decision_date); DATE_date_to_string(decision_date,arg3value,&timeinfo1); //ITK_date_to_string (decision_date, &timeinfo1); strcpy(flownode_s[nodecount].taskname,cur_task_name); strcpy(flownode_s[nodecount].username,person_name); strcpy(flownode_s[nodecount].timeinfo,timeinfo1); nodecount = nodecount + 1; //MEM_free(userName); } else { //发起人即所有者 tag_t owner = NULLTAG; date_t date; logical is_valid; char *d_value = NULL; AOM_ask_owner( cur_perform_task, &owner); if( owner != NULLTAG ) SA_ask_user_person_name(owner, person_name); AOM_ask_value_date(cur_perform_task,"creation_date", &date);//fnd0StartDate DATE_date_to_string(date,arg3value,&d_value); //ITKCALL(AOM_UIF_ask_value( cur_perform_task, "fnd0StartDate", &d_value));; //CALL(DATE_date_to_string(date,arg3value,&timeinfo)); //ITKCALL(DATE_string_to_date_t(d_value, &is_valid,&date)); //CALL(DATE_date_to_string(date,arg3value,&timeinfo)); //ECHO("timeinfo : %s",timeinfo); //vector ans; //if( d_value != NULL ) //{ // Split(d_value, ' ', ans); // if(ans.size() > 1) // strcat(output_str,ans[0].c_str()); //} EPM_ask_all_attachments(cur_perform_task,&perform_count,&perform_attaches,&attach_type); for(i=0;i 0) { for (i=0;i type_vec; //Split(exclude_type,";",type_vec); ECHO("参数1个数:%d\n",userinfoscount); ECHO("参数2个数:%d\n",timeinfoscount); //得到触发handler的节点 msg.task; //通过节点获取根流程 EPM_ask_root_task( msg.task, &root_task ); //得到根流程下的所有的一级节点 EPM_ask_sub_tasks( root_task, &sub_task_count, &sub_tasks); //得到根流程的名称 EPM_ask_name( root_task, root_task_name ); // ECHO("root_task_name=%s\n",root_task_name); EPM_ask_name( current_task, task_name ); ECHO( "sub_task_count = %d\n", sub_task_count ); //test========================== //tag_t user = NULLTAG, *tasks = NULL; //int n_task= 0; //ITKCALL(SA_find_user( "admin", &user )); //ITKCALL(SA_ask_user_work_contexts ( user, &n_task, &tasks)); //ECHO("==========n_task=%d",n_task); //============================== //单独处理DO节点 配置在do节点 if(strstr(task_name,"编制") !=NULL||strcmp(task_name,"设计") == 0) { ECHO("task_name:%s",task_name); //获取责任人 s = EPM_ask_responsible_party(current_task,&responsibleParty); if(responsibleParty != NULLTAG) { decision = EPM_go; } //获取当前的用户 s = POM_get_user(&userName,&aUserTag); //获取personname SA_ask_user_person_name(aUserTag,person_name); strcat(sign_info,task_name); strcat(sign_info,"="); strcat(sign_info,person_name); strcat(sign_info,"|"); strcat(sign_info,task_name); strcat(sign_info,"日期="); //POM_ask_v //获取对象的时间属性,参数1,对象,参数2,属性名称,属性3,获取到的时间属性值 AOM_ask_value_date(current_task,prop_name,&decision_date); //AOM_UIF_ask_value(current_task,prop_name, &timeinfo2); //将时间结构体转换成为某种时间格式的字符串 DATE_date_to_string(decision_date,arg3value,&timeinfo2); ECHO("\n--------------\n timeinfo2=%s\n------------\n",timeinfo2); strcat(sign_info,timeinfo2); strcat(sign_info,"|"); strcpy(flownode_s[nodecount].taskname,task_name); strcpy(flownode_s[nodecount].username,person_name); strcpy(flownode_s[nodecount].timeinfo,timeinfo2); nodecount = nodecount + 1; } else //perform节点 { for(i=0;i