本帖最后由 liao99 于 2015-12-18 14:27 编辑
首先感谢通达客服和技术人员,他们都非常热情、敬业、专业(如薛海棠、李娜宁,林河水、张政等)及时为我们解决了很多应用问题,保证了公司办公业务的正常运行。另在2010年我们选择了贵公司的产品,在这几年的使用过程,公司对通达产品的评价是尽管有些小问题,但瑕不掩瑜,产品非常好,特别是持续的服务和不断进行产品功能的优化完善做得非常好,是公司选择最正确的软件产品!好的产品,离不开好的团队,在这感谢通达能够坚持给用户带来这么优秀的产品,并不断的持续改进。
一、 工作流外部数据源问题原因分析和处理建议 工作流外部数据源(T-ERPLINKER)这个功能期待很久,2015版本终于如期发布,可惜公司的ERP数据库无法链接,期间有两位工作流的技术人员非常热心的帮忙处理(很抱歉,过太久了,我没记住他们的姓名,非常热心的哥们),折腾了不少时间,计划是集中发布补丁解决,后来可能集中开发2016版本,没有精力处理这个了,再后来论坛里询问,得知贵公司管理层考虑这个功能有特殊性,决定把这个功能作为项目解决方案。 期待太久,不少工作都等这个功能上线,熬不住了,这两天琢磨琢磨留下的调试源代码,问题找到了,我只能临时处理,凑合使用,希望贵公司能安排人员花点时间把外部数据源这个功能完善并作为正式产品发布,让这个2015版本的亮点功能真正发光!
故障现象:我们主要使用sqlserver 数据库(2000,2005等),在T-ERPLINKER中配置ERP(sqlserver2000)数据源时,显示链接数据库正常,但无法加载数据库表清单,无法选择映射关系,另论坛里有人反映配置好映射关系后,检索不到数据在调试阶段也出现了。
1、 无法加载数据库清单, Sqlserver 数据库名存在 master库 sysdatabases 表,大多数数据库部署后都支持大小写,而我们的ERP数据库要区分大小写,func.erp.php脚本中枚举数据库名使用的大写字母开头(Master..SysDatabases),导致链接我们的ERP数据库无法成功。 处理办法: 都改成小写字母即可;$result=sqlsrv_query($conn,"SELECTName FROM Master..SysDatabases")改为 $result=sqlsrv_query($conn,"SELECTname FROM master..sysdatabases");;。
2、 无法枚举数据库中的表清单 也是区分大小写引起,将(SELECT Name AS TABLE_NAME FROMSysObjects Where XType='U' ORDER BY Name)改成(SELECT nameAS TABLE_NAME FROM sysobjects Where xtype='U' ORDER BY name)即可
3、 无法枚举表字段 我们的Sqlserver2000 表字段信息存储在syscolumns表中,而后教新的数据库表字段信息在information_schema.columns视图中,但为了向下兼容也有syscolumns视图,FUNC.erp.php脚本中只使用information_schema.columns视图进行字段信息检索,不支持老版本数据库。 处理办法 :简单化都使用syscolumns取字段信息,最好是在配置数据源的时候增加版本选择,老版本数据库使用syscolumns,新版本数据库使用information_schema.columns。 if ($serverId=='3') { $sql="selectname,xtype,domain,length,isnullable from syscolumns whereid=object_id('$table') "; } else {$sql="select * frominformation_schema.columns where table_name= '$table'"; 4、 执行时无法检索到数据 也是大小写问题引起的,经查工作流外部数据控件在执行的时候,会把字段名都改成大写,在要求区分字段名,表名大小写的数据库中无法执行。 处理办法:我没有更多的代码,只能在数据库中建立视图,将视图字段名都设置为大写,建议通达修改代码,不改变系统中字段名的大小写规则,提高兼容性。 5、 无法选择视图作为外部数据源 4中无奈使用视图,论坛中有人也在建立外部数据映射时无法选择视图,官方答复是要采用项目方式处理,其实。。。只需要将例举表名的查询语句稍微修改即可 $sql=" SELECT name AS TABLE_NAMEFROM sysobjects Where xtype='U' ORDER BY name"; 改为: $sql=" SELECT name AS TABLE_NAMEFROM sysobjects Where (xtype='U' or xtype='V') ORDER BY name"; 二、合作模式的一点建议 工作流外部数据源只是一个很小的功能,但这个功能能够给用户带来很大的便利,提高系统的整体应用水平。论坛里时不时会有对各种功能的“吐槽”,功能很多,但深度离用户想要的还差一点点,让大家是爱恨交加。论坛里有不少大虾都不断的在为通达产品的优化完善建言,总体感觉是采纳的较少,功能点很多,精细化不足。这么大的产品要保证每年推出大的版本,更多更新的功能点、在精细化方面安排不了更多的资源是可以理解的。但我们公司希望尽量使用标准产品(或许也有很多用户有这个想法),能够保持系统的持续升级和简单的维护。 建议通达能否借鉴下众筹模式,组织用户在网上对急需优化的模块需求进行讨论,由各个单位支付一部分开发费用,将需求转化为标准产品发布,而不是单独洽谈项目合作。这样或许对用户、通达都有帮助,最少这样的模式我们公司是支持和希望参与的!
|