/* * resources.getEntityManagerContainer() // 实体管理容器. * resources.getContext() //上下文根. * resources.getOrganization() //组织访问接口. * requestText //请求内容. * request //请求对象. */ load("nashorn:mozilla_compat.js"); print("----发送待办开始---------"); //var Todo_Service_URL = 'http://10.11.198.224:9083/UnifiedWorkbench/ProcessTaskService'; //WSDL http://10.11.198.224:9083/UnifiedWorkbench/ProcessTaskService/ProcessTaskService.wsdl //var Read_Service_URL ='http://10.11.198.224:9083/UnifiedWorkbench/ProcessReadService'; //WSDL http://10.11.198.224:9083/UnifiedWorkbench/ProcessReadService/ProcessReadService.wsdl var Todo_Service_URL = 'http://hostname/UnifiedWorkbench/ProcessTaskService'; var Read_Service_URL ='http://hostname/UnifiedWorkbench/ProcessReadService'; var Project_Name = '测试'; var Project_Password = 'password'; function getServerHost(){ return "http://zhtest.ah.unicom.local"; } function getServerPort(){ var server_port = "8080"; return (server_port == "" || server_port == "80") ? "" : (":"+server_port); } function init(){ var resp = resources.getContext().applications().getQuery(com.x.base.core.project.x_message_assemble_communicate.class, 'consume/list/sync2todo/count/30'); var text = resp.getData().toString(); var list = JSON.parse(text); for (var i = 0; i < list.length; i++) { var item = list[i]; switch (item.type) { case 'task_create': var task = JSON.parse(item.body); send_task_create(item.id, task); break; case 'taskCompleted_create': var task = JSON.parse(item.body); send_taskCompleted_create(item.id, task); break; case 'taskCompleted_delete': var task = JSON.parse(item.body); send_task_delete(item.id, task); break; case 'read_create': var read = JSON.parse(item.body); send_read_create(item.id, read); break; case 'readCompleted_create': var read = JSON.parse(item.body); send_readCompleted_create(item.id,read); break; case 'task_delete': var task = JSON.parse(item.body); send_task_delete(item.id, task); break; case 'read_delete': var read = JSON.parse(item.body); send_read_delete(item.id, read); break; default: break; } } } function getPersonFeature( person ){ return "wangyj733"; } function getPersonAttribute(userid , attributeName ){ var org = resources.getOrganization(); var _list = org.personAttribute().listAttributeWithPersonWithName(userid, attributeName); if(_list.length===0){ return userid; } else { if(_list[0]&&_list[0]!=""){ return _list[0]; } else { return userid; } } } function concatUrl(task) { return getServerHost() + getServerPort() + "/x_desktop/work.html?workid=" + task.work; } function concatTaskUrl(task){ return getServerHost() + getServerPort() + "/x_desktop/work.html?taskid=" + task.id; } function concatTaskCompletedUrl(taskcompleted){ return getServerHost() + getServerPort() + "/x_desktop/work.html?taskcompletedid=" + taskcompleted.id; } function concatReadUrl(read){ return getServerHost() + getServerPort() + "/x_desktop/work.html?readid=" + read.id; } function concatReadCompletedUrl(readcompleted){ return getServerHost() + getServerPort() + "/x_desktop/work.html?readcompletedid=" + readcompleted.id; } function getXMLText(root, tag){ var list = root.getElementsByTagName(tag); if( list == null )return null; var node = list.item(0); if( node == null )return null; return node.getTextContent(); } function updateConsume( id ){ try { resources.getContext().applications().getQuery(com.x.base.core.project.x_message_assemble_communicate.class, 'consume/' + id + '/type/sync2todo'); }catch(e){ print("更新消息,将消息标志为已处理出错,id="+id + ":"); print( e.printStackTrace() ); return false; } } function isRespSuccess( xmlStr ){ try { var DocumentBuilderFactory = Java.type('javax.xml.parsers.DocumentBuilderFactory'); var StringReader = Java.type('java.io.StringReader'); var InputSource = Java.type('org.xml.sax.InputSource'); var dbf = DocumentBuilderFactory.newInstance(); var db = dbf.newDocumentBuilder(); var sr = new StringReader(xmlStr); var is = new InputSource(sr); var document = db.parse(is); var root = document.getDocumentElement(); var faultcode = getXMLText(root, "faultcode"); var faultstring = getXMLText(root, "faultstring"); if (faultcode) { return false } else { return true } }catch(e){ print("解析返回结果报错:"); print( e.printStackTrace() ); return false } } function sendRequest_task( xml ){ try{ print("发起请求:"+xml); var ArrayList = Java.type('java.util.ArrayList'); var heads = new ArrayList(); var NameValuePair = Java.type('com.x.base.core.project.bean.NameValuePair'); var p1 = new NameValuePair('Content-Type', 'text/xml; charset=utf-8'); heads.add(p1); var HttpConnectionClass = Java.type('com.x.base.core.project.connection.HttpConnection'); var resp = HttpConnectionClass.postAsString(Todo_Service_URL, heads, xml); print( "统一待办返回:"+resp ); return isRespSuccess( resp ); }catch(e){ print("发送请求出错:"); print( e.printStackTrace() ); } } function get_task_create_xml( task ){ var xml = ''; xml += ''; xml += ''; xml += ''; xml += ''; xml += ''+ Project_Name +''; //项目名称projectName,每个应用都分开 xml += ''+ Project_Password +''; //接入密码key,每个应用都分开 xml += ''+ getPersonFeature(task.person) +''; //targets, 办理人 xml += ''+ '' +''; //processor, 上一个环节的处理人, 如果只生成待办不为处理人生成已办,那么发送人可不填写 xml += ''+ getPersonFeature( task.creatorPerson) +''; //creator, 流程工单拟稿人 xml += ''+ task.opinion +''; //opinion, 流程处理意见 xml += ''+ task.title +''; //title, 工单标题 xml += ''+ task.work +''; //unid, 应用系统的待办唯一ID xml += ''+ task.job +''; //additionalUnid 上级流程实例(工单)的唯一标识,如果有多层,可以用逗号分隔,主流程在第一位 xml += ''+ task.id +''; //feature, 流程实例(工单)唯一标识, 任务ID xml += ''+ task.routeName +''; //reserve, 决策名称:送办理|归档|送审批等等 xml += ''+ task.startTime +''; //composeTime, 数据生成时间:2011-08-30 12:00:00 xml += ''+ task.processName +''; //process, 直接写流程名称 xml += ''+ task.processName +''; //fileType,文档类型,直接写流程名称 xml += ''+ task.activityName +''; //activity, 当前环节名称 xml += ''+ 'false' +''; //newly, 是否是草稿 xml += ''+ task.processName +''; //category,分类名称,直接写流程名称 xml += ''+ '' +''; //urgency,紧急程度:请默认“一般” xml += ''+ '' +''; //secrecy,密级:请默认“普通文件” xml += ''+ task.serial +''; //serial,文号:对公文必须,可以为空 xml += ''+ 0 +''; //expirationMinutes, 不要求,固定为0 xml += ''+ '' +''; //expirationTime,不要求,固定为"" xml += ''+ false +''; //hastenEnable,不要求,固定为false xml += ''+ 0 +''; //hastenMinutes,不要求,固定为0 xml += ''+ '' +''; //hastenTime 不要求,催办时间,可以为空 xml += ''+ 'false' +''; //enableRemind|remindEnable,不要求,固定为false xml += ''+ 'false' +''; //remindForceFlag|remindForce, 不要求,固定为false xml += ''+ concatTaskUrl( task ) +''; //link, 访问链接 xml += ''+ '' +''; //linkView, 配合流程监控平台,江西移动环境接入为拟稿时间 xml += ''+ '' +''; //linkFlow, 办理链接, 可以为空 xml += ''+ '' +''; //linkRemove, 删除链接, 可以为空 xml += ''+ '' +''; //linkSupervise, 督办链接, 可以为空 xml += ''+ '' +''; //linkSuspend, 挂起链接, 可以为空 xml += ''+ '' +''; //linkReset, 重置链接, 可以为空 xml += ''+ '' +''; //linkReroute, 调度链接, 可以为空 xml += ''; xml += ''; xml += ''; return xml; } function send_task_create(id, task) { print("======send_task_create start=========" + ", consume id : " + id); var xml = get_task_create_xml( task ); if( sendRequest_task( xml ) ){ updateConsume( id ); } print("======send_task_create end=========" + ", consume id : " + id); } function get_task_delete_xml( task ){ var xml = ''; xml += ''; xml += ''; xml += ''; xml += ''; xml += ''+ Project_Name +''; //项目名称projectName,每个应用都分开 xml += ''+ Project_Password +''; //接入密码key,每个应用都分开 xml += ''+ task.id +''; //需要删除的 Feature xml += ''; xml += ''; xml += ''; return xml; } function send_task_delete(id, task) { print("--------send_task_delete start------------" + ", consume id : " + id); var xml = get_task_delete_xml( task ); if( sendRequest_task( xml ) ){ updateConsume( id ); } print("--------send_task_delete end------------" + ", consume id : " + id); } function get_taskCompleted_create_xml( task ){ var xml = ''; xml += ''; xml += ''; xml += ''; xml += ''; xml += ''+ Project_Name +''; //项目名称projectName,每个应用都分开 xml += ''+ Project_Password +''; //接入密码key,每个应用都分开 xml += ''+ '' +''; //targets, 办理人 xml += ''+ getPersonFeature( task.person ) +''; //processor, 上一个环节的处理人, 如果只生成待办不为处理人生成已办,那么发送人可不填写 xml += ''+ getPersonFeature( task.creatorPerson ) +''; //creator, 流程工单拟稿人 xml += ''+ task.opinion +''; //opinion, 流程处理意见 xml += ''+ task.title +''; //title, 工单标题 xml += ''+ task.work +''; //unid, 应用系统的待办唯一ID xml += ''+ task.job +''; //additionalUnid 上级流程实例(工单)的唯一标识,如果有多层,可以用逗号分隔,主流程在第一位 xml += ''+ task.id +''; //feature, 流程实例(工单)唯一标识, 任务ID xml += ''+ task.routeName +''; //reserve, 决策名称:送办理|归档|送审批等等 xml += ''+ task.startTime +''; //composeTime, 数据生成时间:2011-08-30 12:00:00 xml += ''+ task.processName +''; //process, 直接写流程名称 xml += ''+ task.processName +''; //fileType,文档类型,直接写流程名称 xml += ''+ task.activityName +''; //activity, 当前环节名称 xml += ''+ 'false' +''; //newly, 是否是草稿 xml += ''+ task.processName +''; //category,分类名称,直接写流程名称 xml += ''+ '' +''; //urgency,紧急程度:请默认“一般” xml += ''+ '' +''; //secrecy,密级:请默认“普通文件” xml += ''+ task.serial +''; //serial,文号:对公文必须,可以为空 xml += ''+ 0 +''; //expirationMinutes, 不要求,固定为0 xml += ''+ '' +''; //expirationTime,不要求,固定为"" xml += ''+ false +''; //hastenEnable,不要求,固定为false xml += ''+ 0 +''; //hastenMinutes,不要求,固定为0 xml += ''+ '' +''; //hastenTime 不要求,催办时间,可以为空 xml += ''+ 'false' +''; //enableRemind|remindEnable,不要求,固定为false xml += ''+ 'false' +''; //remindForceFlag|remindForce, 不要求,固定为false xml += ''+ concatTaskCompletedUrl( task ) +''; //link, 访问链接 xml += ''+ '' +''; //linkView, 配合流程监控平台,江西移动环境接入为拟稿时间 xml += ''+ '' +''; //linkFlow, 办理链接, 可以为空 xml += ''+ '' +''; //linkRemove, 删除链接, 可以为空 xml += ''+ '' +''; //linkSupervise, 督办链接, 可以为空 xml += ''+ '' +''; //linkSuspend, 挂起链接, 可以为空 xml += ''+ '' +''; //linkReset, 重置链接, 可以为空 xml += ''+ '' +''; //linkReroute, 调度链接, 可以为空 xml += ''; xml += ''; xml += ''; return xml; } function send_taskCompleted_create(id, task) { print("--------send_taskCompleted_create start------------" + ", consume id : " + id); var xml = get_taskCompleted_create_xml( task ); if( sendRequest_task( xml ) ){ updateConsume( id ); } print("--------send_taskCompleted_create end------------" + ", consume id : " + id); } function sendRequest_read(xml){ try{ print("发起请求:"+xml); var ArrayList = Java.type('java.util.ArrayList'); var heads = new ArrayList(); var NameValuePair = Java.type('com.x.base.core.project.bean.NameValuePair'); var p1 = new NameValuePair('Content-Type', 'text/xml; charset=utf-8'); heads.add(p1); var HttpConnectionClass = Java.type('com.x.base.core.project.connection.HttpConnection'); var resp = HttpConnectionClass.postAsString(Read_Service_URL, heads, xml); print( "统一待办返回:"+resp ); return isRespSuccess( resp ); }catch(e){ print("发送请求出错:"); print( e.printStackTrace() ); } } function get_read_create_xml( read ){ var xml = ''; xml += ''; xml += ''; xml += ''; xml += ''; xml += ''+ Project_Name +''; //项目名称projectName,每个应用都分开 xml += ''+ Project_Password +''; //接入密码key,每个应用都分开 xml += ''+ getPersonFeature( read.person ) +''; //targets, 待阅人 xml += ''+ '' +''; //processor, 上一个环节的处理人, 如果只生成待办不为处理人生成已办,那么发送人可不填写 xml += ''+ getPersonFeature( read.creatorPerson ) +''; //creator, 流程工单拟稿人 xml += ''+ read.title +''; //title, 工单标题 xml += ''+ read.work +''; //unid, 应用系统的待办唯一ID xml += ''+ read.job +''; //additionalUnid 上级流程实例(工单)的唯一标识,如果有多层,可以用逗号分隔,主流程在第一位 xml += ''+ read.processName +''; //process, 直接写流程名称 xml += ''+ read.processName +''; //fileType,文档类型,直接写流程名称 xml += ''+ read.activityName +''; //activity, 当前环节名称 xml += ''+ read.processName +''; //category,分类名称,直接写流程名称 xml += ''+ '' +''; //urgency,紧急程度:请默认“一般” xml += ''+ '' +''; //secrecy,密级:请默认“普通文件” xml += ''+ read.serial +''; //serial,文号:对公文必须,可以为空 xml += ''+ read.id +''; //feature, 流程实例(工单)唯一标识, 任务ID xml += ''+ '' +''; //reserve, 决策名称:送办理|归档|送审批等等 xml += ''+ 'false' +''; //enableRemind|remindEnable,不要求,固定为false xml += ''+ 'false' +''; //remindForceFlag|remindForce, 不要求,固定为false xml += ''+ read.startTime +''; //composeTime, 数据生成时间:2011-08-30 12:00:00 xml += ''+ '' +''; //expirationTime,不要求,固定为"" xml += ''+ '' +''; //hastenTime 不要求,催办时间,可以为空 xml += ''+ concatReadUrl( read ) +''; //link, 访问链接 xml += ''+ '' +''; //linkView, 配合流程监控平台,江西移动环境接入为拟稿时间 xml += ''+ '' +''; //linkFlow, 办理链接, 可以为空 xml += ''+ '' +''; //linkRemove, 删除链接, 可以为空 xml += ''+ '' +''; //linkSupervise, 督办链接, 可以为空 xml += ''+ '' +''; //linkSuspend, 挂起链接, 可以为空 xml += ''+ '' +''; //linkReset, 重置链接, 可以为空 xml += ''+ '' +''; //linkReroute, 调度链接, 可以为空 xml += ''; xml += ''; xml += ''; return xml; } function send_read_create(id, read){ print("======send_read_create start=========" + ", consume id : " + id); var xml = get_read_create_xml( read ); if( sendRequest_read( xml ) ){ updateConsume( id ); } print("======send_read_create end=========" + ", consume id : " + id); } function get_read_delete_xml( read ){ var xml = ''; xml += ''; xml += ''; xml += ''; xml += ''; xml += ''+ Project_Name +''; //项目名称projectName,每个应用都分开 xml += ''+ Project_Password +''; //接入密码key,每个应用都分开 xml += ''+ read.id +''; //需要删除的 Feature xml += ''; xml += ''; xml += ''; return xml; } function send_read_delete(id, read ) { print("--------send_read_delete start------------" + ", consume id : " + id); var xml = get_read_delete_xml( read ); if( sendRequest_read( xml ) ){ updateConsume( id ); } print("--------send_read_delete end------------" + ", consume id : " + id); } function get_read_create_xml( read ){ var xml = ''; xml += ''; xml += ''; xml += ''; xml += ''; xml += ''+ Project_Name +''; //项目名称projectName,每个应用都分开 xml += ''+ Project_Password +''; //接入密码key,每个应用都分开 xml += ''+ '' +''; //targets, 待阅人 xml += ''+ getPersonFeature(read.person) +''; //processor, 上一个环节的处理人, 如果只生成待办不为处理人生成已办,那么发送人可不填写 xml += ''+ getPersonFeature(read.creatorPerson) +''; //creator, 流程工单拟稿人 xml += ''+ read.title +''; //title, 工单标题 xml += ''+ read.work +''; //unid, 应用系统的待办唯一ID xml += ''+ read.job +''; //additionalUnid 上级流程实例(工单)的唯一标识,如果有多层,可以用逗号分隔,主流程在第一位 xml += ''+ read.processName +''; //process, 直接写流程名称 xml += ''+ read.processName +''; //fileType,文档类型,直接写流程名称 xml += ''+ read.activityName +''; //activity, 当前环节名称 xml += ''+ read.processName +''; //category,分类名称,直接写流程名称 xml += ''+ '' +''; //urgency,紧急程度:请默认“一般” xml += ''+ '' +''; //secrecy,密级:请默认“普通文件” xml += ''+ read.serial +''; //serial,文号:对公文必须,可以为空 xml += ''+ read.id +''; //feature, 流程实例(工单)唯一标识, 任务ID xml += ''+ '' +''; //reserve, 决策名称:送办理|归档|送审批等等 xml += ''+ 'false' +''; //enableRemind|remindEnable,不要求,固定为false xml += ''+ 'false' +''; //remindForceFlag|remindForce, 不要求,固定为false xml += ''+ read.startTime +''; //composeTime, 数据生成时间:2011-08-30 12:00:00 xml += ''+ '' +''; //expirationTime,不要求,固定为"" xml += ''+ '' +''; //hastenTime 不要求,催办时间,可以为空 xml += ''+ concatReadCompletedUrl( read ) +''; //link, 访问链接 xml += ''+ '' +''; //linkView, 配合流程监控平台,江西移动环境接入为拟稿时间 xml += ''+ '' +''; //linkFlow, 办理链接, 可以为空 xml += ''+ '' +''; //linkRemove, 删除链接, 可以为空 xml += ''+ '' +''; //linkSupervise, 督办链接, 可以为空 xml += ''+ '' +''; //linkSuspend, 挂起链接, 可以为空 xml += ''+ '' +''; //linkReset, 重置链接, 可以为空 xml += ''+ '' +''; //linkReroute, 调度链接, 可以为空 xml += ''; xml += ''; xml += ''; return xml; } function send_readCompleted_create(id, read) { print("--------send_readCompleted_create start------------" + ", consume id : " + id); var xml = get_readCompleted_create_xml( read ); if( sendRequest_read( xml ) ){ updateConsume( id ); } print("--------send_readCompleted_create end------------" + ", consume id : " + id); } init(); print("----发送待办结束---------");