您的位置:首页 > 其它

BI Component 开发(5)--处理用户交互及为什么要创建Component?

2015-12-08 14:11 246 查看
一,处理用户交互的接口

      以下这些方法用来创建提示信息并显示给用户。它们对于自动生成参数页面(parameter pages)非常有用。创建这些页面时在action序列中可以指定布局,页面布局可用的模板有HTML模板或者XSTL模板。若没有指定模板,则默认的XSTL模板将会被使用,默认模板位于:system/custom/xsl/DefaultParameterForm.xsl

处理用户交互涉及到的方法如下:
①   createFeedbackParameter() - 3 个参数
②   createFeedbackParameter() - 5 个参数
③   createFeedbackParameter() - 7 个参数
④    feedbackAllowed()
⑤    getFeedbackOutputStream()
⑥    isPromptPending()
⑦    promptNeeded()
⑧    promptNow()
⑨    setFeedbackMimeType()

①   createFeedbackParameter() - 3 个参数

②   createFeedbackParameter() - 5 个参数
参数:  String fieldname, String
displayName, String hint, String defaultValue, boolean visible
返回值:无
创建提示参数并以文本的形式呈现给用户
fieldname:为提示指定表单元素的id,当用户点击提交时,该id将会出现在请求中,若action序列所定义的输入中没有id与fieldname所代表的id相匹配,Component不会接受用户提交的这个值。同时会导致无限循环给用户相同的提示。
displayName:参数的标签。以文本的形式呈现给用户
hint:一个帮助消息,提示用户将会看到下一条参数
defaultValue:当用户看到提示页面时,该默认值将会自动呈现
visible:决定用户能否看到表单控制(form control)

③   createFeedbackParameter() - 7 个参数

④    feedbackAllowed()

参数:无
返回值:boolean
若Component被设置成能够请求获取参数,则返回true。如果执行action序列的请求来自于web 应用程序,该方法将返回true;如果请求来自于WebService客户端、调度器或者工作流引擎,该方法返回false。(PS:
action序列可以通过四种方法来执行)


   getFeedbackOutputStream()

参数:无
返回值: java.io.OutputStream
该方法表明:对于Component而言,除了需要从用户处获取原始的输入之外,还可以给用户提供关于某个执行结果的反馈。比如说,当Email 服务器未定义时,Email Component调用该方法给用户提示有效的信息帮助用户修正错误。

⑥    isPromptPending()

参数:无
返回值:boolean
该方法让Component找出是否有其它的Component从用户那里请求参数。若该方法返回true,该Component不应该继续执行或生成内容而是决定是否需要提示参数。

⑦    promptNeeded()

参数:无

返回值:无
该方法通知运行时上下文是否提示用户输入Component执行所需要的参数。在同一个action序列中的其它Component也会看到它是否需要提示用户输入参数。这使得系统只需要为用户生成一个表单,而不是生成连续不断的表单(因为action序列中有多个Component)。比如,action序列中的第一个Component是报表Component,它需要一个部门的id;第二个Component是打印Component,它需要一个打印机名称,那么用户只会收到一个表单让他同时选择部门id和打印机名称。

⑧    promptNow()

参数:无

返回值:无
该方法通知运行时上下文提示用户是否需要输入后续的Component执行时所需要的参数。这样可以防止无效的处理和保证安全。比如,在一个action序列中定义了二个action,第一个是WebService服务,若它没有在请求中获得客户id则提示用户输入客户id;第二个Component把第一个Component的处理结果作为它的输入。若客户id没有提供,则第一个Component需要给用户发提示信息,那么就没有任何意义执行第二个Component去检查它是否需要提示用户输入它执行时所需要的其它参数了。

⑨    setFeedbackMimeType()

参数:String mimeType

返回值:无
设置提示页面的 MIME类型。目前只支持"text/html"类型。

二,为什么要创建Component?

        Pentaho BI Suite的底层是一个轻量级、但功能强大可扩展性强的处理商业智能相关任务的框架。底层的构件允许Component按顺序组织起来并把上一个Component的处理结果作为下一个Component的输入。Component即可以单独使用也可以组合起来使用从而创造无穷多的结果。Component可以通过JAVA
API ,WebService,调度器,工作流引擎来调用。

BI Suite的底层构建紧凑且高效,并且可以以lib库的形式部署到JAVA 应用程序中。
通过创建一个简单的Java类将lib库和引擎整合进Component层,新功能就可以立即与现有的Component的功能结合起来,并且整个平台的方法都可以拿来使用。比如说:只要创建了一个Component:
1)它可以被调度
2)可以作为WebService执行
3)可以与其他的Component顺序地结合起来,并可以接受其它Component的输出作为其输入,也可以把自己的输出作为其他Component的输入。
4)能够提示用户输入本Component执行所需要的参数
5)当使用Component时,自动具有审计功能和日志功能。
6)BI Component 非常容易地创建并部署到Pentaho BI Suite中。

翻译自:http://wiki.pentaho.com/display/ServerDoc2x/Handling+User+Interaction

http://wiki.pentaho.com/pages/viewpage.action?pageId=1125

扩展:
Action序列文件是一个解决方案的定义,为运行时上下文提供了执行环境,Components则是业务逻辑。一个Component执行一个单一的功能或一组相关的功能,或者作为BI 平台和外部应用程序连接的桥梁。对于Component而言,主要调用二个方法:一个是验证方法,另一个是执行方法(execute()),执行方法实际上执行的是Action对象。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息