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.

537 lines
16 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#include "raycus_itk.h"
#include "handler.h"
#ifdef __cplusplus
/*
标准的注册供流程调用服务handler的入口
*/
extern "C" {
#endif
//此函数必须有规范的写法必须以dll的名称加上"_"开头
DLLAPI int ld_itk_c_register_callbacks()
{
int ifail = ITK_ok;
ITKCALL(ifail = CUSTOM_register_exit("ld_itk_c", "USERSERVICE_register_methods",
(CUSTOM_EXIT_ftn_t)K_register_methods));
fprintf(stdout, "ld_itk_c register USERSERVICE_custom_register_methods complete\n");
ITKCALL(ifail = CUSTOM_register_exit("ld_itk_c", "USER_gs_shell_init_module",
(CUSTOM_EXIT_ftn_t)K_register_handlers));
fprintf(stdout, "ld_itk_c register USERSERVICE_custom_register_handlers complete\n");
return ifail;
}
#ifdef __cplusplus
}
#endif
extern DLLAPI int K_register_handlers(int *decision, va_list args)
{
int ifail = ITK_ok;
//移植105项目handler提交流程检查指定审批节点是否都指派审批人员
ifail = EPM_register_action_handler("EPMC_check_process_member", "EPMC check process member handler",
(EPM_action_handler_t)EPMC_check_process_member);
if (ifail == ITK_ok)
{
fprintf(stdout, "Registering action handler EPMC_check_process_member completed!\n");
}
else
{
fprintf(stdout, "Registering action handler EPMC_check_process_member failed %d!\n", ifail);
}
//LD根据问题类别指派责任人
ifail = EPM_register_action_handler("LD_AutoAssign", "LD_AutoAssign",
(EPM_action_handler_t)LD_AutoAssign);
if (ifail == ITK_ok)
{
fprintf(stdout, "Registering action handler LD_AutoAssign completed!\n");
}
else
{
fprintf(stdout, "Registering action handler LD_AutoAssign failed %d!\n", ifail);
}
//LY根据问题类别指派责任人
ifail = EPM_register_action_handler("LY_AutoAssign", "LY_AutoAssign",
(EPM_action_handler_t)LY_AutoAssign);
if (ifail == ITK_ok)
{
fprintf(stdout, "Registering action handler LY_AutoAssign completed!\n");
}
else
{
fprintf(stdout, "Registering action handler LY_AutoAssign failed %d!\n", ifail);
}
//流程启动时根据属性值和配置转义为TC人员到流程节点上
ifail = EPM_register_action_handler("Connor_ChangeItemNotify_AssignUser", "Connor_ChangeItemNotify_AssignUser",
(EPM_action_handler_t)Connor_ChangeItemNotify_AssignUser);
if (ifail == ITK_ok)
{
fprintf(stdout, "Registering action handler Connor_ChangeItemNotify_AssignUser completed!\n");
}
else
{
fprintf(stdout, "Registering action handler Connor_ChangeItemNotify_AssignUser failed %d!\n", ifail);
}
//流程不包含责任人就提升
ifail = EPM_register_action_handler("LD_ElevateTask", "LD_ElevateTask",
(EPM_action_handler_t)LD_ElevateTask);
if (ifail == ITK_ok)
{
fprintf(stdout, "Registering action handler LD_ElevateTask completed!\n");
}
else
{
fprintf(stdout, "Registering action handler LD_ElevateTask failed %d!\n", ifail);
}
//Connor_Review_Person
ITKCALL(ifail = EPM_register_action_handler("Connor_Review_Person", "", (EPM_action_handler_t)Connor_Review_Person));
if (ifail == 0) {
printf("注册操作处理程序成功Connor_Review_Person\n");
}
else {
printf("注册操作处理程序失败[%d]Connor_Review_Person\n", ifail);
}
//Connor_allow_Workflow
ITKCALL(ifail = EPM_register_action_handler("Connor_allow_Workflow", "", (EPM_action_handler_t)Connor_allow_Workflow));
if (ifail == 0) {
printf("注册操作处理程序成功Connor_allow_Workflow\n");
}
else {
printf("注册操作处理程序失败[%d]Connor_allow_Workflow\n", ifail);
}
//LD_FormAttrToExcel
ifail = EPM_register_action_handler("LD_FormAttrToExcel", "", (EPM_action_handler_t)LD_FormAttrToExcel);
if (ifail == 0) {
printf("注册操作处理程序成功LD_FormAttrToExcel\n");
}
else {
printf("注册操作处理程序失败[%d]LD_FormAttrToExcel\n", ifail);
}
//LD_ECN01_SetCICNFormProperty
ifail = EPM_register_action_handler("LD_ECN01_SetCICNFormProperty", "", (EPM_action_handler_t)LD_ECN01_SetCICNFormProperty);
if (ifail == 0) {
printf("注册操作处理程序成功LD_ECN01_SetCICNFormProperty\n");
}
else {
printf("注册操作处理程序失败[%d]LD_ECN01_SetCICNFormProperty\n", ifail);
}
//Connor_SetECNTaskNodes
ifail = EPM_register_action_handler("Connor_SetECNTaskNodes", "", (EPM_action_handler_t)Connor_SetECNTaskNodes);
if (ifail == 0) {
printf("注册操作处理程序成功Connor_SetECNTaskNodes\n");
}
else {
printf("注册操作处理程序失败[%d]Connor_SetECNTaskNodes\n", ifail);
}
//Connor_Check_ECN_GYReview_Person
ifail = EPM_register_action_handler("Connor_Check_ECN_GYReview_Person", "", (EPM_action_handler_t)Connor_Check_ECN_GYReview_Person);
if (ifail == 0) {
printf("注册操作处理程序成功Connor_Check_ECN_GYReview_Person\n");
}
else {
printf("注册操作处理程序失败[%d]Connor_Check_ECN_GYReview_Person\n", ifail);
}
//LD_515_SetCICNFormProperty
ifail = EPM_register_action_handler("LD_515_SetCICNFormProperty", "", (EPM_action_handler_t)LD_515_SetCICNFormProperty);
if (ifail == 0) {
printf("注册操作处理程序成功LD_515_SetCICNFormProperty\n");
}
else {
printf("注册操作处理程序失败[%d]LD_515_SetCICNFormProperty\n", ifail);
}
//LD_PartCompFLAG
ifail = EPM_register_action_handler("LD_PartCompFLAG", "", (EPM_action_handler_t)LD_PartCompFLAG);
if (ifail == 0) {
printf("注册操作处理程序成功LD_PartCompFLAG\n");
}
else {
printf("注册操作处理程序失败[%d]LD_PartCompFLAG\n", ifail);
}
//LD_SendDJJDD_To_MES
ifail = EPM_register_action_handler("LD_SendDJJDD_To_MES", "", (EPM_action_handler_t)LD_SendDJJDD_To_MES);
if (ifail == 0) {
printf("注册操作处理程序成功LD_SendDJJDD_To_MES\n");
}
else {
printf("注册操作处理程序失败[%d]LD_SendDJJDD_To_MES\n", ifail);
}
//UpgradeTask
ifail = EPM_register_action_handler("UpgradeTask", "", (EPM_action_handler_t)UpgradeTask);
if (ifail == 0) {
printf("注册操作处理程序成功UpgradeTask\n");
}
else {
printf("注册操作处理程序失败[%d]UpgradeTask\n", ifail);
}
//LD_PartChange
ifail = EPM_register_action_handler("LD_PartChange", "", (EPM_action_handler_t)LD_PartChange);
if (ifail == 0) {
printf("注册操作处理程序成功LD_PartChange\n");
}
else {
printf("注册操作处理程序失败[%d]LD_PartChange\n", ifail);
}
//LD_SendECRECN_ToSAPMES
ifail = EPM_register_action_handler("LD_SendECRECN_ToSAPMES", "", (EPM_action_handler_t)LD_SendECRECN_ToSAPMES);
if (ifail == 0) {
printf("注册操作处理程序成功LD_SendECRECN_ToSAPMES\n");
}
else {
printf("注册操作处理程序失败[%d]LD_SendECRECN_ToSAPMES\n", ifail);
}
//LD_GYLXFrozen
ifail = EPM_register_action_handler("LD_GYLXFrozen", "", (EPM_action_handler_t)LD_GYLXFrozen);
if (ifail == 0) {
printf("注册操作处理程序成功LD_GYLXFrozen\n");
}
else {
printf("注册操作处理程序失败[%d]LD_GYLXFrozen\n", ifail);
}
//填写完成时间
ifail = EPM_register_action_handler("LD_CompletionDate", "", (EPM_action_handler_t)LD_CompletionDate);
if (ifail == 0) {
printf("注册操作处理程序成功LD_CompletionDate\n");
}
else {
printf("注册操作处理程序失败[%d]LD_CompletionDate\n", ifail);
}
//填写任务分派时间
ifail = EPM_register_action_handler("LD_TaskAssignmentDate", "", (EPM_action_handler_t)LD_TaskAssignmentDate);
if (ifail == 0) {
printf("注册操作处理程序成功LD_TaskAssignmentDate\n");
}
else {
printf("注册操作处理程序失败[%d]LD_TaskAssignmentDate\n", ifail);
}
//(ifail = EPM_register_action_handler("Supor_signoff_rev", "将审签信息记录到表单上", (EPM_action_handler_t)Connor_signoff_rev));
//if (ifail == 0)
//{
// printf("Registering action handler Supor_signoff_rev success\n");
//}
//else
//{
// printf("Registering action handler Supor_signoff_rev failed\n");
//}
//测试handler
ITKCALL(ifail = EPM_register_action_handler("TEST", "TEST", (EPM_action_handler_t)TEST));
if (ifail == ITK_ok)
{
printf("register TEST success \n");
}
else
{
printf("register TEST failed \n");
}
//自动发邮件
(ifail = EPM_register_action_handler("SH_PLM_Email", "SH_PLM_Email", (EPM_action_handler_t)SH_PLM_Email));
if (ifail == 0) {
printf("Registering action handler SH_PLM_Email successful\n");
}
else {
printf("Registering action handler SH_PLM_Email failed %d\n", ifail);
}
//创建后操
METHOD_id_t mth_tag;
ifail = METHOD_find_method("ItemRevision", ITEM_deep_copy_msg, &mth_tag);//参数1类型支持原生和客制化的参数2操作类型
if (mth_tag.id != 0) {
ifail = METHOD_add_action(mth_tag, METHOD_post_action_type, reviseDesignPost, NULL);//参数2执行操作的时刻支持前操作和后操作
fprintf(stdout, "regist reviseDesignPost post_action successfully \n");
}
else {
fprintf(stdout, "regist reviseDesignPost post_action failed \n");
}
//前操作
//创建后操
//(ifail = METHOD_find_method("ItemRevision", ITEM_create_rev_msg, &mth_tag));//参数1类型支持原生和客制化的参数2操作类型
//(ifail = METHOD_find_method("Item", ITEM_create_msg, &mth_tag));//参数1类型支持原生和客制化的参数2操作类型
//if (mth_tag.id != 0) {
// (ifail = METHOD_add_action(mth_tag, METHOD_post_action_type, Connor_CreateItemPost, NULL));//参数2执行操作的时刻支持前操作和后操作
// fprintf(stdout, "regist Connor_CreateItemPost post_action successfully !\n");
//}
//else {
// fprintf(stdout, "regist Connor_CreateItemPost post_action fiald !\n");
//}
METHOD_find_method("ItemRevision", "IMAN_save", &mth_tag);
if (mth_tag.id != 0) {
METHOD_add_action(mth_tag, METHOD_post_action_type, (METHOD_function_t)Connor_ItemRevision_Save, NULL);
METHOD_add_action(mth_tag, METHOD_post_action_type, (METHOD_function_t)Connor_checkItem_unique, NULL);//检查对象属性唯一性校验
printf("注册ItemRevision函数成功\n");
}
METHOD_find_method("Item", "IMAN_save", &mth_tag);
if (mth_tag.id != 0) {
METHOD_add_action(mth_tag, METHOD_post_action_type, (METHOD_function_t)Connor_checkItem_unique, NULL);//检查对象属性唯一性校验
printf("注册[检查对象属性唯一性校验]函数成功!\n");
}
ITKCALL(ifail = EPM_register_rule_handler("LY_CheckItem", "流程目标对象类型匹配", (EPM_rule_handler_t)rule_handler_LY_CheckItem));
if (ifail == ITK_ok) {
fprintf(stdout, "Registering rule_handler_LY_CheckItem complete!\n");
}
else {
fprintf(stdout, "Registering rule_handler_LY_CheckItem failed!\n");
}
//子发布状态
(ifail = EPM_register_action_handler("LY_ChildIsRelease", "LY_ChildIsRelease", (EPM_action_handler_t)XY_ChildIsRelease));
if (ifail == 0) {
printf("Registering action handler LY_ChildIsRelease successful\n");
}
else {
printf("Registering action handler LY_ChildIsRelease failed %d\n", ifail);
}
//子发布状态
(ifail = EPM_register_action_handler("LY_ChildIsRelease", "LY_ChildIsRelease", (EPM_action_handler_t)XY_ChildIsRelease));
if (ifail == 0) {
printf("Registering action handler LY_ChildIsRelease successful\n");
}
else {
printf("Registering action handler LY_ChildIsRelease failed %d\n", ifail);
}
//依据对象类型提取其下特定版本/状态对象
(ifail = EPM_register_action_handler("LY_ChildIsPickUp", "", (EPM_action_handler_t)LY_ChildIsPickUp));
if (ifail == 0) {
printf("Registering action handler LY_ChildIsPickUp successful\n");
}
else {
printf("Registering action handler LY_ChildIsPickUp failed %d\n", ifail);
}
//力源
ifail = EPM_register_action_handler("F6_MEP_Merge", "", (EPM_action_handler_t)F6_MEP_Merge);
if (ifail == 0) {
printf("注册操作处理程序成功F6_MEP_Merge\n");
}
else {
printf("注册操作处理程序失败[%d]F6_MEP_Merge\n", ifail);
}
return ifail;
}
int Connor_open_bypass(void* returnValue)
{
POM_AM__set_application_bypass(true);
return 0;
}
int Connor_close_bypass(void* returnValue)
{
POM_AM__set_application_bypass(false);
return 0;
}
extern DLLAPI int K_register_methods()
{
int ifail = ITK_ok;
METHOD_id_t mth_tag;
int
status = ITK_ok,
numberOfArguments = 0,
returnValueType = USERARG_STRING_TYPE,
*argumentList = NULL;
USER_function_t functionPtr;
//修订
//{
// ifail = METHOD_find_method("ItemRevision", ITEM_deep_copy_msg, &mth_tag);
// if (mth_tag.id != 0) {
// METHOD_add_action(mth_tag, METHOD_pre_action_type, ML_ItemRevPreUpdate, NULL);
// printf("注册ItemRevision函数成功\n");
// }
//}
//ifail = METHOD_find_method("ItemRevision", "ITEM_deep_copy", &mth_tag);
//if (mth_tag.id != 0) {
// ifail = METHOD_add_action(mth_tag, METHOD_post_action_type, (METHOD_function_t)CONNOR_REVISE_CLEAR_FORM, NULL);
// if (ifail == 0) {
// printf("Registering method CONNOR_REVISE_CLEAR_FORM successful\n");
// }
// else {
// printf("Registering method CONNOR_REVISE_CLEAR_FORM failed %d\n", ifail);
// }
//}
//开旁路
{
numberOfArguments = 1;
functionPtr = Connor_open_bypass;
argumentList = (int*)MEM_alloc(numberOfArguments * sizeof(int));
argumentList[0] = USERARG_STRING_TYPE;
returnValueType = USERARG_VOID_TYPE;
char* mth_name = (char*)malloc(1 + sizeof(char) * strlen("CONNOR_open_bypass"));
tc_strcpy(mth_name, "CONNOR_open_bypass");
ITKCALL(status = USERSERVICE_register_method(mth_name, functionPtr, numberOfArguments,
argumentList, returnValueType));
MEM_free(argumentList);
if (status == ITK_ok)
{
printf("Method: %s\n", mth_name);
}
else
{
printf("Method register failed [%d]: %s\n", status, mth_name);
}
}
{
ifail = METHOD_find_method("ItemRevision", TC_save_msg, &mth_tag);
if (mth_tag.id != 0) {
METHOD_add_action(mth_tag, METHOD_post_action_type, (METHOD_function_t)ML_ItemRevSave, NULL);
printf("注册ItemRevision函数成功\n");
}
}
////文件夹后操作
//{
// ifail = METHOD_find_method("Folder", TC_save_msg, &mth_tag);
// if (mth_tag.id != 0) {
// METHOD_add_action(mth_tag, METHOD_post_action_type, (METHOD_function_t)LD6_CusProdFolderSave, NULL);
// printf("注册LD6_CusProdFolderSave函数成功\n");
// }
//}
//关旁路
{
numberOfArguments = 1;
functionPtr = Connor_close_bypass;
argumentList = (int*)MEM_alloc(numberOfArguments * sizeof(int));
argumentList[0] = USERARG_STRING_TYPE;
returnValueType = USERARG_VOID_TYPE;
char* mth_name = (char*)malloc(1 + sizeof(char) * strlen("CONNOR_close_bypass"));
tc_strcpy(mth_name, "CONNOR_close_bypass");
ITKCALL(status = USERSERVICE_register_method(mth_name, functionPtr, numberOfArguments,
argumentList, returnValueType));
MEM_free(argumentList);
if (status == ITK_ok)
{
printf("Method: %s\n", mth_name);
}
else
{
printf("Method register failed [%d]: %s\n", status, mth_name);
}
}
//设置只读属性的值
{
numberOfArguments = 3;
functionPtr = connor_set_prop_value;
argumentList = (int*)MEM_alloc(numberOfArguments * sizeof(int));
argumentList[0] = USERARG_STRING_TYPE;
argumentList[1] = USERARG_STRING_TYPE;
argumentList[2] = USERARG_TAG_TYPE;
returnValueType = USERARG_STRING_TYPE;
char* mth_name = (char*)malloc(1 + sizeof(char) * strlen("Connor_Set_Prop_Value"));
tc_strcpy(mth_name, "Connor_Set_Prop_Value");
ITKCALL(status = USERSERVICE_register_method(mth_name, functionPtr, numberOfArguments,
argumentList, returnValueType));
MEM_free(argumentList);
if (status == ITK_ok)
{
printf("Method: %s\n", mth_name);
}
else
{
printf("Method register failed [%d]: %s\n", status, mth_name);
}
}
{
numberOfArguments = 3;
returnValueType = USERARG_STRING_TYPE;
functionPtr = uploadFile;
argumentList = (int*)MEM_alloc(numberOfArguments * sizeof(int));
argumentList[0] = USERARG_STRING_TYPE;
argumentList[1] = USERARG_STRING_TYPE;
argumentList[2] = USERARG_STRING_TYPE;
status = USERSERVICE_register_method("uploadFile", functionPtr, numberOfArguments, argumentList, returnValueType);
if (status == ITK_ok)
{
printf("Registering uploadFile finished\n");
}
else
{
printf("Registering uploadFile failed %d\n", status);
}
MEM_free(argumentList);
}
/*int
status = ITK_ok,
numberOfArguments = 0,
returnValueType = USERARG_STRING_TYPE,
*argumentList = NULL;
USER_function_t functionPtr;
METHOD_id_t mth_tag;
ITKCALL(ifail = METHOD_find_method ( "Schedule", TC_save_msg, &mth_tag ) );
if ( mth_tag.id != NULLTAG )
{
ITKCALL(ifail = METHOD_add_action( mth_tag, METHOD_post_action_type, (METHOD_function_t)Save_Schedule_Post_Action, NULL ) );
if(ifail==0) {
printf("Register method Save_Schedule_Post_Action success\n");
} else {
printf("Register method Save_Schedule_Post_Action failed %d\n", ifail);
}
}*/
return ITK_ok;
}
//extern DLLAPI int F_register_handlers(int *decision, va_list args)
// {
// int ifail = ITK_ok;
//
// //创建后操
// METHOD_id_t mth_tag;
// ifail = METHOD_find_method("Design Revision", ITEM_deep_copy_msg, &mth_tag);//参数1类型支持原生和客制化的参数2操作类型
// if (mth_tag.id != 0) {
// ifail = METHOD_add_action(mth_tag, METHOD_post_action_type, reviseDesignPost, NULL);//参数2执行操作的时刻支持前操作和后操作
// fprintf(stdout, "regist reviseDesignPost post_action successfully \n");
// }
// else {
// fprintf(stdout, "regist reviseDesignPost post_action failed \n");
// }
// return ifail;
// }