/*
* 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("----发送待办结束---------");