posts - 14,  comments - 22,  trackbacks - 0
  2008年6月27日
几经辗转,我又被安排到了一个新的项目里。
现在到处缺人啊,我们项目刚完事,所有成员都被别的组瓜分了。

貌似ERP的产品也很多,SAP的,Oracle的,国内有些名声的有金蝶,用友,金算盘等等吧。
我们这个项目是和SAP公司合作,使用SAP的软件产品。
貌似SAP这个产品非常复杂。真的是一无所知啊。
我被分到TR模块,和SAP公司的顾问,客户公司的顾问和一些关键用户一起做。
先熟悉一下TR是什么;
TR:treasury的简写;是SAP ERP系统中Financial Acounting (FI)模块的一个子模块,TR模块又分为Cash Management(TR-CM)、Cash Budget Management(TR-CB)两部分。
先看TR-CM部分吧
SAP Library中说道:
 

The topic Input contains an introduction to the menu options: lectronic and manual bank statement, payments, lockbox, electronic and manual check deposit, bill of exchange presentation, and memo records.

The topic Check contains an introduction explaining the transactions used to compare payment advices, calculate interest, and analyze cashed checks.

Cash concentration is covered in the topic on Management . In this section you will also find the chapters explaining the payment program, payment requests, bill of exchange presentation, memo records, and the telephone list.

See Tools for information on the distribution of the Cash Management systems.

The topic Information System deals with, among other things, the liquidity forecast, which you use to obtain information on customer and vendor payment flows. This section also describes the setup of the cash position and the transactions that affect it. The Cash Management application component uses the cash position to reproduce the activity in bank accounts, while activity in subledger accounts is reproduced using the liquidity forecast.

Additional topics are: Journal of Single Transactions Enter and Changed, Comparison and Checking, and Reconciling Cash Management.

The Environment topic describes the procedure for adopting market data in the SAP System. You can do this using the file interface, the real-time datafeed, or the table calculation. The documentation also includes information on worklists and changing master records.

---直接copy的
好了,就知道这么多了,下午再听SAP的顾问的培训吧。
posted @ 2008-11-25 11:56 张老三 阅读(343) | 评论 (0)编辑 收藏

学习MQ(三) 一个实例。
现在有两台机器A和B,分别安装了MQ6.0,我要通过MQ进行A和B之间的双向通信。
我打算分两步,第一步:实现A到B的数据传输。
在A上:
1、创建队列管理器 QM_1001。
2、创建本地队列 LQ_1001
3、创建传输队列 XQ_1001
4、创建远程队列 RQ_1002
5、创建发送方通道 1001.1002
在B上:
1、创建队列管理器 QM_1002
2、创建本地队列 LQ_1002
3、创建接收方通道 1001.1002,名字必须与发送方通道相同。
4、创建侦听器,监听1414端口
这样,A到B的数据传输就可以了。
启动队列管理器QM_1001和QM_1002,启动B上的侦听器,A上启动发送方通道1001.1002,B上的接收方通道也会自动运行;
第二步:实现B到A的数据传输
在B上:
1、创建传输队列 XQ_1002
2、创建远程队列 RQ_1001
3、创建发送方通道 1002.1001
在A上:
1、创建接收方通道1002.1001
2、创建侦听器,侦听1414端口
启动A上的侦听器,启动B上的发送方通道1002.1001,这样A上的接收方通道会自动运行。
这样,由B到A的数据传输也能进行了。
这是我搞定的第一个例子,也是我学习MQ以来感觉有进步的一次。
下面是脚本。
在A上:
* 定义队列管理器
crtmqm -t 5000 -h 1000 -lc -lf 10240 -lp 30 -ls 32 -q QM_1001
*更改QM的字符集编码(CCSID)
    ALTER QMGR FORCE CCSID(1381)

* 定义本地队列
    DEFINE QLOCAL('LQ_1001') REPLACE +
           USAGE(normal) +
    DEFPSIST(YES)

* 定义传输队列
    DEFINE QLOCAL('XQ_1001') REPLACE +
           USAGE(XMITQ) +
    DEFPSIST(YES) +
    TRIGGER +
    TRIGTYPE(FIRST) +
    INITQ('SYSTEM.CHANNEL.INITQ') +
    PROCESS('') +
    TRIGDATA('1001.1002')

