企业短信服务器4.1&ITK实现TC流程节点前提示
2012-12-17 09:58
387 查看
TC流程到各个节点的时候,需要对节点的相关人员发送短信进行通知。
在此之前,尝试过直接调用dll文件实现发送短信,但是有个问题就是短信猫每小时最多大约发送600条短信。发送密集时,会出现“丢”短信的问题。
最后使用企业短信服务器来实现自动队列和发送短信息。ITK部分只需要告诉短信服务器要发送给谁,发送什么内容即可。
1. 调用服务器发送短信使用cmd。
格式为SendSMS 1891156xxxx 短信内容
2. 流程节点的ACTION
3. 在TC中配置该ACTION HANDLER
do节点
审核节点
在此之前,尝试过直接调用dll文件实现发送短信,但是有个问题就是短信猫每小时最多大约发送600条短信。发送密集时,会出现“丢”短信的问题。
最后使用企业短信服务器来实现自动队列和发送短信息。ITK部分只需要告诉短信服务器要发送给谁,发送什么内容即可。
1. 调用服务器发送短信使用cmd。
格式为SendSMS 1891156xxxx 短信内容
void send_sms(const char* nameStr, // 接受者名字 const char* numStr, // 接受者手机号 const char* process_name, // 流程的名称 const char* parent_name // 节点的名称 ) { CString m_msgStr; m_msgStr.Format("SendSms %s %s,您好!流程:[%s_%s]需要您处理!【PLM】", numStr, nameStr, process_name, parent_name); // 发送信息给控制台 WinExec(m_msgStr, SW_HIDE); }
2. 流程节点的ACTION
/********************************************************************************* 【功 能】: 发送短信给任务想过人员 【异 常】: 【设 计】: max 【注意事项】: 【建立时间】: 2012年12月建立 【额外说明】: *********************************************************************************/ int C3_JC_Send_SMS(EPM_action_message_t msg) { int ifail = ITK_ok; char *err_string; int err_line = -1; tag_t job_tag = NULLTAG; tag_t task_tag = NULLTAG; tag_t root_task = NULLTAG; tag_t* SignOffs = NULLTAG; int SignOffcount=0; int i; tag_t member = NULLTAG; tag_t user = NULLTAG; date_t dicdate; SIGNOFF_TYPE_t type; char nameStr[SA_person_name_size_c+1]={'\0'}; char* numStr = NULL; tag_t person_tag=NULLTAG; char* process_name = NULL; char* task_name = NULL; /*********************begin防止进入循环陷阱*******************/ task_tag = msg.task; if( task_tag==NULL_TAG ) return ITK_ok; if ( msg.action > EPM_perform_action ) { return ITK_ok; } /*********************end防止进入循环陷阱*******************/ /***********获取流程目标对象*****************/ CALL(EPM_ask_job( msg.task, &job_tag )); CALL(EPM_ask_root_task(job_tag,&root_task)); /***************获取签审成员***************/ CALL(EPM_ask_attachments(task_tag,EPM_signoff_attachment,&SignOffcount,&SignOffs)); if (0 == SignOffcount){ /***************不存在签审成员则找责任人***************/ CALL(EPM_ask_responsible_party(task_tag,&user)); CALL(SA_ask_user_person(user,&person_tag)); CALL(SA_ask_person_name(person_tag,nameStr)); CALL(SA_ask_person_attr(person_tag,"PA10",&numStr)); if((NULL != numStr)&&(tc_strcmp(numStr, ""))) { CALL(AOM_ask_value_string(task_tag, "job_name", &process_name)); CALL(AOM_ask_value_string(task_tag, "object_name", &task_name)); // 发送短信 send_sms(nameStr, numStr, process_name, task_name); MEM_free_s(process_name); MEM_free_s(task_name); MEM_free_s(numStr); }else printf("\n%s的%s手机号码为空", nameStr, numStr); }else{ /*遍历签审成员*/ for(i=0;i<SignOffcount;i++) { CALL(EPM_ask_signoff_member(SignOffs[i],&member,&type)); if(SIGNOFF_GROUPMEMBER == type) { CALL(SA_ask_groupmember_user(member,&user)); CALL(SA_ask_user_person(user,&person_tag)); CALL(SA_ask_person_name(person_tag,nameStr)); CALL(SA_ask_person_attr(person_tag,"PA10",&numStr)); if((NULL != numStr)&&(tc_strcmp(numStr, ""))) { CALL(AOM_ask_value_string(task_tag, "job_name", &process_name)); CALL(AOM_ask_value_string(task_tag, "parent_name", &task_name)); // 发送短信 send_sms(nameStr, numStr, process_name, task_name); MEM_free_s(process_name); MEM_free_s(task_name); MEM_free_s(numStr); }else printf("\n%s的%s手机号码为空", nameStr, numStr); } } SAFE_SM_FREE(SignOffs); } printf("\n"); /***********SMS*****************/ return ifail; }
3. 在TC中配置该ACTION HANDLER
do节点
审核节点
相关文章推荐
- Android 实现任务栏出现类似短信的提示功能
- 怎样实现tomcat做服务器在windows下开机自动运行&后台运行【HOT】
- 企业实现服务器负载均衡常见的四种方法
- 扩展Activiti流程定义文件,实现自定义节点属性
- 关于<验证码>的实现和执行流程
- K2 实现流程节点动态配置
- 实现Lync Server 2010企业版前端服务器部署
- 通过短信实现对服务器的性能(内存、CPU、硬盘空间等)指标的查看
- 一步一步实现企业网络架构之八:利用IIS建立和维护一个WEB服务器 推荐
- 企业实现服务器负载均衡常见的四种方法
- <input type="text" value="">实现输入提示
- PowerPoint 2010打开PPT时非常慢 提示"正在与服务器联系以获取信息";
- JMS 企业开发流程实现
- 谁动了我的服务器?---免费实现服务器登录手机短信通知!
- AsyncSocket写的客户端Socket,实现当服务器断开连接时弹窗提示
- C#中实现语音朗读(短信 & 语音短信)sms (转载)
- 企业实现服务器负载均衡常见的四种方法(概念入门级)
- VS2008 连接SQL2008调试 提示"不支持此服务器版本,仅支持sql 2005以下版本的服务器"
- 实现ASP页面在做查询时会出现 “正在查询>>>”等提示
- 二叉树的实现&&递归和非递归方式前序、中序、后续遍历&&发现一个节点中序遍历的下一节点