universe和webi联动编程的一些注意事项
去年这个时候第一次做webi的开发,之前sql都写不太利索,可想而知过程挺痛苦,但是学到不少东西,今年又来了个差不多的案件,其中又有点新的胡乱摸索到的东西,在这里记录一下。
版本好像是14.2,记不清了明天上班再确认一下。
两次做的都是webi画面通过prompt和control输入条件显示在report部分,不同之处是去年prompt都是必须输入项目,所以都在universe里直接定义就可以了,至于多个prompt条件在画面上显示的顺序问题,需要在webi的QueryPanel里导入universe后选择定制sql,然后在prompt的最后添加第8个变量“user:数值”进行规定。
※数值从0开始 例(user:0,user:1...)画面条件按升顺从小到大排列※
但是这次因为甲方没经验瞎写设计书,搞了个prompt+optionalPrompt并存的形式做条件选择部分,导致了开发过程中出现了几次很头疼的问题。
① universe在定制sql时添加的prompt只有七个变量,第8个“user:0”和第9个“optional”只能在webi中定义。
※prompt既可以在universe中定义,也可以在webi中定义※
强行在universe中定义的话,就会发生以下错误:
Ⅰ.在定制sql的编辑模式下点sql确认时弹出“因为变量7定义错误无法确认,是否继续”的提示(正常情况下变量7是默认值)
Ⅱ. 强行选择继续退出编辑模式后,本来可以显示select项目的预览变成什么都没有了
Ⅲ. 双击打开object详细,选择分析时,弹出“因为变量7定义错误无法确认“的提示
此时单从universe的角度来看是有问题的,但是!! 此时的universe放到webi中是好用的,条件可以按照user的序号正确显示。谷歌过这个问题,貌似确实有universe中check不过但是放在webi中能用的现象(...)把做好的东西上传到另外一个服务器上测试也没发现什么问题。这样来看的话大概是可以这么用的吧。
还有一个很令人头大的现象就是
webi的QueryPanel中,禁止在定制模式下定义optional
一旦在webi的filter中定义prompt为optional,那么QueryPanel的定制功能就被禁止了,无法强行使用,因为会报错。
所以根据这次的式样,既想prompt和optional同时存在,又不按先prompt后optionalPrompt的顺序乱着表示,所以不择手段采取了以下方式
① 在universe中将必须输入的条件用prompt作成,并且强行写入第八个变量user排序,将做好的unv上传至服务器
② 在webi的QueryPanel中导入universe,用filter定义optionalPrompt
③ 保存关闭QueryPanel