* 定义远程队列
    DEFINE QREMOTE('RQ_1002') +
    DEFPSIST(YES) +
    RNAME('LQ_1002') +
    RQMNAME('QM_1002') +
    XMITQ('XQ_1001')

* 定义发送方通道
    DEFINE CHANNEL('1001.1002') +
    CHLTYPE(SDR) +
    TRPTYPE(TCP) +
    CONNAME('192.168.110.35(1414)') +
    XMITQ('XQ_1001') +
    DISCINT(0) +
    SHORTTMR(30) +
    SHORTRTY(999999999) +
    LONGTMR(1200) +
           LONGRTY(999999999)

* 定义接收方通道
    DEFINE CHANNEL('1002.1001') +
    CHLTYPE(RCVR) +
    TRPTYPE(TCP)
* 启动队列管理器
strmqm QM_1001
* 启动侦听器
runmqlsr -m QM_1001 -t TCP -p 1414 &

在B上:
* 定义队列管理器
crtmqm -t 5000 -h 1000 -lc -lf 10240 -lp 30 -ls 32 -q QM_1002
*更改QM的字符集编码(CCSID)
    ALTER QMGR FORCE CCSID(1381)

* 定义本地队列
    DEFINE QLOCAL('LQ_1002') REPLACE +
           USAGE(normal) +
    DEFPSIST(YES)

* 定义传输队列
    DEFINE QLOCAL('XQ_1002') REPLACE +
           USAGE(XMITQ) +
    DEFPSIST(YES) +
    TRIGGER +
    TRIGTYPE(FIRST) +
    INITQ('SYSTEM.CHANNEL.INITQ') +
    PROCESS('') +
    TRIGDATA('1002.1001')

* 定义远程队列
    DEFINE QREMOTE('RQ_1001') +
    DEFPSIST(YES) +
    RNAME('LQ_1001') +
    RQMNAME('QM_1001') +
    XMITQ('XQ_1002')

* 定义发送方通道
    DEFINE CHANNEL('1002.1001') +
    CHLTYPE(SDR) +
    TRPTYPE(TCP) +
    CONNAME('192.168.110.21(1414)') +
    XMITQ('XQ_1002') +
    DISCINT(0) +
    SHORTTMR(30) +
    SHORTRTY(999999999) +
    LONGTMR(1200) +
           LONGRTY(999999999)

* 定义接收方通道
    DEFINE CHANNEL('1001.1002') +
    CHLTYPE(RCVR) +
    TRPTYPE(TCP)
* 启动队列管理器
strmqm QM_1002
* 启动侦听器
runmqlsr -m QM_1002 -t TCP -p 1414 &

剩下几个疑问没有明白
1、更改QM的字符集编码是做什么用的?
2、从资料上看到有个服务器传输通道,不知道是做什么用的?

posted @ 2008-11-12 17:37 张老三 阅读(3775) | 评论 (3)编辑 收藏
学习MQ(二)基本概念
这次简单罗列一下MQ的基本概念,还有我对它们的理解
1、queue manager 队列管理器,这是MQ系统中最上层的一个概念。每一个queue manager都有一个侦听器,如果它要接受消息的话,每个queue manager中管理多个队列queue和消息通道message channel。
2、消息 message,消息是应用程序交给MQ来传输的数据。
3、队列 queue,队列是用来存放消息的,把消息存放到队列中,直到应用程序或其他MQ对象来处理或取走。
假如,系统A和系统B之间需要数据传输,那么应用程序在系统A端把消息放到MQ的队列中,在系统B端的应用程序从队列中取消息,至于系统A到系统B的数据传输,那是MQ要做的事情。
我用到的队列有三种,本地队列,远程队列,传输队列。其中传输队列也是本地队列的一种,也叫本地传输队列,另外一个叫普通本地队列。
普通本地队列是消息的暂存区,应用程序可以通过API直接把消息放入本地队列,或者取走消息,普通本地队列是占用磁盘空间的,应该是对应磁盘上测某个文件。
本地传输队列是一个存储转发队列,资料上是这么说的:比如,我们将某个消息交给MQ系统发送到远程主机,而此时网络发生故障,MQ将把消息放在传输队列中暂存,当网络恢复时,再发往远端目的地。
本地传输队列也是要占用磁盘存储空间的。
远程队列是一个定义,它是目的MQ系统中的本地队列在本系统中的一个映像,就像定义了一个指针,指向目的系统的本地队列一样。它不占用磁盘空间。

