You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
2.6 KiB
69 lines
2.6 KiB
#define _CRT_SECURE_NO_WARNINGS
|
|
#include "epm_handler_common.h"
|
|
|
|
/**
|
|
*
|
|
* @handlerType: ActionHandler
|
|
* @handlerName: RB_CheckForCompletion
|
|
* @Description: 1、在设计节点完成时检查 :检查目标下[任务包版本RB3_TaskPackageRevision下的[交付物RB3_TaskDeliverable]关系下内容不允许为空
|
|
* 2、检查目标下[任务包版本]下的[项目包关系RB3_XMGX]关系下的[项目包版本RB3_XMKFRevision]下的 [物料关系RB3_WLGX]的内容不允许为空
|
|
* 如果[交付物] 、[物料关系] 下任一内容为空,不允许通过弹出报错“[交付物] 或[物料关系] 下内容不允许为空”: 如果都有内容则节点通过
|
|
* @author hcj
|
|
* @date 2024年1月9日
|
|
*
|
|
*/
|
|
int RB_CheckForCompletion(EPM_action_message_t msg)
|
|
{
|
|
int attachments_num = 0;
|
|
tag_t rootTask = NULLTAG;
|
|
tag_t *attachments = NULLTAG;
|
|
char* errorMessage = "“交付物或物料关系下内容不允许为空";
|
|
//获取任务对象
|
|
EPM_ask_root_task(msg.task, &rootTask);
|
|
//获取任务目标对象
|
|
EPM_ask_attachments(rootTask, EPM_target_attachment, &attachments_num, &attachments);
|
|
printf("开始循环查找目标中的对象\n");
|
|
for (int i = 0; i < attachments_num; i++)
|
|
{
|
|
char* attType;
|
|
ITKCALL(AOM_ask_value_string(attachments[i], "object_type", &attType));
|
|
printf("获取类型%s是否与RB3_TaskPackageRevision匹配\n", attType);
|
|
if (strcmp(attType,"RB3_TaskPackageRevision"))
|
|
{
|
|
printf("匹配上了\n开始检查目标下RB3_TaskPackageRevision下的RB3_TaskDeliverable关系下内容是否为空\n");
|
|
//检查目标下[任务包版本RB3_TaskPackageRevision下的[交付物RB3_TaskDeliverable]关系下内容是否为空
|
|
int checkNum = 0;
|
|
tag_t* checkObj;
|
|
ITKCALL(AOM_ask_value_tags(attachments[i], "RB3_TaskDeliverable", &checkNum, &checkObj));
|
|
if (checkNum == 0) {
|
|
printf("为空,提示报错,退出流程\n");
|
|
EMH_store_error_s1(EMH_severity_user_error, EMH_USER_error_base, errorMessage);
|
|
return 1;
|
|
}
|
|
printf("检查任务包版本下的RB3_XMGX关系下的[RB3_XMKFRevision]下的 [物料关系RB3_WLGX]的内容是否为空\n");
|
|
//检查任务包版本下的RB3_XMGX关系下的[RB3_XMKFRevision]下的 [物料关系RB3_WLGX]的内容是否为空
|
|
int num = 0;
|
|
tag_t* obj;
|
|
ITKCALL(AOM_ask_value_tags(attachments[i], "RB3_XMGX", &num, &obj));
|
|
for (int j = 0; j < num; j++)
|
|
{
|
|
printf("开始循环获取RB3_XMGX关系下的对象\n");
|
|
char* taskPType;
|
|
ITKCALL(AOM_ask_value_string(obj[j], "object_type", &taskPType));
|
|
printf("匹配类型%s是否等于RB3_XMKFRevision\n", taskPType);
|
|
if (strcmp(taskPType, "RB3_XMKFRevision"))
|
|
{
|
|
printf("匹配上了\n");
|
|
int checkTaskNum = 0;
|
|
tag_t* checkTaskObj;
|
|
ITKCALL(AOM_ask_value_tags(obj[j], "RB3_WLGX", &checkTaskNum, &checkTaskObj));
|
|
if (checkTaskNum == 0) {
|
|
EMH_store_error_s1(EMH_severity_user_error, EMH_USER_error_base, errorMessage);
|
|
return 1;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return ITK_ok;
|
|
} |