顯示具有 TIPTOP案例探討 標籤的文章。 顯示所有文章
顯示具有 TIPTOP案例探討 標籤的文章。 顯示所有文章

2012年4月10日 星期二

TIPTOP案例研討- 我的權限設對了沒有? p_qryauth 的應用

 

適用版本:GP 5.0 起

TIPTOP的權限設定非常的靈活,已經足夠滿足極大部分公司日常運營,對權限上面的各式各樣不同需要。

但是透過層層重疊的設定﹝例如:群組對作業p_zy、特別個人設定p_zxw等等﹞,常常會發生:『到底這個設定該從哪裡找出來呢?』,誘或是:『到底這樣堆疊式的設定,可以用還是不能用呢?』。在一個個回頭去查,也不一定能夠快速地找到應該調整的地方。

從GP5.0版本起,系統新增 p_qryauth 使用者對應程式權限查詢作業。MIS們可以透過這一支作業,簡單快速的察看權限是否已設定完整,或是資料權限是否合於規範。

執行後,若是用『tiptop』帳號登入使用,則可以使用查詢功能,查看任何一位使用者在指定的作業中是否已經設妥權限。如果用個人帳號登入,就只能查自己的。

換句話說:這隻作業可以考慮放給 end user 使用。

image

確認要查詢的人員、及要查詢的程式後,就可以檢視下方的表格。表格中會列出所有可以使用的 ACTION ID,及相關組合後的資料權限。由於本作業在計算權限,是等同於 library 內的計算方法。因此得到的結論,與使用者操作該作業會得到的權限一致。如此可以快速確認是否是權限不足,而造成執行上的錯誤。

2012年3月29日 星期四

TIPTOP案例探討- 動態開窗時用 ComboBox 可否顯示說明,而非代碼?

 

案例說明

TIPTOP 內的動態開窗,是透過『動態查詢函式維護作業 p_qry 』所維護出來的,可以不讓使用者開發實體的程式碼,單純透過配置,就把開窗程式做出來的工具。

可是,開窗查詢當有需要使用到 ComboBox 時,是否可以『顯示說明文字』,而非『顯示代碼』?因為代碼沒有多少人可以自動轉換成文字…

image

例如上圖的『模組代碼』

解決方法

1. 開啟『動態查詢函式維護作業 p_qry 』,在單身的『欄位型態』選擇將所需要的欄位,以『COMBOBOX』方式呈現

