Tibco 打包发布运行问题备忘

来源:互联网 发布:客户分布地图软件 编辑:程序博客网 时间:2024/06/05 08:46

这里专门纪录一下一些Tibco 5.6 发布的一些麻烦的问题(lin49940原创).

1.  测试模式流程没有问题,  发布后运行出错.

        请务必要检查流程的注册命名空间, 不管是主流程或者子流程, 这个很麻烦, 多了少了, 错了都不行!

        基本上测试模式的时候 Tibco 都帮我们把这些注册命名空间的错误屏蔽了, 但是流程发布运行以后, 这些问题都会暴露出来!! 很多时候我们引用了一个schema, 再删除这个schema 引用, 以为这些就还原到引用前的状态了, 但是这个是schema 已经被注册到"Schema Imports" 里面了, 如果这个schema 和你后面要再次引用的另外一个schema2 有冲突, 那么这个流程发布运行后就会在解析引用了schema2 的xml 控件的时候报错!!!!

       这里重点注意控件 "Parse XML", 如果我们流程中有多个"Parse XML" 控件, 并且这些控件的"Outer Editor" 分别引用的 schema 的命名空间都是一样的, 可能我们引用这些schema 的时候, 即使用了Tibco 设定为空的命名空间, 但是除了第一个被引用的 schema 会被注册到"Schema Imports" 里面 , 其他的schema 是不会被注册到"Schema Imports" 里面, 因为他们的命名空间一样, Tibco 以为他们都是一样的,不再进行注册!!!!  当有这种情况的时候, 我们在测试模式下的时候是没有问题的, 但是发布运行后, 当流程运行到这些"Parse XML" 控件的时候, 就会报错了!!!解决的方法是, 手工把这些 schema 注册到"Schema Imports" 里面。


2. 测试模式流程没有问题, 定时器和JMS接收器不起左右!

        这个我目前还在不到原因, 跟项目本身貌似有很大关系! 我试过把一个项目里面的一个定时器流程打包发布上去, 但是定时器就是不起作用; 我把该流程拷贝到另外一个项目里面打包并发布, 定时器正常运行!!!

        再次跟踪问题情况, 我在项目里面建立一个简单的定时器流程, run once, 打包发布, 运行成功!! 证明该项目中的定时器是有效的, 只是里面某些控件出现了问题!!

        目前无数次测试, 知道了原因, 就是里面的数据库控件出现问题, 解决了!!!

        1. 那些Connection 的命名都引用 "Password" 类型的全局变量, 而不是引用"String" 类型的文本!

        2. 把那些数据库控件设置的Connection 链接删除, Apply, 再次设置Connection 链接, 记得要全部都换, 虽然很麻烦!!!!!(必要)

        经过这两步操作后, 我的定时器流程打包发布后终于会执行了!!! 但是我不确定 步骤一 是否必要的, 但是步骤二就是必要的!!!

        由于没有备份原来的流程, 所以无法进行前后的对比(每个流程都是XML 格式的文件, 很多细节东西在designer 里面是看不出来的, 用xml 内容一对比就清楚了), 等过完年, 再找两个流程进行对比, 查出其中的原因!!!!!!!!!!

        原因我已经找出来了, 是链接路径大小写敏感的问题!!!

     JMS, FTP, HTTP, JDBC 等Connection, 如果被那些JMS 接收器, JDBC查询等控件引用. 如一个JDBC Connection, 其实际目录是 /AAAA/XXJdbcConnection, 但是在一个数据库查询控件里面被引用的路径是 /aaaa/XXJdbcConnection(这个控件可能是其他项目直接拷贝过来的), 在测试模式下, 是不会测试出问题的!!! 但是打包发布后, 运行的流程可以 "Running", 但是不会有 "Created Processes" 的, 很多时候我们以为流程 "Running" 就行了, 但是实际上该流程是不能正常工作的!!!!!!!!


3. 测试模式可以读取局域网机器的共享文件夹,但是发布后无法访问共享文件夹

       这个情况产生的原因跟Tibco 后台的进程所在的用户有着莫大关系的!!!

       如果Tibco 在windows 注册的服务“TIBCO Administrator 5.4 (XXX)” 和"TIBCOHawk Agent (XXX)" 没有做修改。按默认的设置的话,这两个服务的默认用户是SYSTEM,一般我们是不登录System 用户的,并且System 是不能直接访问共享文件夹的,访问是需要用户名和密码的!!!!

       在测试模式下, 我们当前的用户, 是可以访问共享文件夹, 并且可以把对共享文件夹的访问用户名和密码进行保存,这样下次就可以直接访问共享文件夹了! TIBCO 文件控件没有提供设置访问共享文件夹时需要的用户名和密码,所以我们只能在当前用户对共享文件夹的访问用户名和密码进行保存,然后Tibco 文件控件就可以直接访问共享文件夹了。

        所以,我们需要对“TIBCO Administrator 5.4 (XXX)” 和"TIBCOHawk Agent (XXX)" 服务进程的所在用户进行修改, 改为我们当前的用户, 一般是administrator。更改的操作在操作系统里面完成, “计算机管理”——》“服务”-》调出相关服务的属性页面-》点击tab “登录” -》选中此账户,在关键的地方填上用户名和密码,保存-》重启所有的tibco 的东西。

        再把发布后的流程跑起来, 应该没有问题的了!!!


4. 发布的Tibco 流程全部运行出错

    这里要重点小心Timer 流程, 如果是Timer 流程出现无法终止, 或者执行的时间超过间隔的时间, 导致进程数量越来越多, 那么整个Tibco 后台的流程都会报错,无法运行! 所以Timer 流程的设计务必要小心,里面的控件最后都要有超时设置。

     一种好的处理这种问题的方法是, 利用Shared Variable(不是 Job Shared Variable,注意他们的区别),  通过类似于加锁的方式, 让得不到锁的流程实例直接结束! 这样的话, 每一个时间点都只有一个流程实例在实际工作, 就不会出现流程实例越积越多的情况!!

     我个人认为, 每一个Timer 流程, 最好都使用上述的方法!



原创粉丝点击