概覽
總體用例圖
邊寫這篇文章芭逝,邊設(shè)計(jì)這個(gè)系統(tǒng),當(dāng)前尚未實(shí)現(xiàn)舆驶,完成設(shè)計(jì)后橱健,計(jì)劃在下一個(gè)具體項(xiàng)目上實(shí)施。
設(shè)計(jì)思路
利用SAP的各種技術(shù)沙廉,在應(yīng)用程序?qū)用嬗涗涀兏械矗淮_定變更信息需要同步的第三方系統(tǒng);按各系統(tǒng)需求生成數(shù)據(jù)包撬陵;完成同步珊皿。
按照這個(gè)思路网缝,設(shè)計(jì)了三大模塊:
1.變更日志模塊
著眼點(diǎn)是數(shù)據(jù)表,對(duì)SAP的表進(jìn)行簡(jiǎn)單分類:
- 標(biāo)準(zhǔn)表
- 配置表
一般伴隨TR蟋定,比如公司粉臊,工廠,庫(kù)位等 - 主數(shù)據(jù)表
物料驶兜,供應(yīng)商维费,客戶,成本中心等 - 業(yè)務(wù)數(shù)據(jù)表
采購(gòu)訂單促王,生產(chǎn)訂單犀盟,銷售訂單等
- 配置表
- 自定義表
不同的表,維護(hù)方式差異比較大蝇狼,對(duì)應(yīng)的記錄變更的方式也會(huì)有差異阅畴,定義了三種變更日志格式:
-
Change Document
標(biāo)準(zhǔn)的技術(shù),廣泛存在于標(biāo)準(zhǔn)數(shù)據(jù)表迅耘,比如物料贱枣,采購(gòu)訂單,BOM颤专,銷售訂單纽哥。生產(chǎn)訂單由于變更頻繁,標(biāo)準(zhǔn)不提供Change Document栖秕,但是預(yù)留了出口春塌,可以自定義Change Document,隨之而來(lái)的一個(gè)問(wèn)題就是需要考慮歸檔簇捍,Change Document有標(biāo)準(zhǔn)的歸檔對(duì)象只壳,技術(shù)上問(wèn)題不大。
Transport Request
配置表通過(guò)TR傳輸暑塑,所以TR本身就是一種日志吼句。自定義日志
按需定制,比如有些表沒(méi)有CD事格,沒(méi)有TR惕艳,可以在維護(hù)的時(shí)候生成CD,也可以簡(jiǎn)單一點(diǎn)寫入自定義日志驹愚。
2.路由模塊
根據(jù)變更日志远搪,判定是否需要同步到特定系統(tǒng),需要同步即確認(rèn)了路由信息:SAP->第三方系統(tǒng)么鹤,放入PUSH或者PULL 隊(duì)列终娃。
隊(duì)列中主要存儲(chǔ)信息:
第三方系統(tǒng)標(biāo)識(shí) + 接口標(biāo)識(shí) + 變更日志編號(hào) + 時(shí)間戳
3.分發(fā)模塊
分發(fā)主要考慮兩個(gè)問(wèn)題:數(shù)據(jù)包生成和同步方式
數(shù)據(jù)包生成
生成時(shí)機(jī),由于場(chǎng)景不同,同步方式不同棠耕,數(shù)據(jù)包在不同的環(huán)節(jié)生成:
- 即時(shí)
數(shù)據(jù)變更的同時(shí)生成 - 定時(shí)
可能生成數(shù)據(jù)包的代價(jià)特別大余佛,放在后臺(tái)任務(wù)中定時(shí)生成 - 延遲
在數(shù)據(jù)同步的時(shí)候生成
數(shù)據(jù)包的格式:全量和增量,參見(jiàn) 上篇 01 數(shù)據(jù)同步場(chǎng)景分析
同步方式
Pull和Push模式的說(shuō)明窍荧,也參見(jiàn)上篇辉巡。
對(duì)于Pull,增量發(fā)送數(shù)據(jù)包必須要有發(fā)送順序控制蕊退,實(shí)時(shí)推送郊楣,連續(xù)更改,不加控制可能因?yàn)橥扑蛨?zhí)行順序不同瓤荔,導(dǎo)致兩邊系統(tǒng)數(shù)據(jù)不一致净蚤。
考慮犧牲一定的實(shí)時(shí)性要求(對(duì)第三方系統(tǒng)來(lái)說(shuō)也無(wú)感的),推送是使用單線程的模式输硝,只有一個(gè)消費(fèi)者從Push隊(duì)列中提取同步任務(wù)今瀑。后續(xù)討論使用Event + Lock技術(shù)實(shí)現(xiàn)這個(gè)功能。