OA与NC系统集成接口开发方案
OA与 NC系统集成接口开发方案目录目录 i4单点登录 24.1 注册登录key访问接口 24.2访问NC-EHR业务功能 25.代办事项列表信息 36单一代办事项信息展示 34单点登录由0A系统客户端提供登录参数,到0A服务器,0A服务端通过 的web服务方式向NC服务端注册申请登录key, OA服务端将登录 key作为响应结果返回到的 OA客户端,作为之后访问NC-EHR系统 的依据。步骤说明源系统目的系统1最终用户登录请求OA客户端OA服务端2登录key申请OA服务端NC服务3访问NC服务OA客户端NC服务4.1注册登录key访问接口通过NC提供的机制。0A客户端使用HTTP协议GET或 POST方式向指定的地址提交如下格式的参数,注册用于访问NC-EHF系统的登录 key. ( http:/NC IP/service/RegisterServlet)参数意义acco un tcode帐套编码workdate工作日期Ian guage登录语言usercode用户编码pwd密码key生成的唯一 key。4.2访问NC-EHR业务功能 旦注册完成,可直接使用http:/NC_IP/login.jsp?key=注册所使用key略过登录界面,直接进入NC主界面。5代办事项列表信息NC提供以web service方式获取代办事项信息列表的接口OA系统根据web service接口和对应的用户信息,得到用户所对 应的代办事务信息列表,展现到 0A系统中。传到NCservice接口的参数信息包括:代办单据 PK,用户pk,单据类型,主题,发送人数据获取方式如<%Stri ng en dpo int = "http:/NC_IP /user/services/ReadBusi nessService"Service service = new Service();Call call = (Call) service.createCall();String userPk = "0001AA100000000033W6"/nc 用户的 pk call.setTargetE ndpo in tAddress (new java .n et.URL(e ndpo in t); call.setOperati onN ame("readNCPedi ng");call.addParameter("userPK", XMLType.XSD_STRING , ParameterMode.IN); call.setReturnType(XMLType.SOAP_ARRAY12);String ret = (String) call.invoke(new Object userPk);%>6单一代办事项信息展示NC系统提供以web service方式获取指定代办事项的接口。指定 访问参数。在NC系统中打开指定代办事项。传到NCservice接口的参数信息包括:NC用户主键,代办事务信息PK数据获取展示方式如v% taglib prefix="c" uri=" <%page contentType="text/html; charset=UTF-8"%><% page import=".URL"%><% page import=".URLConnection"%><% page import=".HttpURLConnection"%><% page import="java.util.Enumeration"%><% page import="java.util.*"%><script LANGUAGE="JavaScript">function show(str)alert(str);this.close();*打开被集成的NC系统的某个节点* param funcode被打开节点的节点号*/ function openNCNode(参数值,key,DNS)try execNCAppletFunction("com.nc.ui.webservice.open.OpenClient","openMsgPanel","参数值",key,DNS);catch(error);/* param argStr调用类的参数 String* param isNcJob是否是打开 NC待办事务节点.*/function execNCAppletFunction(className,methodName,argStr,key,DNS) tryvar ncFrame = document.getElementByld("ncf");/此处注意gateUrl 的key参数是根据单点登录情况动态形成的var gateUrl = DNS+"/login.jsp?key="+key;alert(key);if(ncFrame = null)ncFrame = initNCFrame(gateUrl);waitLoadNCApplet(className,methodName,argStr);catch(error)function waitLoadNCApplet(className,methodName,argStr)var applet = null;tryvar ncFrame =document.getElementByld("ncf");if(ncFrame != null)applet =ncFrame.contentWindow.document.applets"NCApplet" alert("opne ncapplet");catch(error)showErrorDialog("getapplet error:" + error.name +error.message);return;if(applet = null)setTimeout("waitLoadNCApplet("+ className +"," + methodName+ "," + argStr + ")", 100);return;alert("opened");openNCApplet(argStr);function openNCApplet(argStr)tryvar nf = document.getElementByld("ncf");if(nf!=null)/ alert("ncIFrame ok");elsealert("ncIFrame null");var ncapplet;/alert(nf.src);ncapplet = nf.contentWindow.document.applets"NCApplet"/ alert(ncapplet);if(ncapplet!=null)/ alert("ncapplet ok"); elsealert("ncapplet null"); ncapplet.callNC("nc.bs.webservice.open.OpenClient","openMsgPanel","");ncapplet.callNC("com.nc.ui.webservice.open.OpenClient","openMsgPanel","");alert("call ok");catch(error);function initNCFrame(url)var framelD = "ncf"var frame = document.createElement("iframe");frame.id = frameID;frame.style.position = "relative"frame.style.left = "0"frame.style.top = "0"frame.style.width = 0;frame.style.height = 0;frame.frameBorder = 0;frame.width = 0;frame.height = 0;frame.desingMode="off" frame.src = url;document.body.appendChild(frame);return frame;信息清除掉/*当portlet 初次进入View时需要调用此方法将过时的iframe*/function clearNCFrame()var framelD = "ncf"var ncFrame = $(framelD);if(ncFrame != null)ncFrame.src ="" ncFrame.parentNode.removeChild(ncFrame);v/script><html><head></head><%Random rd = new Random();int i = rd.nextlnt(1OO)+1;/为该用户设置一个默认操作帐套,可能需要根据项目的实际情况进行修改new/如果用户已经通过认证,该方法会取得用户的用户名URLurl=URL("http:/127.0.0.1/service/RegisterServlet?key="+i+"&accountcode=d acc &language=simpchn&usercode=zhwj&pwd=1 &pkcorp=1001");URLConnection uc = url.openConnection();uc.setDoOutput(true);HttpURLConnection httpconn = (HttpURLConnection) uc;String str_return = httpconn.getResponseMessage();/当注册中心成功注册了用户本次登录的用户信息时,将会返回“0Kif (str_return.equals("OK") out.println("start");out.println("<scriptlanguage="javascript">openNCNode(参数值,"+i+","+"http:/127.0.0.1"+")v/script>");out.println("end");%></html>