Ecology8数据展现及流程触发集成操作手册V1.0.doc
-作者xxxx-日期xxxxEcology8数据展现及流程触发集成操作手册V1.0【精品文档】流程展现及流程触发集成操作手册1. WebService注册一、概述目前很多软件为了便于和其它软件进行集成,都开发了WebService接口,通过这些接口可以和第三方软件进行数据的交互功能,这里的WebService注册就是在E-cology中集中登记其它软件的WebService接口及相关的参数,这样我们在后台管理的时候可以直接调用这些接口。二、注册设置1、点击【WebService注册】菜单后显示如图1所示图1· 点击【新建】按钮可以注册WebService信息;· 选中已注册的WebService后点击【删除】按钮后可以删除选中的信息;· 列表菜单只有【编辑】和【删除】按钮,点击后可以编辑删除注册信息。2、在图1中点击【新建】按钮后显示如图2所示,开始注册WebService信息图2· 自定义名称中填写WebService服务的名称,在后期调用的时候会看到这个名称,所以命名最后能够代表此WebService服务是干嘛用的;· WebService地址:非常重要的内容,此地址是由第三方软件供应商提供的,如果没有提供就不能使用这个功能,配置完成后可以点击【解析WSDL】以确保接口地址正确,点击【检查更新】按钮可以可以确保接口内容有没有变化;· 点击图2中的添加按钮,会在下方增加一行,配置WebService接口中提供的方法和参数字段等信息,这些信息都是由第三方软件供应商所需要提供的,如图3所示图3· 配置完成后需要点击【保存】按钮进行保存;· 选中已有的方法,点击按钮可以删除选中的方法;· 方法列表字段功能显示如下表,先来看一下图3中红框所示的方法所对应的WebService接口文件,如图4所示,我们通过浏览器直接访问WebService地址后看到的内容图4字段说明方法名称其它模块配置过程中可以调用的方法,此方法必需是写在WebService接口内容中的,如图4中的【getAllModeDataList】,所以这些方法都是由提供WebService接口的软件供应商提供描述针对此方法的文字描述,主要是便于其它管理员了解此接口的作用返回值类型接口返回数值的类型,在后期调用接口方法的时候,E-cology字段的类型一致参数名称写在方法之后的参数名称,这些名称也在WebService接口文件中可以看到,如图4中的in0in7参数类型对应参数的类型,在WebService接口文件中可以看到,如图4中type后面跟的就是参数字段的类型是否数组只有数组型的参数才需要选中2. 数据展现集成一、概述数据展现集成就是通过浏览按钮的方式展示外部数据源的数据,常被用作自定义浏览框的设置和自定义查询菜单的设置。二、数据展现集成设置1、点击【数据展现集成】菜单后显示如图1所示图1· 点击【新建】按钮可以创建新的自定义浏览框;· 选中已有的自定义浏览按钮后点击【删除】可以批量删除选中的自定义浏览框;· 列表菜单只有【编辑】和【删除】两个按钮,点击后可以编辑和删除当前的自定义浏览框。2、在图1中点击【新建】按钮后显示如图2所示图2· 标识:自定义数据查询页面的名称,必需是唯一的;· 名称:此自定义查询数据的名称,一般用中文表示,告知需要用到此查询功能的用户这个是查询什么内容的;· 展现形式:展现形式分为了【浏览框】和【查询页面】两种,浏览框的话可以在流程表单中设置了自定义浏览框类型的字段时调用,查询页面可以在自定义菜单等页面进行调用;· 展现方式:选择浏览框中内容的展现方式,只有展现形式是【浏览框】时才需要设置,可以采用列表式、树形方式,如果采用自定义页面的话,显示如图3所示,只要直接设置自定义页面地址就可以了,其它信息不用设置了。图3· 数据来源:数据来源可以分为数据库、WebService接口、自定义接口三种,每种接口配置不完全一样§ 数据源查询· 数据源:查询数据的来源数据库,数据源需要在【数据源设置】中先设好;· 查询SQL语句:编写查询语句,控制浏览按钮的查询显示结果;§ WebService查询· WebService地址:在WebService注册中记录接口名称,通过下拉选择框选择;· WebService方法:属于这个接口的具体方法;§ 自定义地址查询· 已经在第三方的页面中编写了查询方法,这里直接调用那个查询方法的文件;· 主键:查询的主标示字段名称;· 外部页面地址:· 列表式查询页面中必需设置页面中的查询条件和显示字段列,点击下方的进行添加;· 如果是树形展示字段的话,需要制定父字段和子字段在外部数据源中的名称,如图4所示。图4三、实例介绍1.数据展现集成-展现类型-浏览框(即E7及以下版本的自定义浏览按钮)以表ID_0为例子:E7及以下版本的自定义浏览按钮设置及浏览按钮查询结果展示:E8版本的自定义浏览按钮设置:数据库中存的值为主键字段标题栏的作用:l浏览框中的作用即是选择后显示的字段l查询页面中的作用即是提供超链接的字段浏览按钮查询结果展示:新增功能:l字段联动:以表t_hrmresource、t_hrmdepartment为例:联动条件字段在流程中的字段名称为op_test_ld_bm(对应表t_hrmdepartment的内容)需要联动带出的人员字段:设置方法A:直接在查询sql中添加条件,联动字段为$op_test_ld_bm$联动字段如果都是在明细表中,联动字段的写法为:$formtable_main_748_dt1_bm_dl$其中,formtable_main_748_dt1是明细表表名,bm_dl为明细表中的字段名设置方法B:直接在查询字段设置中的流程联动字段名称中填写联动字段名称结果展示:l转换方法:以表ID_0为例未使用转换方法前,浏览按钮显示的结果:使用转换方法:select email from id_0 WHERE loginid = '?currentvalue'浏览按钮显示的结果:特殊的SQL处理:当多表联动时,可能会出现这些表中的主键一样的问题,这种情况下,SQL语句做一层包装,即可解决:例如:select d.id,d.departmentid, d.lastname|'20150819' as lastname ,(case when sex = 1 then '女' when sex = 0 then '男' end) as Sex,(case when status = 0 then '试用' when status = 1 then '正式' when status = 2 then '临时' when status = 3 then '试用延期' when status = 4 then '解聘' when status = 5 then '离职' when status = 6 then '退休' when status = 7 then '无效'end) as status, f.jobtitlename, e.departmentname, from (select id,a.lastname,a.sex,a.status,a.departmentid,a.subcompanyid1,a.jobtitle from Hrmresource a where a.departmentid in (select b.id from Hrmdepartment b where b.subcompanyid1 in (select from Hrmsubcompany c where substr(id,1,2)=$wenben$) d left join Hrmjobtitles f on d.jobtitle = left join Hrmdepartment e on d.departmentid = e.id left join Hrmsubcompany g on d.subcompanyid1 = where d.lastname like '%y%'由于各表中都有id这个主键,所以导致此SQL无法正常使用修改为以下内容即可:select * from (select d.id,d.departmentid, d.lastname|'20150819' as lastname ,(case when sex = 1 then '女' when sex = 0 then '男' end) as Sex,(case when status = 0 then '试用' when status = 1 then '正式' when status = 2 then '临时' when status = 3 then '试用延期' when status = 4 then '解聘' when status = 5 then '离职' when status = 6 then '退休' when status = 7 then '无效'end) as status, f.jobtitlename, e.departmentname, from (select id,a.lastname,a.sex,a.status,a.departmentid,a.subcompanyid1,a.jobtitle from Hrmresource a where a.departmentid in (select b.id from Hrmdepartment b where b.subcompanyid1 in (select c.id from Hrmsubcompany c where substr(id,1,2)=$wenben$) d left join Hrmdepartment e on d.departmentid = e.id where d.lastname like '%y%') a order by departmentid2. 数据展现集成-展现类型-查询页面(新功能)该功能主要是和异构系统待办元素集成功能一起使用的,设置方式和自定义浏览按钮基本没有区别(字段联动无效),异构系统待办元素集成功能介绍参考附件中的【120389】新增功能:异构系统待办元素集成功能。回显异常回显异常是指 配置完成并在流程上正常浏览并选择数据后,流程提交或保存页面再次打开,之前选择的数据消失或者显示错误。可以依次尝试如下解决方案:当前在后台配置的sql,你的SQL: select id , a ,b from d where b='xxx'1,select * from ( 你的SQL ) t -使用包裹层2,select * from ( select id , a ,b from d WHERE b='xxx' ) t -将你的SQL中的所有where大写3,select * from ( select regexp_replace(id,'0-9a-zA-Z','') as id , a ,b from d WHERE b='xxx' ) t -删除字符串类型的主键中的特殊字符比如id值为: =asxn 102$ 其中有 等号/空格/$符 3种类型的特殊字符,则:oracle : regexp_replace(id,'0-9a-zA-Z','')sqlserver:Replace(Replace(Replace(id,' ',''),'=',''),'$','')主键要求:主键不要有字母数字以外的其它字符。4,逻辑悖论类型:数据来源 d 是一个视图,视图内涵逻辑条件:已经被选择过的数据,不再出现在候选列表中。此中情况下造成的不能回显,无法解决;请实施人员自行调整业务逻辑。此种逻辑,必定造成不能回显!原因:浏览按钮保存在OA数据库中是仅仅是数据id,要回显时,还是用配置的sql,加上id条件,去 d 视图中查询数据,但d视图本身内涵已经选择的数据不会出现在视图中,导致根据 id 再去 d 视图查,就查不到数据,导致不能正常回显。5,字符串类型的主键,选择的是数据 A,后台id是 001;回显成了数据B,B的id是 100101 之类。提交技术支持流程,总部提供更新文件,升级解决。6,表达式:$abc$ 用于在表单字段上取得当前表单值,?abc 用于取得某些默认的固定值。这两种类型的表达式,所有字符必须全部是小写字符7,select id , a ,b from d where b='$xxx$' and usercode='?workcode' -表达式两边用单引号引用起来,以免未获得值时后台出现SQL执行报错8,select * from (select id , a ,b from d where b=空格 '$xxx$' 空格 ) t -表达式两边留出空格9,主键不唯一:使用此查询关联页面其它字段时id唯一,如:select id , a ,b from d where type='$type$' 如果直接使用,则id不唯一,如:select id , a ,b from d方案1:-针对只做保存回显,不在需要根据此字段值还联动其它字段值的情况oracle: select * from ( select type|'_'|id as id , a ,b from d where type= '$type$' )t -使用type加id的形式组合成字符串类型联合主键方案2:-其它字段要根据选择的主键还要联动出值,故而主键不能变。要求数据,同样 id 的数据除过 type 区分外,要显示的 a 字段值都一样。oracle: select * from (select id , a ,max(b) as b from d where type= '$type$' group by id,a ) t -使用分组函数10,使用了固定取值表达式: ?userid ?loginid ?username ?workcode ?password ?departmentid ?departmentcode ?departmentname ?subcompanyid ?subcompanycode ?subcompanyname这些表达式在创建节点第一次选择值时,会带出当前登录者相关的对应信息,但后续表单值已经保存后回显时,于此相关的条件都会替换成 1=1 ,编写SQL时,一定要考虑回显会忽略人的问题,考虑到人这个条件被替换成 1=1 时,sql 附加上选中的 id 作为条件,是否还能正常查询,并返回唯一的一条数据。编写SQL : select id , a ,b from d where b='?departmentcode'自动计算出的回显SQL : select id , a ,b from d where 1=1 and id=表单上保存的id11,刚建立流程并提交的几天数据正常回显,过一段时间后选择的数据回显不了:检查 SQL 或 视图 中是否有取数据库时间类型的函数如:sysdate,getdate() 等。select id , a ,b from d where b=to_char(sysdate, 'MM')此 SQL 意为只提供本月的数据以供选择。 但选择后,会导致只有在每年的本月(如12月),数据在流程上正常回显,其它月份流程上此选择的数据都回显不了。因为选择的数据 id 是属于 12 月里的,如果到了非 12 月的时候,能查出的数据里面,本就没有了此条数据,那么相当于(1月时):select id , a ,b from d where b='01' and id=表单上保存的12月的id此条回显 SQL 不能查询到数据,故而不能正常回显。属于上面的第四点,逻辑悖论。解决方案:在流程表单上增加一个日期(或月份)类型字段,默认当前时间,查询sql中使用此字段表达式。select id , a ,b from d where b='$createMonth$'12, 使用了数据库函数:getdate() 等。流程点开放大镜后页面没数据。提交技术支持流程,总部提供更新文件(针对性不整理到标准产品的修改),升级解决。13,WebService示例注:首先在WebService中注册该Service,选择相应方法,根据WebService返回的XML格式文件进行配置(数据库直接配置字段,XML则配置XML路径),例如WebService返回<?xml version="1.0" encoding="GBK"?><list><user><id>1</id><name>ipaddress</name><value>test</value></user><user><id>2</id><name>xmlData</name><value>test</value></user></list>,则配置为:list/user/name或者list/user/value等等3. 流程流转集成一、概述流程流转集成是用来集中管理在流程中可被调用的三种接口程序,在这里集中进行管理,并可以查看这些接口程序被哪些流程所调用。二、流程接口注册1、点击流程流转接口后显示如图1所示图1· 分别点击【注册DML接口】、【注册WebService接口】、【注册自定义接口】后可以创建相应的接口配置;· 在已有的列表菜单中点击【编辑】按钮可以修改现有的接口信息;· 点击【删除】按钮可以删除现有的接口。2.1 注册WebService1. 填写名称及选择相应表单2. 选择相关方法3. 填写命名空间(注,必须填写,否则将会出错)4. 填写参数(注:参数传如果是表单字段,则直接填写字段名称(不是字段编号)5. 设计返回值6. 参数设置(传入参数名称必须与Webservice提供方法的参数名称一至,则参将xml内容传到WebService,则否该参数为无效参数三、流程接口部署1、在流程接口部署页面,我们可以查看设置的每一个接口被哪些流程所应用,如图2所示,图2· 点击【新建】按钮,可以将已注册的接口与流程关联;· 点击列表菜单【编辑】按钮,可以修改现有的部署,删除已有的关联或添加新的关联。2、在图1中点击【新建】按钮后显示如图3所示,我们可以选择在哪个流程中添加接口。注:数据展现集成与流程流转集成功能还有功能性问题,后续补丁包将可能解决可能出现的问题,如有问题,请直接联系【精品文档】