小女子碎念天地.
Tsum Tsum 遊戲攻略請詳左側遊戲公告區 ✔ 任務 ✔ 心得 ✔ 遊戲技巧   (I love pasta 遊戲攻略 ✘已停止更新)
❅ 程式及分享類的文章都是自己實際想法非業配喔!
❅ 遊戲相關的文章僅是業餘,下班娛樂用 😂 歡迎加入討論喔!
※ 若有資訊無法看到,請用電腦版網頁開啟

廣告贊助

我做過N百次EasyFlow呼叫TIPTOP整合段
但就是沒有做過TIPTOP呼叫EasyFlow的個案
大概從2016年底開始一值鬼打牆的失敗
明明相同的程式及作法別人都可以為什麼我就做不到
後來用一些工具才大概知道TT跟EF兩個的架構不走標準是不行的.....
(ps 設備 TIPTOP GP 5.1 、EASY FLOW GP)

那其實在標準的程式中,TT呼叫EF的Method只有以下幾個
CreateForm (簽核開單)
SetStatus (謙和最後一站回覆狀態)
GetProgramID (取得TT目前已設定的整合單據其程式代碼與各工廠單別)
GetFormFlow (看單據簽核流程)
GetApproveOpinion (看單據簽核意見)
ColumnSet (傳送已設定的整合單據欄位)
GetFormInfo (取得目前使用者選擇資料匣內容[待辦事項列表])
GetBackFlow (執行「不准」功能的退回關卡資訊)
GetModifyFlowUser (執行「加簽」功能的加簽人員列表)
GetFlowAction (取得目前單據可執行的功能)
GetTTFormID (取得EF單據種類)
GetApproveLog (取得該單據所有意見)
DoFormApproval (進行單據簽核動作=「准」)


其實上面這些基本上都是在4gl裡面寫死的
而且一有新的需求這些根本不開放修改、也沒有平台可以看code,超封閉的啦!

如果有做過TIPTOP跟異質整合的人應該都知道
若是當TT為SERVER端(=其他系統要來取得TIPTOP資訊)時
只需要修改aws_ttsrv2等幾隻程式的段落
再把標準抓來copy paste就大概完成80%
但當TIPTOP為Client時就沒有那樣簡單容易了!


一、說明一下這次客製的需求是:
希望從TT點選按鈕可以把資訊傳至EF
再由EF撈取資料回傳TT並顯示


我同事(=她是負責EF端的IT) 提供了一個先前顧問給她的Word
裡面有鼎新EF標準提供的函式可以跟一直整合
大致截圖如下,如果沒有跟客服講應該都是可以取得的
這是說明:

下面是接收資訊後回傳的訊息範例:


二、原先的做法及測試情況:
(貼心小提醒:如果想知道答案請往下一趴走,太冗長怕您按耐不住阿)

我參考前同事提供的方法(ps 他是TT呼叫其他系統)
先客了一隻cws_xxxx的程式去抓資料準備CALL WebService
再用原廠fglwsdl -o的指令去產生呼叫服務的程式
共新增了三隻程式

但是我怎麼試都回傳錯誤 「No such operation 'fetchProcInstanceWithSerialNoRequest'」
兩端通道都確認開了、語法確認無誤卻還是一樣
問了客服,客服卻回應此需求做不到叫我找業務 (整封mail大概就只能濃縮成這句話吧)
(看到這段真的是整個火....至少也告訴我為什麼做不到吧QQ)
但不重要,後來我們又想說:「那不然直接從TT程式撈EF DB裡的資料吧!」
又試過ODBC、試過DBLINK、安裝Oracle GateWay、找過DBA高手...........
一大堆鬼都試過,但是全部都 行! 不! 通!

最後!!!
我跟同事決定寫了一程式模擬EF的函式供TT呼叫及回傳
一試竟然.................... 成功了!....Orz
WTF,代表我程式一直都沒問題阿
那我們前面一個月多再幹嘛?還被客服打槍說做不到 (哈哈哈哈欲哭無淚阿....[撞牆])

