1、功能点说明:
?在EKP的个人日程中添加日程,可以同步到EXCHANGE。
EXCHANGE:微软的邮件服务器平台,之前用来和DOMINO竞争。自带交换工作流,提供CDO、WEBDAV等开发接口。
适用场景:客户已有或依赖使用EXCHANGE,从EXCHANGE切换到DOMINO的OA平台。
其他类似的功能可以实现:邮件、通讯录同步等。基本上可以通过类似的功能例子来实现。
实现技术说明:
?WEBDAV,http1.1扩展协议,可以通过该协议实现服务器端文件的上传、查询、版本管理等功能。请求可以通过文件流或XML文件传递??。微软的EXCHANGE,包括Sharepoint,都应用了这项技术。
?ajax:X,可以是自己定义的通用XML,也可以是WebService中Soap协议的XML,当然也可以是WEBDAV的XML定义。因此,在UI层面,我们使用Ajax实现了很多意想不到的功能,比如Exchange集成、使用JS作为控制总线、调用多个异构系统WS(比如著名的GoogleMapAPI)、混合MUSHUP等等。已经有很多应用了,也是最近web2.0的一个热点。另外,在sharepoint中可以轻松制作相应的webpart,直接读取列表或文档库的webservice,实现可拖拽的门户定制,或者定制与Exchange集成的webpart。
?问题:EXCHANGE中约会类型存储的时间是世界时间,所以我在JS中处理了xml中的时间。
代码示例:
函数getUTCDateStr(date,time)
{
?var日期=date.sp点亮(“-”);
?vartimes=time.split(":");
?varutcdate=newDate(dates[0],dates[1],dates[2],times[0],times[1],"00");
?utcstr=utcdate.getUTCFullYear()+"-";
?if(utcdate.getUTCMonth()<10)
?{
utcstr+="0"+utcdate.getUTCMonth()+"-";
?}
?别的
?{
utcstr+=utcdate.getUTCMonth()+"-";
?}
?if(utcdate.getUTCDate()<10)
?{
utcstr+="0"+utcdate.getUTCDate()+"T";
?}
?别的
?{
utcstr+=utcdate.getUTCDate()+"T";
?}
?if(utcdate.getUTCHours()<10)
?{
utcstr+="0"+utcdate.getUTCHours()+":";
?}
?别的
?{
utcstr+=utcdate.getUTCHours()+":";
?}
?if(utcdate.getUTCMinutes()<10)
?{
utcstr+="0"+utcdate.getUTCMinutes();?
?}
?别的
?{
utcstr+=utcdate.getUTCMinutes();
?}
//?utcstr=utcdate.getUTCFullYear()+"-"+utcdate.getUTCMonth()+"-"+utcdate.getUTCDate()+"T"+utcdate.getUTCHours()+":"+utcdate.getUTCMinutes();
?返回utcstr;
}
函数SaveToExchange()
{
varstrXMLNSInfo="xmlns:g=\"DAV:\""
?+"xmlns:e=\"""
?+"xmlns:mapi=\"""
?+"xmlns:mapit=\"""
?+"xmlns:x=\"xml:\"xmlns:cal=\"urn:schemas:calendar:\""
?+"xmlns:dt=\"urn:uuid:c2f41010-65b3-11d1-a29f-00aa00c14882/\""
?+"xmlns:header=\"urn:schemas:mailheader:\""
?+"xmlns:mail=\"urn:schemas:httpmail:\"";
varstrCalInfo=""+document.all.F_Location.value+"”
?+""+getUTCDateStr(document.all.F_StartDate.value,document.all.F_StartTime.value)+":00.000Z”
?+""+getUTCDateStr(document.all.F_EndDate.value,document.all.F_EndTime.value)+":00.000Z”
?+"0”
?+"忙碌的”
?+"确认的”
?+"0”
?+"1”
?+"900";
?
变种?strHeaderInfo=""+前用户+"";
?//设置约会的主题。
变种?strMailInfo=""+document.all.Subject.value+"”
?+"”+document.all.Body.value+"";
varvXML="”
?+"”
?+"”
?+"骨灰盒:内容类:约会”
?+"IPM.约会”
?+邮件信息
?+strCalInfo
?+strHeaderInfo
?+"1”
?+"”
?+"";
varuri="http://"+ExServer+"/exchange/"+ExUser+"/日历/"+DocId+".eml";
varReq=newActiveXObject("Microsoft.XMLHTTP");
?Req.open("PROPPATCH",uri,false,ExUser,ExPassword);
?Req.setRequestHeader("Content-Type","text/xml");
?请求.send(vXML);
}