还有模板队列和动态队列的概念,很好理解,模板队列就是一个模板,定义新的队列时可以照着这个模板创建。动态队列没用过,听说很灵活,是MQ的特色。
4、消息通道 message channel 消息通道是一个逻辑概念,它是队列管理器之间传输消息的管道,它建立在屋里的网络连接之上。传说,通道是MQ的精华,由于我没用过其他的消息中间件产品,也没有深入使用MQ,所以没有看出这精华二字体现在何处。
消息通道是单向的,由发送方通道和接收方通道组成,而且这两个必须是同名的。如系统A要发消息到系统B,那么需要在A中建立发送方通道,在B建立接收方通道,必须同名。

另外还有两种通道,MQI通道和Cluster通道,我没用,就没深究,要是以后用到,就深挖一下。
5、侦听器 listener 这是在接受消息方必不可少的。它侦听一个端口(默认为1414,可以更改),等待发送方的连接。

posted @ 2008-11-12 17:36 张老三 阅读(3121) | 评论 (1)编辑 收藏
声明:我的文字里出现的MQ,如没有特殊指明,就是指的IBM的websphere MQ

以前对MQ一无所知!
MQ是IBM websphere的系列产品之一,是很好的一个中间件产品。其实我对这列产品并不感兴趣,觉得它们没有很大的是作用。
也许我是错的,在一个规模较大的分布式系统中,远程数据传输、数据同步是一个很大的问题,很重要,而且必须是可靠的。分布在各地的系统之间进行数据传输,会因为网络问题、服务器处理问题变得十分复杂;这样,如果采用传统意义上的网络编程的话,恐怕就达不到预期的效果了。
而采用消息中间件产品可以解决这样问题。
这是我对中间件产品MQ的一些初步的理解。
posted @ 2008-11-12 17:36 张老三 阅读(2176) | 评论 (4)编辑 收藏
好久不能上网了,我哭
posted @ 2008-11-12 17:35 张老三 阅读(233) | 评论 (0)编辑 收藏

今天,应用程序出现问题,一个页面的表格展现不出来。
左查右查,发现是这个表格查询的数据库视图不可用导致的。

针对这个视图做查询时,报错如下:
SQL0575N  不能使用视图或具体查询表
"DB2ADMIN.VIEW_BRAND_EXPORT_FLAG",因为它已经标记为不可用。  SQLSTATE=51024

问题1:
这是什么原因引起的?以前一直用的挺正常,怎么就突然不可用了呢。

Google了一把,IBM的官方资料有这么一个介绍:加入建立视图view_a,然后建立角色role_a,分配view_a的查询权限给role_a,然后把role_a分配给用户db2admin,之后使用db2admin用户可以查询视图view_a。但是当角色role_a的查询权限revoke的话,再用db2admin用户查询视图view_a是,就报错:SQL0575N  不能使用视图或具体查询表,因为它已经标记为不可用。  SQLSTATE=51024。详情见:http://www.ibm.com/developerworks/cn/db2/library/techarticles/dm-0808chengy/index.html
但是,可以肯定的是我这个问题不是由这个原因引起的。因为我们根本没有创建角色,我们使用db2admin用户直接访问视图的。
那问题出在哪儿呢?
我也不知道,以后再查吧。
问题2:
这个问题怎么解决呢?
我没有什么好办法。
比较菜:drop 该视图,然后找到建立该视图的SQL脚本,重新建立一遍,就OK了。

哪位高人对这个问题有了解,请把问题原因和解决办法分析一下吧!

posted @ 2008-10-07 10:56 张老三 阅读(3984) | 评论 (2)编辑 收藏
AIX默认安装ksh,默认没有翻查上一条命令
而习惯了bash中的翻查上一条命令,使用起AIX的ksh感觉不爽。在不安装bash的情况下,可以使用下述方法在ksh中实现翻查上一个命令。
1、在主目录中 vi .profile
2、添加一行:export EDITOR=vi
3、保存.profile,重新登陆。
这样就可以使用vi中的上下(j/k)翻查上一条命令了。
posted @ 2008-08-26 13:16 张老三 阅读(3905) | 评论 (3)编辑 收藏
??????????????
posted @ 2008-08-18 12:58 张老三 阅读(202) | 评论 (0)编辑 收藏