三、最後採用的方法
所以討論到最後,請同事開發一包程式: (C#跟.Net)
接收到TT資訊,傳進EF標準函式,由EF標準函式執行後回傳的資訊再丟回TT
這程式的概念就是於TIPTOP及EasyFlow之間的中介程式做資料收送
這下終於大功告成啦!

四、TIPTOP執行步驟
前面有簡單提到步驟,這邊把程式碼貼上來說明一下
假設此函式名稱為:FormNumber (大小寫要注意)
1.請開發一支新的4gl (cws_FormNumber.4gl) 程式範例提供如下
=========================================
IMPORT com

GLOBALS "../../../tiptop/config/top.global"
GLOBALS "../4gl/FormNumber.inc"

DEFINE g_string       LIKE xxx_file.xxx
DEFINE g_result         STRING
DEFINE g_soapstatus     INTEGER

FUNCTION cws_FormNumber(p_string)
   DEFINE p_string        LIKE xxx_file.xxx

   LET g_string = NULL
   LET g_soapstatus = NULL
   LET g_result = NULL

   LET g_string = p_string

   #開始呼叫並傳入資訊
   CALL FormNumber(g_string) RETURNING g_soapstatus,g_result

   IF g_soapstatus=0 THEN
      #代表成功:可以進行回傳的資料分析
   ELSE
      #代表失敗:可跳出錯誤告知USER
   END IF

   #可撰寫LOG紀錄
   CALL formnumberlogfile()

   RETURN g_result
END FUNCTION
=========================================

2.利用指令產生WSDL對應的服務:fglwsdl -o (函式名稱) (WSDL網址)
ex: fglwsdl -o FormNumber http://(IP:PORT)/Service.asmx?wsdl
指令下下去之後會產生兩個檔案:FormNumber.4gl , FormNumber.inc
3.將以上三個檔案都放到cws/4gl客製的目錄下
編譯兩隻4gl後加link到要用的主程式即可 (兩隻都要加)

如果是單獨執行的案例:
1.如上面的程式範例,請將FUNTION改為MAIN
2.建立p_zz(程式:cws_FormNumber)
2.cws_FormNumber的link加入FormNumber.4gl


因為爬文爬了很久已經快絕望才有這樣的成功
提供以上資訊給有需要的朋友~
不要再傻傻的一直去試了
TT跟EF感覺是根本通不了阿阿阿阿!
 

文章標籤
創作者介紹

你的夢是我的驕傲

Anita 發表在 痞客邦 PIXNET 留言(8) 人氣()


留言列表 (8)

發表留言
  • RayHsiao
  • 請問,執行fglwsdl -o FormNumber http://(IP:PORT)/Service.asmx?wsdl該指令,IP:PORT是要輸入TIPOP ERP該主機的IP加:加PORT嗎?
  • 您好,不是喔,是你要整合的系統之IP,依我上面的範例則是EasyFlow的IP (若用中介程式則是中介程式的IP)
    簡單來說就是你要連過去的入口~
    提供給您希望有幫助!

    Anita 於 2017/03/03 17:02 回覆

  • RayHsiao
  • TO Lunlun:
    謝謝您~若碰到其他問題,再向您請教。
  • 歡迎 ^___^ 有幫助到人真是太好了!

    Anita 於 2017/03/06 09:38 回覆

  • RayHsiao
  • TO Lunlun:
    謝謝您~若碰到其他問題,再向您請教。
  • allen19110402
  • 請問您知道easyflow gp 流程裡invoke呼叫應用程式的Web Application方法,要如何設定將表單上面的欄位的值,當作變數傳給其他網頁方法嗎?
    或是另一個方法Web Service要如何設定將表單上面的欄位的值,傳給Web Service?
  • 抱歉,因為我主要是負責跟維護TIPTOP,關於EasyFlow的系統沒有深入了解,恕無法給予協助,若有TIPTOP相關問題,我很樂意回覆的!

    Anita 於 2017/04/10 12:00 回覆

  • 悄悄話
  • 悄悄話
  • 悄悄話
  • 悄悄話
找更多相關文章與討論