然後在『欄位輸入限制設定』上,給他『兩個 ze 的代碼』
(本範例設定為  test001 || test002   (用 double pipe || 符號做分隔,中間沒有空白)

image

2. 開啟『錯誤訊息資料維護作業 p_ze 』,看一下設定範例

image

test001 (前面的) 是要呈現給使用者看的說明
test002 (後面那一組) 是給程式看的代碼,設定錯誤的話,從 p_qry 換邊就可以了。

3. 設定完成後就可以看到多語言的動態開窗了…

TIPTOP案例探討- r.f2 畫面檔時,一直發生錯誤

 

案例說明:

在 GP 5.1 / 5.2 / 5.25 版本中,在『極度的偶然』情況下,會發生 r.f2 編譯畫面時,一直發生 error:(GS-10067) Non existing schema ds attached to form 的錯誤

_5HD7CY`$ZZ]FFKNR@)GJ)2

如上圖所示。而且更糟的是,所有的畫面檔編譯,都不行了﹝其實,沒有參考到 ds 資料庫所做出的 formonly 畫面還是可以編譯的﹞。

此時,首先應該會想到,去 $TOP/schema 目錄下檢查 ds.sch 有沒有存在?在的。

那,重新產生一下 ds.sch 是否就可以了? r.s2 ds 重新生成了,呃,問題一樣。

解決方法:

這種情況,應該是資料庫中存在了 Genero 認不得的資料型態。以 ORACLE 來說,就是 NUMBER(37) 或是不限長度的 NUMBER( ) 。此兩種欄位都會照常的產出資訊到 ds.sch 中,然後造成 compiler 讀取資料時發生異常錯誤,然後自我了斷。

image

解法 1 : 鋸箭法

很簡單,去 ds.sch 內搜尋『 ^^ 』的符號﹝分隔符號中間無數值,非表情符號﹞,然後把該行刪掉。

缺點:重新 r.s2 後,問題如怨念般地又出現了。

解法 2 : 完全解決法

請先使用鋸箭法,搜尋出問題欄位,再用 alter 工具調整 NUMBER 長度,或是取消該 table / column ﹝如果真的沒用途的話,請先確認過,有練過在這麼做﹞。然後重新 r.s2 看看是否就此解決。

缺點:有點麻煩,而且沒有人以後再纏著你問此問題,會有一點寂寞…

 

PS. Genero 2.4 / TIPTOP GP 5.3 起,錯誤訊息已修正為

/u1/topprod/tiptop/schema/ds.sch:149:error:(GS-11552) Can't convert length for column 'aao00' of table 'aao_file'.
/u1/topprod/tiptop/azz/4fd/p_zz.4fd:/ManagedForm@databaseName:error:(GS-24213) Non existing schema ds attached to document

問題發生處就更加明確了…

TIPTOP案例探討- r.l2 sub 或 qry 的時候怎麼有出現錯誤訊息

 

通常,這裡會出現兩種狀況。以下舉利用範例,發生錯誤的一定不會是和所舉範例一樣的情況,請特別注意您的錯誤訊息,符合下列哪一種:

案例一:出現 ERROR(-6203):Module 'sub_xxxxxx': The function 's_xxxxxxxx' has already been defined in module 'csub_s_xxxxxx'.

image

此類 LINK ERROR 是因為想要把標準的程式搬到『客製目錄』下進行客製,但卻在『程式鏈結維護作業 p_link 』中把原有的 SUB 程式資料『刪除』。這是不可以的,因為『重新查詢』時,系統會『自動把被刪除的 SUB 加回來』,就造成了『重複定義』。

正確的作法是,把原作業的『是否鏈結』欄位,改成『 N: 否』,這樣就不會被自動加入』了。參考下圖:

image

案例二:出現 ERROR(-1338):The function 'cl_user' has not been defined in any module in the program.

image

連結的明明是 SUB,卻出現一堆 LIB 錯誤﹝反過來也是一樣的情形﹞。這個與上例相同,請回頭去檢查您的 sub ﹝小寫﹞ 設定是否存在不合法的資料﹝通常是含到非 $TOP/sub 目錄下的東西,或是主程式﹝含有MAIN﹞,刪除掉就好了。

錯誤情形如下圖所示:

image

希望這兩種案例不要常常發生呢。

2010年8月20日 星期五

TIPTOP案例探討-不同部門間的表單資料分享設定方式

最近遇到有同學舉手發問:『我有2業務部門,業務一部的業務人員都可以 查詢/更改自己及業務二部資料,而業務二部只能查看業務二部key的資料,該如何設定?』

這問題應該有許多同學深感困擾,其實在TIPTOP GP上實作並不困難,以下用TIPTOP GP5.1為例說明:

1. 首先要把業務一部及二部區分到不同的權限群組 p_zw
    例如 p_zw 中新增 G-SAL01 與 G-SAL02 分別代表業務一部及二部
2. 定義 G-SAL01 對該程式的『對非與使用者同部門產出資料處理』選項設為『5. 僅相關部門群組間允許查詢/修改』
image
3. 定義G-SAL02 對該程式的『對非與使用者同部門產出資料處理』選項設為『4. 不同部門間, 不允許查詢/修改/刪除』
image 
4. 設定業務一部與業務二部為相關群組﹝注意:部門與權限群組是兩種不同的概念,其代號也不一定會相同,但我們仍能併行使用﹞
image

大多數同學若是未執行步驟一,而將業務一部及二部歸屬於同一權限群組下時,則下方『相關部門』的設定會流於形式無作用。

另外需注意的是,當新增群組或分割群組時,p_zx的資料也應該隨之進行調整。

同場加映:若改情境為:兩部門都不能互看訂單,但兩部門的主管可以互看,該如何調整?

理論上應是和以上的作法類似,但流程2.3.均需設定為『4. 不同部門間, 不允許查詢/修改/刪除,然後將部門主管設定為管理人應該要可以達到目的。但目前TIPTOP此種作法是不work的,必需把主管再獨立出來一個權限群組,並設定『5. 僅相關部門群組間允許查詢/修改』後始能成功,應該是系統的問題。

2010年4月14日 星期三

TIPTOP案例探討 - 惡搞TIPTOP之01 - 印QR code(二維條碼)

免責聲明之一:Google大神呀,HJ只是在推廣您的服務,若造成流量爆增,使用率增加,這都是工具太好用的緣故…
免責聲明之二:各位看官啊,哪天圖出不來,這是可能是因為Google神需要點香油錢,請記得搜尋一下市場行情價…

有圖有真相,先看一下。以aimi100來做範例,QR code儲存的是料號的編號。

image 
做法很簡單,Google已經把QR code以網頁圖片的方式表現,只要將資料以URL參數的方式傳入,它就會回傳一張圖片給你。原始說明檔可以參照這裡:http://ithelp.ithome.com.tw/question/10029549

對照到TIPTOP GP裡面的做法:
1. 在4fd內設定一個FormFieldImage﹝動態變換的圖片﹞,auotscale等屬性視需要調整。
2. 在4gl的_show()段落裡新增一個STRING,並指定網址+內容給這個圖片就可以了。

FUNCTION xxx_show( )
    <原有程式碼>
    DEFINE ls_qrcode         STRING
    <原有程式碼>
    LET ls_qrcode = "http://chart.apis.google.com/chart?cht=qr&chs=100x100&chld=M&chl=",g_ima.ima01 CLIPPED
    DISPLAY ls_qrcode TO formonly.QRcode
    <原有程式碼>
END FUNCTION


使用愉快…

2009年10月13日 星期二

TIPTOP案例探討 - 我的ACTION寫在sub或lib裡面,沒有轉換成中文?

TIPTOP GP從1.0版本開始,就把action的名稱代換交給4ad檔來作了﹝原始的TIPTOP BDL版本是在程式裡寫不同語言別的MENU來達到的﹞,因此,如果希望ACTION名稱能在執行時被轉換以『在地語言』顯示,就要瞭解一下4ad的總體架構。

TIPTOP程式執行起來時,對於4ad檔其實是讀兩份:
系統對目前語言別的4ad﹝$TOP/config/語言別/tiptop.4ad﹞
個別程式對目前語言別的4ad﹝$TOP/config/語言別/模組/程式.4ad﹞

個別程式的4ad是由p_base_act產生而來,tiptop.4ad是手工調整

由於有兩類的4ad,因此若發現客製﹝或標準﹞的ACTION名稱沒顯示想要補上,也有兩種作法:

1.從個別的4ad補:由於寫在sub或lib中,系統是以42x的格式把它包起來,製做4ad時從p_link拉下來的4gl清單自然就不存在這個sub或lib程式,而產生時就沒有這個ACTION。

可是別忘了p_base_act是允許自定ACTION NAME的。

image

因此,請在個別要用到的『主程式』內,『每個都訂一次』需要的ACTION名稱,再重新生成4ad就可以了。

2.可是我的sub/lib是有2500支程式要用的,我總不能訂2500次吧?是的,當這招不好用時,那只好麻煩『手動調整tiptop.4ad』,自行加入action id在所有語言別項目下。

但是,當使用2方法時,雖然操作簡易,可是每支程式都會讀入這個action資料﹝佔記憶空間﹞,操作上仍請自行衡量。

2009年10月5日 星期一

TIPTOP案例探討- 控制某些特定人才可用特定功能

TIPTOP在p_zy作業中可以指定『權限群組』對上『程式』的執行權設定。其中還可以指定『在這一個權限群組下的個別使用者』在『特定的程式下若資料有記錄創建部門、創建人員,就做查詢、修改、刪除的控管』。

這個意思就是:我們可以指定某部份的人可以查某些資料only,或是某些部門【或某些人】可以修改某些指定資料或刪除它。

那…如果我今天需要控管的是『確認』功能?

TIPTOP GP從1.x 版開始,即支援權限的加嚴控管作業 (p_auth_as),也就是說,可以透過『權限加嚴控管』,設定讓『確認』去比照『修改』﹝或『刪除』﹞的權限,在使用者不屬於此權限群組﹝或個人﹞時無法做這個動作。

image

Q: 為什麼不能設比照『查詢』?
Ans: 因為查詢是固定在程式碼裡的,不像Modify/Delete是用library控制﹝活的﹞

Q: 有些程式設了沒用?
Ans: 是的,請查看該程式的主要table是否有xxxgrup/xxxuser欄位,沒有的話就不能用此功能了。如果需要,就要客製table及程式再使用。

2009年10月3日 星期六

TIPTOP案例探討- 系統管理table斷開synonym


案例緣由

客戶:柚子的爸實業公司有台中廠和花蓮廠,可是兩端都有各自的IT人員及ERP開發人員,想要在TIPTOP上做到各別獨立控管;也就是台中廠的IT人員不可以去異動花蓮廠的權限、系統帳號…等等的設定。因此IT人員就將台中廠﹝資料庫為 DSTC﹞與系統資料庫﹝DS﹞的synonym全部斷開,開成實體存在的table
台中廠的Alex君某日突然發現,在啟用使用者登入帳號編碼﹝說明:TIPTOP GP 5.x後support﹞作業後突然發生異常無法登入…
案例說明

由於TIPTOP GP出現第一個畫面至使用者登入帳號、密碼輸入完成並驗證成功的過程中,系統真的也還不知道是哪個user要進來,此時當然更不會知道將進入的這個user是台中廠還是花蓮廠的。因此系統的作法是一律指定在系統資料庫﹝DS﹞內作業,直到我可以辨識user真實身份為止。
因此,若斷開各別資料庫與DS系統資料庫的synonym時,很可能就會發生基本設定不同而出現登入異常的情形。
應有作法

TIPTOP GP版本內,z*_file﹝z開頭的﹞及ga*_file / gb*_file / gc*_file 等table均屬系統基本資料表的範圍,切勿隨意移除synonym。否則很容易發生莫名其妙的系統性錯誤。
各廠間的IT人員應該相戶合作,共同維護基本資料,而從設定多組zw資料來進行管理上的切分。
又或者可以將zy_file 及 zxw_file 的synonym斷開,維護不同Database間各群組可用程式不同即可:其它系統table則仍須維持synonym。
若真的要做到完全拆開﹝連作業系統帳號都要做到互不隸屬管理﹞,那是否應該拆成兩組license並分裝在兩台機器上為宜。