【仅供内部供应商使用,不提供对外解答和培训】
【仅供内部供应商使用,不提供对外解答和培训】
无
该接口在8.0/9.0版本的产品中,作为服务扩展的主要接口。10.0发布以后逐渐被新接口取代。
10.0中这个接口的主要使用场景就是提供符合报表请求风格的web接口了。
package com.fr.stable.fun; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * FineReport对于HTTP请求做处理的服务 */ public interface Service { String XML_TAG = "WebService"; /** * 返回该服务所附带的OP参数 * * @return op参数 */ String actionOP(); /** * 处理HTTP请求 * * @param req HTTP请求 * @param res HTTP响应 * @param op op参数值 * @param sessionID 当前广义报表对象的会话ID * @throws Exception */ void process(HttpServletRequest req, HttpServletResponse res, String op, String sessionID) throws Exception; }
package com.fr.stable.fun.impl; import com.fr.stable.fun.Service; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public abstract class NoSessionIDService implements Service{ public void process(HttpServletRequest req, HttpServletResponse res, String op, String sessionID) throws Exception { process(req, res, op); } public abstract void process(HttpServletRequest req, HttpServletResponse res, String op) throws Exception; }
产品线 | 版本 | 支持情况 | 备注 |
---|---|---|---|
FR | 8.0 | 支持 | |
FR | 9.0 | 支持 | |
FR | 10.0 | 支持 | 只能用于报表场景的web服务提供 |
BI | 3.6 | 支持 | |
BI | 4.0 | 支持 | |
BI | 5.1 | 支持 | 不推荐使用 |
BI | 5.1.2 | 支持 | 不推荐使用 |
BI | 5.1.3 | 支持 | 不推荐使用 |
<extra-core> <WebService class="your class name"/> </extra-core>
接口注册逻辑:在WebActionsDispatcher中,注入了插件的运行后和结束前事件。当插件被插件引擎识别并加载时,会通过ReportDispatcher.addExtraServices注入到报表请求的分发器中生效。
接口的生效逻辑:当报表请求(view/report 或 view/form)进入分发器时,会根据对应的op参数把请求分发给对应的服务处理。
WebService接口虽然可以单独使用,但是一般情况下为了实现的规范,要求开发者都要配合CMD请求分发器使用。当且仅当需求场景只需要一个请求服务且不存在根据某参数进行分支处理的情况下,可以不使用分发器。
WebService接口也是为数不多的可以直接继承接口类而不用继承Abstract抽象类开发插件的接口。
而NoSessionIDService这个抽象接口主要用途在8.0和9.0中。这个抽象接口仅仅是去掉了报表的sessionID而已。10.0中使用场景就非常少了。
demo地址:demo-web-service
com.fr.stable.web.RequestCMDReceiver
com.fr.web.core.ActionNoSessionCMD
com.fr.web.core.WebActionsDispatcher
免责声明:所有文档中的开源示例,均为开发者自行开发并提供。仅用于参考和学习使用,开发者和官方均无义务对开源案例所涉及的所有成果进行教学和指导。禁止用于任何商业用途,若作为商用一切后果责任由使用者自行承担。