腾讯科技讯 6月27日消息,微软创始人盖茨将于北京时间27日晚正式引退,52岁的盖茨将结束他在微软的全职工作,正式交棒。至此,全球IT业的“盖茨时代”将成为历史。

值此难忘时刻,微软员工自发向盖茨赠送了一本电子书,并共同在书上记下具有纪念意义的重大时刻。

微软员工表示,“一张照片,一段记忆,或是一件趣事!还有比这更好的方式,向倾注全部热情带领微软公司33年的比尔,表达我们的谢意吗?”

一下是部分电子书精彩照片:

胡锦涛书记访美,作客微软。图为比尔盖茨,Craig,亚勤在向总书记及夫人作介绍。

胡锦涛书记访美,作客微软。图为比尔盖茨,Craig,亚勤在向总书记及夫人作介绍。

共同书写电子年鉴,微软员工送给比尔盖茨的礼物

盖茨的精彩时刻

盖茨的精彩时刻

盖茨的精彩时刻

 

2007年4月,在博鳌亚洲论坛期间,盖茨与张亚勤博士共同主持亚洲青年领袖论坛后与参会嘉宾的合影,青年企业家包括丁磊,马云,张欣和李亦非等

posted @ 2008-06-27 17:10 张老三 阅读(282) | 评论 (0)编辑 收藏
前些天,下载了一个免安装版的mysql,由于我的本性能不太好,免安装版的正合我意。我下的是mysql-noinstall-5.1.6-alpha-win32.zip,那个网址不记得了。不过Google一下,遍地都是!

不过,使用过程中有个问题一直很烦,就是在命令行下,执行命令时,如果发生报错,电脑会发出“嘀”的响声,貌似主板的声音,很是刺耳,有点讨厌。

于是,在网上查了一下,发现有这个问题的还挺少,没找到答案,于是问了一下同事牛人,在试了N次之后,终于搞定了这个问题,方法很简单:

在配置文件my.ini中的[mysql]节点下,添加一行no-beep,保存,重启mqsql,就ok了。

不过有的刚接触mysql的朋友可能会说,我没有my.ini文件啊?

的确,安装完mysql之后或者是下载的免安装版解压之后,默认是没有my.ini文件的.
但是,有几个类似的文件,如my-small.ini、my-medium.ini、my-large.ini、my-huge.ini,下面我说一下这几个文件是干嘛的。
这几个文件是mysql针对不同的应用推荐的不同的配置信息;但这些配置只有放到my.ini中才会被应用。
其中:
    1、my-small.ini是为了小型数据库而设计的。不应该把这个模型用于含有一些常用项目的数据库。
    2、my-medium.ini是为中等规模的数据库而设计的。如果你正在企业中使用RHEL,可能会比这个操作系统的最小RAM需求(256MB)明显多得多的物理内存。由此可见,如果有那么多RAM内存可以使用,自然可以在同一台机器上运行其它服务。
    3、my-large.ini是为专用于一个SQL数据库的计算机而设计的。由于它可以为该数据库使用多达512MB的内存,所以在这种类型的系统上将需要至少1GB的RAM,以便它能够同时处理操作系统与数据库应用程序。
    4、my-huge.ini是为企业中的数据库而设计的。这样的数据库要求专用服务器和1GB或1GB以上的RAM。
    
    这些选择高度依赖于内存的数量、计算机的运算速度、数据库的细节大小、访问数据库的用户数量以及在数据库中装入并访问数据的用户数量。随着数据库和用户的不断增加,数据库的性能可能会发生变化。
    
    可以根据自己的情况,选择某一个文件中配置复制到my.ini中,my.ini文件当然需要自己创建,直接新建这个文件就行了,然后复制进去配置信息。我本机上的mysql只是学习用的,使用的是my-small.ini中的配置;如果有其他的需求,可以针对my.ini文件中某个节点修改配置。
    
     至于,my.ini中的配置信息的详细介绍,我在此就不说了,内容太多(我好多都没用到,还未深入理解,呵呵),说了估计也没人看。需要的话,Google一下,也是遍地都是。

posted @ 2008-06-27 11:28 张老三 阅读(1899) | 评论 (4)编辑 收藏