




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
泛微协同办公应用平台e-cology接口培训文档IntegrationManualsofWeavere-cology™SubmittedByWeaver泛微软件有限公司中国上海浦东软件园陆家嘴分园峨山路91弄101号3层邮政编码:200127电话:+862150942228传真:+862150942278仅限阅读请勿传播当您阅读本方案时,即表示您同意不传播本方案的所有内容
泛微协同办公应用平台e-cology接口培训文档IntegrationManualsofWeavere-cology™SubmittedByWeaver泛微软件有限公司中国上海浦东软件园陆家嘴分园峨山路91弄101号3层邮政编码:200127电话:+862150942228传真:+862150942278仅限阅读请勿传播当您阅读本方案时,即表示您同意不传播本方案的所有内容版本文档简要信息:文档主题(Title)泛微协同办公应用平台e-cology接口培训文档作者(Author)陈文建审批者(ToBeApprovedBy)说明(Comments)文件名称(FileName)泛微协同办公应用平台e-cology接口培训文档.doc文档版本历史:序号日期版本变更说明修改人注释V1.0陈文建
目录版本 2第一部分 数据源配置 5一. 接口说明 5二. 实现方法&步骤 51. 配置数据源文件datasource.xml(该文件位于e-cology的WEB-INF/service/目录下) 52. 属性说明 63. 在5.0及以上版本可以直接在进行可视化的配置 64. 可视化配置属性说明 75. 如何引用该数据源 7第二部分 自定义定时器 9一. 接口说明 9二. 实现方法&步骤 91. 配置调度文件schedule.xml(该文件位于e-cology的WEB-INF/service/目录下) 92. 属性说明 103. 在5.0及以上版本对于CronJob可以直接在进行可视化的配置 104. 可视化配置属性说明 105. 如何实现任务执行的操作 116. CronExpr表达式 12第三部分 流程流转过程中和异构系统数据交互(action) 14一. 接口说明 14二. 应用效果 14三. 实现方法&步骤 161. xml文件配置 162. 属性说明 173. 在5.0及以上版本可以直接在进行可视化的配置 174. 可视化配置属性说明 185. Action接口代码编写 186. 流程节点附加操作接口调用 207. 控制action不往下流转 20第四部分 获取异构系统数据至流程字段(自定义浏览框) 21一. 接口说明 21二. 应用效果 21三. 实现方法&步骤 211. 配置接口文件 212. 属性说明 233. 在5.0及以上版本可以直接在进行可视化的配置 234. 可视化配置属性说明 245. 获取异构系统的数据作为流程字段的系统设置 25四. 高级应用(浏览框数据联动) 26第五部分 短信API接口 31一. 接口说明 31二. 实现方法&步骤 311. xml文件配置 312. 短信设备配置文件修改 323. 自定义代码开发实现方式 344. 在5.0及以上版本可以直接在进行可视化的配置 35第六部分 流程自定义页面接口 37一. 接口说明 37二. 实现方法&步骤 37三. 应用 38第七部分 流程提交前执行自定义函数 40一. 接口说明 40二. 实现方法&步骤 40第八部分 Sap自定义浏览按钮 42一. 接口说明 42二. 实现方法&步骤 42第九部分 Html模式的流程应用 51一. 接口说明 51二. 应用案例 51第十部分 文档webservices接口 66一. 接口说明 66二. 使用说明 66第十一部分 工作流程webservices接口 82一. 接口说明 82二. 使用说明 822.2.2接口说明 822.2.3调用实例 90第十二部分 人力资源webservices接口 96一. 接口说明 96二. 使用说明 961) 检查webservice是否已部署 962) 接口方法概述 963) 接口相关对象说明 984) 示例程序 109 使用客户端同步公司信息 109
数据源配置接口说明该接口主要用来在e-cology配置和异构系统的数据库的链接方式,通过此链接在e-cology中直接操作其他系统的数据。该接口适用于SQLSERVER,ORACLE,MYSQL,DB2,INFORMIX,SYBASE结构型数据库。实现方法&步骤配置数据源文件datasource.xml(该文件位于e-cology的WEB-INF/service/目录下)<?xmlversion="1.0"encoding="GBK"?><moduleid="datasource"version="1.0.0"><service-pointid=“dt1"interface="erfaces.datasource.DataSource"><invoke-factory><constructclass="erfaces.datasource.BaseDataSource"><setproperty="type"value="oracle"/><setproperty="host"value="05"/><setproperty="dbname"value=“erp"/><setproperty="user"value="xmgl"/><setproperty="password"value="12345"/> <setproperty="minconn"value="5"/> <setproperty="maxconn"value="10"/></construct></invoke-factory></service-point><service-pointid=“dt2"interface="erfaces.datasource.DataSource"><invoke-factory><constructclass="erfaces.datasource.BaseDataSource"><setproperty="type"value="oracle"/><setproperty="host"value="04"/><setproperty="port"value="1521"/><setproperty="dbname"value=“test"/><setproperty="user"value="xmgl"/><setproperty="password"value="12345"/> <setproperty="minconn"value="5"/> <setproperty="maxconn"value="10"/></construct></invoke-factory></service-point></module>上文中配置两个数据源,其中黑体部分是在配置每个数据源时需要改变的内容。注意:每次配置后需要重启OA服务方可生效;属性说明Id;这个是引用该数据源的唯一标识Type:数据库类型(sqlserver2000,sqlserver2005,sqlserver2008,oracle,mysql,Informix,db2,sybase)Host:数据库服务器地址port:数据库服务的端口号Dbname:数据库名(实例名)User:访问数据库的用户名password:访问数据库的密码minconn,maxconn:访问该数据库最大连接和最小连接在5.0及以上版本可以直接在进行可视化的配置通过顶部菜单【设置中心】【外部接口设置】【数据源配置】即可进入配置界面点击右键【新建】即可创建一个新的数据源注意:该配置,不需要重启OA服务即可生效;可视化配置属性说明数据源名称,即xml配置中的id;这个是引用该数据源的唯一标识数据库类型,即xml配置中的Type:数据库类型(sqlserver2000,sqlserver2005,sqlserver2008,oracle,mysql,Informix,db2,sybase)服务器ip,即xml配置中的Host:数据库服务器地址端口号,即xml配置中的port:数据库服务的端口号数据库名,即xml配置中的Dbname:数据库名(实例名)用户名,即xml配置中的User:访问数据库的用户名密码,即xml配置中的password:访问数据库的密码最小连接数、最大连接数,即xml配置中的minconn,maxconn:访问该数据库最大连接和最小连接如何引用该数据源定义上面的数据源后可以在其他接口开发中直接使用,配合其他接口,还可以有其他方式引用数据源,在后面将有介绍packageweaver.workflow.datasourcetest;importweaver.general.StaticObj;importerfaces.datasource.DataSource;importjava.sql.CallableStatement;importjava.sql.Connection;importjava.sql.SQLException;importweaver.general.BaseBean;publicclassdatasourcetest{/***获取自定义datasource的connection**@paramdatasourceid*数据源id,为datasource.xml中的module.id+"."+service-point.id,如datasource.dt1*@return*/publicConnectiongetConnection(Stringdatasourceid){Connectionconn=null;try{DataSourcedatasource=(DataSource)StaticObj.getServiceByFullname(datasourceid,DataSource.class);//获取数据源的信息conn=datasource.getConnection();//和数据源取得连接}catch(Exceptione){}returnconn;}/***关闭Connection**@paramconn*/publicvoidcloseConnection(Connectionconn){if(conn!=null){try{conn.close();}catch(SQLExceptione){writeLog(e);}}}}
自定义定时器接口说明该接口用来用户在e-cology系统自由定义一些需要定时执行的操作,它是由Quartz这一个开源的作业调度框架来实现;该接口通过配置调度时间和自行开发调度动作来实现需要定时执行的任务。该接口提供了两种调度方式IntervalJob接口,此接口每隔一段时间执行一次(自己定义间隔时间)CronJob接口,此接口在指定的时间点执行(自己定义时间点)在开发调度动作需要实现e-cology提供的自定义动作接口。实现方法&步骤配置调度文件schedule.xml(该文件位于e-cology的WEB-INF/service/目录下)<?xmlversion="1.0"encoding="GBK"?><moduleid="datasource"version="1.0.0"><service-pointid="job1"interface="erfaces.schedule.IntervalJob"><invoke-factory><constructclass="MyIntervalJob"> <set-serviceproperty="ds"service-id="datasource.dt1"/><setproperty="second"value="60"/><setproperty="userid"value="100"/></construct></invoke-factory></service-point><service-pointid="job2"interface="erfaces.schedule.CronJob"><invoke-factory><constructclass="MyCronJob"> <set-serviceproperty="ds"service-id="datasource.dt2"/><setproperty="cronExpr"value="04412?*MON-FRI"/><setproperty="userid"value="100"/></construct></invoke-factory></service-point>上文中配置两个调度任务job1,job2,实现了两种调度策略,其中黑体部分是在配置每个调度时需要改变的内容;注意:每次配置后需要重启OA服务方可生效;属性说明Id:唯一标识该调度任务,无其他作用service-id:上文定义的自定义数据源,如果任务执行的动作中需要和数据源中的数据库交付数据,需要设置该属性class:该任务真正执行的操作,其中job1中MyIntervalJob必须继承erfaces.schedule.IntervalJob,job2中MyCronJob必须继承erfaces.schedule.CronJob;继承后需要实现的方法是其中的execute();value:任务执行的频率,在JOB1中表示没60秒执行一次,在JOB2中表示每周一到周五12:44执行(JOB2的执行频率配置方式和一般LINUX操作系统的定时任务配置方式一致)在5.0及以上版本对于CronJob可以直接在进行可视化的配置通过顶部菜单【设置中心】【外部接口设置】【配置计划任务接口】即可进入配置界面点击右键【新建】即可创建一个新的【计划任务】注意:该配置,不需要重启OA服务即可生效可视化配置,目前不支持其它属性的配置,如上面的配置文件中的<set-serviceproperty="ds"service-id="datasource.dt2"/><setproperty="userid"value="100"/>所有建议大家在使用该接口的时候,可以直接去修改xml文件,可视化配置会在后期完善。可视化配置属性说明计划任务标识,即xml配置中的Id:唯一标识该调度任务,无其他作用计划任务类,即xml配置中的class:该任务真正执行的操作,MyCronJo必须继承erfaces.schedule.CronJob;继承后需要实现的方法是其中的execute();定时时间,即xml配置中的value:任务执行的频率,表示每周一到周五12:44执行(执行频率配置方式和一般LINUX操作系统的定时任务配置方式一致)如何实现任务执行的操作实现定时执行的操作,实际上就是实现erfaces.schedule.BaseIntervalJob或者erfaces.schedule.BaseCronJob中的execute()方法importerfaces.schedule.BaseIntervalJob;importjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.ResultSet;/***IntervalJob示范代码,集成BaseIntervalJob,用自己的业务逻辑覆盖了execute()方法,实际使用中这里可以编写用户需要实现的代码*/publicclassMyIntervalJobextendsBaseIntervalJob{//获得自定义属性userid的值privateStringuserid;publicStringgetUserid(){ returnuserid;}publicvoidexecute(){//从数据源中获取连接Connectionconn=getDs().getConnection();//此处是取得上文定义的数据源dt1,如果需要操作其他系统的数据才需要该定义try{//通过jdbc获取人数PreparedStatements=conn.prepareStatement("selectcount(*)asamountfromhrmresource");//此时假设在数据源dt1定义的数据库中有hrmresource表ResultSetrs=s.executeQuery();rs.next();Stringamount=rs.getString("amount");//输出到控制台System.out.println("人数:"+amount);//关闭记录集rs.close();//关闭statements.close();}catch(Exceptione){}finally{try{//关闭连接conn.close();}catch(Exceptione){}}}}CronExpr表达式一个cron表达式有至少6个有空格分隔的时间元素,按顺序依次为:秒(0~59)分钟(0~59)小时(0~23)天(月)(0~31,但是你需要考虑你月的天数)月(0~11)天(星期)(1~71=SUN或SUN,MON,TUE,WED,THU,FRI,SAT)
0010,14,16**?每天上午10点,下午2点,4点00/309-17**?朝九晚五工作时间内每半小时0012?*WED表示每个星期三中午12点"0012**?"每天中午12点触发"01510?**"每天上午10:15触发"01510**?"每天上午10:15触发"0*14**?"在每天下午2点到下午2:59期间的每1分钟触发"00/514**?"在每天下午2点到下午2:55期间的每5分钟触发"00/514,18**"在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发"00-514**?"在每天下午2点到下午2:05期间的每1分钟触发"010,4414?3WED"每年三月的星期三的下午2:10和2:44触发"01510?*MON-FRI"周一至周五的上午10:15触发"0151015*?"每月15日上午10:15触发"01510L*?"每月最后一日的上午10:15触发"01510?*6L"每月的最后一个星期五上午10:15触发"01510?*6#3"每月的第三个星期五上午10:15触发
有些子表达式能包含一些范围或列表例如:子表达式(天(星期))可以为“MON-FRI”,“MON,WED,FRI”,“MON-WED,SAT”“*”字符代表所有可能的值因此,“*”在子表达式(月)里表示每个月的含义,“*”在子表达式(天(星期))表示星期的每一天“/”字符用来指定数值的增量例如:在子表达式(分钟)里的“0/15”表示从第0分钟开始,每15分钟在子表达式(分钟)里的“3/20”表示从第3分钟开始,每20分钟(它和“3,23,43”)的含义一样
“?”字符仅被用于天(月)和天(星期)两个子表达式,表示不指定值当2个子表达式其中之一被指定了值以后,为了避免冲突,需要将另一个子表达式的值设为“?”
流程流转过程中和异构系统数据交互(action)接口说明该接口主要实现在流程的流转当中,实时通过自定义的动作去操作异构形体系统的数据或者是其他一些特定的操作。在流程的每个出口都可以定义这样的自定义动作,从而实现在流程流转过程导入,导出流程的相关信息,或者将流程信息和其他应用相结合。应用效果通过e-cology流程申请处理:流程提交或处理结束后,报销流程中的数据会自动生成到NC系统中:查询后的结果:从这里可以查看到从e-cology提交过来的对应数据:实现方法&步骤1、配置接口文件(action.xml)2、编写接口(action)实现代码3、流程管理员把action.xml中定义的接口设置为流程节点附加操作后,就可以实现流程到达该节点前(或离开该节点后)执行接口实现代码。4、在流程设置中应用该功能xml文件配置该文件名为action.xml,位于(该文件位于e-cology的WEB-INF/service/目录下)<?xmlversion="1.0"encoding="GBK"?><moduleid="datasource"version="1.0.0"><service-pointid="baseAction"interface="erfaces.workflow.action.Action"><invoke-factory><constructclass="erfaces.workflow.action.BaseAction"> <set-serviceproperty="ds"service-id="datasource.dt1"/><setproperty="userid"value="100"/></construct></invoke-factory></service-point>说明:以上定义了一个id为baseAction的action,其中黑体部分是在配置每个动作时需要改变的内容;注意:每次配置后需要重启OA服务方可生效;属性说明Id:为该动作的id,不能重复,在后文件将会使用该标识Class:具体实现的动作类service-id:为该动作要使用的数据源,如果该动作需要好异构系统交互数据,在此可以设置前文配置好的数据源。如果添加一个新的动作,只需修改以上的参数就可以如果一个动作中,用到多个数据源,也可以类似的添加进去,如:<set-serviceproperty="ds1"service-id="datasource.xxx"/>只要property的值不相同就可以。配置其它属性值,可以安装下面的方式配置,可以配置多个,但property的值不能重复<setproperty="userid"value="100"/>在5.0及以上版本可以直接在进行可视化的配置通过顶部菜单【设置中心】【外部接口设置】【配置接口动作】即可进入配置界面点击右键【新建】即可创建一个新的【接口动作】注意:该配置,不需要重启OA服务即可生效可视化配置目前不支持数据源和属性值配置,后期会完善。可视化配置属性说明接口动作标识,即xml配置中的Id:为该动作的id,不能重复,在后文件将会使用该标识接口动作类文件,即xml配置中的Class:具体实现的动作类Action接口代码编写编写接口(action)实现代码,在上面的配置中,具体要实现的动作将体现在erfaces.workflow.action.BaseAction类中。该类必须实现erfaces.workflow.action.Action接口,该接口中包含execute(RequestInforequest),这个方法会在流程节点到达前或节点到达后被e-cology调用。示例代码:packageerfaces.workflow.action;importmons.logging.Log;importmons.logging.LogFactory;importweaver.general.Util;importweaver.soa.workflow.request.Cell;importweaver.soa.workflow.request.DetailTable;importweaver.soa.workflow.request.Property;importweaver.soa.workflow.request.RequestInfo;importweaver.soa.workflow.request.Row;publicclassBaseActionimplementsAction{ publicStringexecute(RequestInforequest){ //取主表数据 Property[]properties=request.getMainTableInfo().getProperty();//获取表单主字段信息 for(inti=0;i<properties.length;i++){ Stringname=properties[i].getName();//主字段名称 Stringvalue=Util.null2String(properties[i].getValue());//主字段对应的值 System.out.println(name+""+value); } //取明细数据 DetailTable[]detailtable=request.getDetailTableInfo() .getDetailTable();//获取所有明细表 if(detailtable.length>0){ for(inti=0;i<detailtable.length;i++){ DetailTabledt=detailtable[i];//指定明细表 Row[]s=dt.getRow();//当前明细表的所有数据,按行存储 for(intj=0;j<s.length;j++){ Rowr=s[j];//指定行 Cellc[]=r.getCell();//每行数据再按列存储 for(intk=0;k<c.length;k++){ Cellc1=c[k];//指定列 Stringname=c1.getName();//明细字段名称 Stringvalue=c1.getValue();//明细字段的值 System.out.println(name+""+value); } } } } returnAction.SUCCESS; }}以上class中可以在execute(RequestInforequest)方法中定义任何想要执行的操作,上面的示例描述了在execute(RequestInforequest)方法中获取当前流程的所有信息。流程节点附加操作接口调用在e-cology流程管理中配置一下节点附加操作可以看到下图所示,可以在任意一个节点上设置,当流程流到改节点,自动触发预先定义好的动作以上网页对话框中红色部分接口动作将显示所有定义过的接口动作供选择调用。控制action不往下流转该功能只对节点后action有效,可以在action里面使用下面的方法来控制获取异构系统数据至流程字段(自定义浏览框)接口说明e-cology系统的流程数据由表单组成,表单有字段组成,这些字段的数据可以来自于e-cology系统,也可以通过该接口直接获取异构系统的结构型数据。应用效果获取异构系统人员列表:如图中表单中的“浏览框”直接显示了异构系统的人员数据:实现方法&步骤配置接口文件文件browser.xml(该文件位于e-cology的WEB-INF/service/目录下)<?xmlversion="1.0"encoding="GBK"?><moduleid="browser"version="1.0.0"><dependencymodule-id="datasource"version="1.0.0"/><service-pointid="resourceBrowser"interface="erfaces.workflow.browser.Browser"><invoke-factory><constructclass="erfaces.workflow.browser.BaseBrowser"> <set-serviceproperty="ds"service-id=“datasource.dt1"/> <setproperty="search"value="selectid,lastname,emailfromhrmresource"/> <setproperty="searchById"value="selectlastname,emailfromhrmresourcewhereid=?"/> <setproperty="searchByName"value="selectid,lastname,emailfromhrmresourcewherelastnamelike?"/> <setproperty="nameHeader"value="姓名"/><setproperty="descriptionHeader"value="邮件"/></construct></invoke-factory></service-point><service-pointid="bd_corp"interface="erfaces.workflow.browser.Browser"><invoke-factory><constructclass="erfaces.workflow.browser.BaseBrowser"> <set-serviceproperty="ds"service-id="datasource.dt2"/> <setproperty="search"value="selectunitcode,unitcode,unitnamefrombd_corpbwhereisseal='N'orderbyb.unitcode"/> <setproperty="searchById"value="selectunitcode,unitnamefrombd_corpwhereisseal='N'andunitcode=?"/> <setproperty="searchByName"value="selectunitcode,unitcode,unitnamefrombd_corpbwhereisseal='N'andunitcodelike?orderbyb.unitcode"/> <setproperty="nameHeader"value="公司编码"/><setproperty="descriptionHeader"value="公司名称"/></construct></invoke-factory></service-point></module>以上配置文件中,实现了两个自定义数据浏览页面,黑体部分对于每个配置<service-poin></service-poin>必须根据需要个性化定义。每个配置文件中可以有多个<service-point></service-pointt>。注意:每次配置后需要重启OA服务方可生效;上面示例中非黑色粗体部分,不允许做任何修改。属性说明service-pointid:每个异构系统浏览数据的标识,在系统界面设置见根据该ID引用数据service-id:设置前文配置的数据源,通过该数据源获取异构系统的数据search:这里配置获取数据的SQL语句,注意要保证获取三个字段,如果字段不足则以常量表示如:selectid,1,2fromtable,该sql的作用指的是点开浏览按钮的时候可选数据的范围,注意该sql第一个返回值必须为唯一标识:一般是id之类,第二个返回值为显示在浏览按钮第一列的数据,第三个返回值为显示在浏览按钮第二列的数据,只要符合上面几个要求的select语句都可以。searchById:这里配置获取数据的SQL语句,注意要保证获取两个个字段,如果字段不足则以常量表示如:selectname,2fromtablewhereid=?,该sql的作用指的是,当选中一个值之后,显示什么数据在表单中(包括提交后,后续节点的的显示),注意该sql第一个返回值,就是显示在表单中的内容,第二个返回值暂无具体作用,where后面的带变量的条件就是第一条一句中的唯一标识。只要符合上面几个要求的select语句都可以。searchByName:这里定义在浏览按钮选择数据页面可供查询的关键字,注意要保证获取三个字段,如果字段不足则以常量表示如:selectid,1,2fromtable,该sql的作用指的是点开浏览按钮的时候对浏览按钮中的数据进行查询使用的,注意该sql(where前面的内容需要和search中的sql保持一致),where后面的变量为第二列。只要符合上面几个要求的select语句都可以。nameHeader:这里定义选择数据页面数据列的列名称descriptionHeader:这里定义选择数据页面数据列的列名称对于6.0以上版本的,search中的select语句中的条件还可以变量$userid$传入当前登录账号的id,来进一步筛选可选数据,作为控制权限的一种发放,如要实现,每个人只能选择自己创建的流程就可以通过这个sql实现:SELECTa.requestid,a.requestname,b.lastnameFROMworkflow_requestbaseaINNERJOINHrmResourcebONa.creater=b.idwherecreater=$userid$orderbyrequestiddesc在5.0及以上版本可以直接在进行可视化的配置通过顶部菜单【设置中心】【外部接口设置】【配置自定义浏览按钮】即可进入配置界面点击右键【新建】即可创建一个新的【自定义浏览按钮】注意:该配置,不需要重启OA服务即可生效可视化配置属性说明自定义浏览按钮标识,即xml配置中的service-pointid:每个异构系统浏览数据的标识,在系统界面设置见根据该ID引用数据数据源,即xml配置中的service-id:设置前文配置的数据源,通过该数据源获取异构系统的数据无条件查询,即xml配置中的search:这里配置获取数据的SQL语句,注意要保证获取三个字段,如果字段不足则以常量表示如:selectid,1,2fromtable,该sql的作用指的是点开浏览按钮的时候可选数据的范围,注意该sql第一个返回值必须为唯一标识:一般是id之类,第二个返回值为显示在浏览按钮第一列的数据,第三个返回值为显示在浏览按钮第二列的数据,只要符合上面几个要求的select语句都可以。条件1查询,即xml配置中的searchById:这里配置获取数据的SQL语句,注意要保证获取两个个字段,如果字段不足则以常量表示如:selectname,2fromtablewhereid=?,该sql的作用指的是,当选中一个值之后,显示什么数据在表单中(包括提交后,后续节点的的显示),注意该sql第一个返回值,就是显示在表单中的内容,第二个返回值暂无具体作用,where后面的带变量的条件就是第一条一句中的唯一标识。只要符合上面几个要求的select语句都可以。条件2查询,即xml配置中的searchByName:这里定义在浏览按钮选择数据页面可供查询的关键字,注意要保证获取三个字段,如果字段不足则以常量表示如:selectid,1,2fromtable,该sql的作用指的是点开浏览按钮的时候对浏览按钮中的数据进行查询使用的,注意该sql(where前面的内容需要和search中的sql保持一致),where后面的变量为第二列。只要符合上面几个要求的select语句都可以。列1显示名,即xml配置中的nameHeader:这里定义选择数据页面数据列的列名称列2显示名,即xml配置中的descriptionHeader:这里定义选择数据页面数据列的列名称对于6.0以上版本的,search中的select语句中的条件还可以变量$userid$传入当前登录账号的id,来进一步筛选可选数据,作为控制权限的一种发放,如要实现,每个人只能选择自己创建的流程就可以通过这个sql实现:SELECTa.requestid,a.requestname,b.lastnameFROMworkflow_requestbaseaINNERJOINHrmResourcebONa.creater=b.idwherecreater=$userid$orderbyrequestiddesc获取异构系统的数据作为流程字段的系统设置声明完上述XML文件可以在e-cology表单字段管理中进行配置如何调用异构系统的数据,调用上述配置的方式为browser.service-pointid,上述配置将形成browser.resourceBrowser,browser.bd_corp两个选项设置完成,就可以实现在上文所示的流程界面某字段直接获取配置好的异构数据中的数据。配置到流程中之后就可以直接使用了 高级应用(浏览框数据联动)1、功能介绍支持流程页面上的字段的值作为自定义浏览按钮的sql查询条件。2、应用场景 配置一个自定义浏览按钮,用来读起某个部门下面的人,我们可以通过下面的方式来实现。比如:某个流程表单中有a2这个字段,以及人力资源单选a5和人力资源多选a6,如下图:现在需要将a2这个字段的值作为人力资源单选a5和人力资源多选a6的查询条件,只查询申请人部门下面的的人员,那么人力资源浏览按钮需要按照下面的方式配置:具体sql如下:<setproperty="search"value="selectid,lastname,loginidfromhrmresourcewheredepartmentid=$a2$"/><setproperty="searchById"value="selectlastname,loginidfromhrmresourcewhereid=?"/><setproperty="searchByName"value="selectid,lastname,loginidfromhrmresourcewheredepartmentid=$a2$andlastnamelike?"/>说明: 上面的配置用到了流程表单中的a2这个字段,那么在配置的时候需要将a2用$$框起来($a2$)。明细字段的值作为明细字段里面的浏览按钮的查询条件:比如: 上面我配置的浏览自定义浏览按钮,使用了明细分部这个字段作为查询条件。配置的sql如下:代码:<setproperty="search"value="selectid,departmentname,subcompanyid1fromHrmDepartmentwheresubcompanyid1=$formtable_main_337_dt1_d3$"/><setproperty="searchById"value="selectdepartmentname,idfromHrmDepartmentwhereid=?"/><setproperty="searchByName"value="selectid,departmentname,idfromHrmDepartmentwheresubcompanyid1=$formtable_main_337_dt1_d3$anddepartmentnamelike?"/>说明:因为明细字段和字段的字段名有可能会重复,所有明细字段的字段名需要加上明细表的表名。如:$formtable_main_337_dt1_d3$,其中“formtable_main_337_dt1”表名,“d3”为字段名,然后用“_”连接表名和字段名。关于表名如何去获取,可以通过下面的方法获得:1、进入表单管理,找到对应的表单,然后把鼠标放在表单名字的上面,在ie左下角的状态栏里面会显示表单的id,如下图,-337即为cwjtest表单的id。2、获得了表单id后,表单的表名就为formtable_main_337,其中“formtable_main_”为固定值,“337”为表单id的绝对值。3、表单明细的表名为上面找到的表单表名加上”_dt”以及明细表的序号即可。比如:明细表1的表名为:formtable_main_337_dt1明细表2的表名为:formtable_main_337_dt2上面的配置说明是针对自定义单据。如果是老表达,如下图:这种老表单,使用系统字段的话,就只需要加上detail_字段名就行。比如用到上面的cl3,写成$detail_cl3$即可。特别声明:上面searchById的对应的sql也不允许用流程字段作为查询条件系统自定义单据,支持明细数据作为查询条件。使用效果图如下:
短信API接口接口说明该接口用来实现调用各短信厂商提供的短信发送网关或者信息机实现e-cology短信发送的功能。实现方法&步骤实现方法分为两类:一类是使用中间表方式实现,另外一类是可自行编写接口代码方式来调用方法;中间表实现方法:接口的原理很简单,就是e-cology只负责把需要发送的短信数据放到中间表里,由短信设备供应商或客户自己把中间表里的数据发送出去。实际上大多数短信设备供应商已经实现了通过中间表方式发送短信。接口对中间表的存放的位置、中间表名及字段名没有要求,因为往中间表插入数据的sql是在配置文件中指定的,但是有两点要注意1.
必须使用sqlserver、oracle、mysql、db2数据库,其他的数据库暂时不支持。2.
必须有用于存放短信内容、短信接受人的字段。使用说明:在理解了上面的原理之后,我们可以继续了解配置使用接口的方法。xml文件配置文件位于ecoloyg/WEB-INF/service/sms.xml,打开这个文件,里面的内容如下:<moduleid="sms"version="1.0.0"><service-pointid="smssender"interface="weaver.sms.SmsService"><invoke-factory><constructclass="weaver.sms.JdbcSmsService"><setproperty="type"value="sqlserver2000"/><setproperty="host"value="04"/><setproperty="port"value="1433"/><setproperty="dbname"value="ecology3802"/><setproperty="username"value="sa"/><setproperty="password"value="123"/><setproperty="sql"value="insertintoOutBox(ReceiverMobileNo,Msg,SendTime,IsChinese,ExpressLevel,Sender)values(?,?,getDate(),1,1,1)"/></construct></invoke-factory></service-point></module>我们需要关注的是红色部分的内容。我逐一讲解一下.<setproperty="type"value="sqlserver2000"/>:指定中间表所在数据库的类型,如果是oracle的话就改为value="oracle"<setproperty="host"value="04"/>:指定中间表所在数据库服务器的ip<setproperty="port"value="1433"/>:指定中间表所在数据库的端口,如果是oracle的话应改为1521<setproperty="dbname"value="ecology3802"/>:指定中间表所在数据库名<setproperty="username"value="sa"/>:指定中间表所在数据库帐号<setproperty="password"value="123"/>:指定中间表所在数据库密码以上的配置和perties中的参数差不多,应该不难理解。<setproperty="sql"value="insertintoOutBox(ReceiverMobileNo,Msg,SendTime,IsChinese,ExpressLevel,Sender)values(?,?,getDate(),1,1,1)"/>:指定往中间表插入数据使用的sql语句。表名:OutBox字段:ReceiverMobileNo,接受人Msg,短信内容SendTime,发送时间IsChinese,是否中文ExpressLevel,紧急程度Sender发送人实际上我们只需要用到接受人和短信内容两个字段,这两个字段的值不是固定的,由我们的接口负责把数据传过来,因此用?号表示他们的值。其他字段的值我们不关心,可以随便写死一些数据,这个例子里全部写的1,发送时间是用sqlserver自带的函数getDate()获取的。我们可以这样理解,最简单的中间表可以是这样子的:表名:someTable字段:MobileNo,messageBody短信设备配置文件修改修改ecology/WEB-INF/prop/weaver_perties中的内容为:#configfile#FriAug1311:30:56CST2004IsInitRTXOrg=trueIsDownLineNotify=trueCurSmsServer=cusCurSmsServerIsValid=trueRTXServerPort=8036RTXServerIP=RTXServerOutIP=也就是说只要把CurSmsServer的值修改为cus,代表使用第三方中间件发短信。中间表之sql脚本样例下面提供两个建中间表的sql脚本供参考:forsqlserverCREATETABLEoutbox( IDintIDENTITY(1,1), ExpressLevelint, Sendervarchar(50), ReceiverMobileNovarchar(50), Msgvarchar(500), SendTimedatetime, IsChinesebit )fororaclecreatetableOUTBOX(IDNUMBERnotnull,EXPRESSLEVELNUMBER,SENDERVARCHAR2(50),RECEIVERMOBILENOVARCHAR2(50)notnull,MSGVARCHAR2(500),SENDTIMEDATEnotnull,ISCHINESENUMBERnotnull);createsequenceOUTBOX_ID_SEQminvalue1maxvalue999999999startwith141incrementby1cache20;CREATEORREPLACETRIGGER"SET_OUTBOX_ID"BEFOREINSERTON"OUTBOX"FOREACHROWDECLARENEXT_OUTBOX_IDNUMBER;BEGINSELECTOUTBOX_ID_SEQ.NEXTVALINTONEXT_OUTBOX_IDFROMDUAL;:NEW.ID:=NEXT_OUTBOX_ID;END;
oracle下对应的sms.xml文件内容为:<moduleid="sms"version="1.0.0">
<service-pointid="smssender"interface="weaver.sms.SmsService">
<invoke-factory>
<constructclass="weaver.sms.JdbcSmsService">
<setproperty="type"value="oracle"/>
<setproperty="host"value="04"/>
<setproperty="port"value="1521"/>
<setproperty="dbname"value="weaver1"/>
<setproperty="username"value="ecology40002"/>
<setproperty="password"value="ecology"/>
<setproperty="sql"value="insertintoOutBox(ReceiverMobileNo,Msg,SendTime,IsChinese,ExpressLevel,Sender)values(?,?,(selectsysdatefromdual),1,1,'1')"/>
</construct>
</invoke-factory>
</service-point>
</module>
注意:每次配置后需要重启OA服务方可生效;
自定义代码开发实现方式实际上使用中间表来和短信供应商集成只是我们通用接口的一部
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年企业管理师考试试题及答案拓展
- 2025年统计师职业资格考试试卷及答案
- 2025年数字营销师考试试题及答案
- 2025年护理管理与实践考试试题及答案
- 2025年创意写作与文学分析考试卷及答案
- 知识产权收益分割与科技成果转化合作协议
- 金融机构间货币结算服务协议补充
- 离职人员保密协议与竞业限制合同(体育用品行业)
- 购物中心珠宝区品牌租赁与区域市场合作合同
- 城市级停车诱导系统与城市供电合同
- 大学生建筑类创业项目
- 医院药品二级库房管理
- 《无人机操控基础》课件
- 检测糖化白蛋白临床意义
- 女小学生关于月经的课件
- 应急广播终端安装施工规范
- 以“蛋白质”为主线的单元境脉设计与教学重构
- 墙面木饰面施工方案
- 案例3 哪吒-全球首个“海空一体”跨域航行器平台
- 奇恒之腑课件
- 医院保密培训课件
评论
0/150
提交评论