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

廣告贊助

我做過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 留言(15) 人氣()


留言列表 (15)

發表留言
  • 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 回覆

  • 悄悄話
  • 悄悄話
  • 悄悄話
  • 悄悄話
  • 悄悄話
  • Jack
  • 看了感覺你很用心,現有遇一個問題請教,就是要連續翻頁,就是一頁SHOW 出,停留幾秒,再續show 其他資料,再停...就如看版一樣,是否有此經驗分享呢? 謝謝
  • 請問您是指TIPTOP還是EasyFlow呢?

    Anita 於 2017/10/11 14:52 回覆

  • 蓬萍 陳
  • 想請問一下. 我是使用 aws_ttsrv2 ...要怎麼才能產生tiptop web service 新的WSDL檔 ? 謝謝
  • 使用aws_ttsrv2就表示 TT是SERVER端 如果是用標準的不需要改WSDL
    SERVER端的話請增加aws_ttcfg2服務
    程式的部分就修改invoke (可參考標準的其他之程式寫法)
    5.1以下版本為 aws_ttsrv2_service.4gl
    5.25以上版本 aws_ttsrv2.4gl
    最後重啟,重啟後WSDL會抓到你在invoke加的服務~

    Anita 於 2017/11/24 08:48 回覆

  • 蓬萍 陳
  • 謝謝..我沒用過TT的WEB SERVICE, 所以想先用soapUI 測試現有的服務..所以想取得現有的wsdl檔..
  • 悄悄話
  • johnwu
  • 請問,我公司有個eip系統asp.net,我想自行開發選單系統直接寫入到tiptop 系統
    有什麼好的建議嗎??
    謝謝
  • 最簡單就是直接採用直接INSERT INTO 到資料庫
    但通常寫進TIPTOP都會要做一些資料判斷
    這時候應該是屬於TIPTOP為SERVER端
    那就是我這篇文章分享的方法囉

    至於另一套系統開發的方法是我同事做的
    他也是用asp.net用一包程式去寫
    然後CALL進EF標準函式 (不直接連接EF資料庫是怕說標準有些設定不同會fail)

    Anita 於 2017/11/30 13:25 回覆

  • johnwu
  • !!非常抱歉!!。再次打擾妳的時間
    請問,同事用的asp.net 是用mvc 還是webform 寫法??
    然後可以提示asp.net 連接 Oracle 的語法怎麼寫的??
    因為之前公司是用workflow+sql +asp.net 的方式寫的。

    十分感謝
  • 更正一下 我上面全部說錯了 糊塗了阿真是~

    1.我們是TIPTOP為client端發起呼叫EF
    如果是相反要CALL TIPTOP的話則TIPTOP為SEREVR端。
    此時TIPTOP要再aws_ttsrv2入口建立服務提供異質系統呼叫

    2.異質系統的表單寫法蠻複雜的是用JAVA AJAX去寫的
    我們有另一個需求跟您類似但是顧問技轉的
    也不是我們自己人員撰寫的 無法查看到併提供給您耶 抱歉

    Anita 於 2017/11/30 16:05 回覆