發表文章

目前顯示的是 2010的文章

如何以SQL指令作Performance Tuning

圖片
一般而言SQL 的Performance Tuning 可使用SQL Profiler , 但是如果要調教的機器上SQL Server上並未安裝SQL Profiler 或使用者不會使用SQL Profiler時, 則可用指令的方式執行. 本案例的狀況是: 對方的機器是SQL Server 2008 且未安裝SQL Profiler. 筆者手上的機器只有SQL Server 2005 , 但有安裝SQL Profiler . 1.建立SQL Profiler 的指令檔. 1.1 開啟SQL Server 2005 , 進入SQL Profiler.   1.2. 選擇追蹤的事件    可設定常用的事件, 包括 RFC:Completed, SP:StmtCompleted,SQL:BatchCompleted 1.3.設定資料行篩選,     可設定篩選條件例如針對Reads 的次數大於1000以上才記錄. 1.4. 設定完成後, 點選執行後, 在將其停止, 並匯出指令檔. 1.5. 產生的SQL 如下: (若上述的追蹤項目可用, 可直接使用以下的SQL 追蹤) -- Create a Queue declare @rc int declare @TraceID int declare @maxfilesize bigint set @maxfilesize = 5 -- Please replace the text InsertFileNameHere, with an appropriate -- filename prefixed by a path, e.g., c:\MyFolder\MyTrace. The .trc extension -- will be appended to the filename automatically. If you are writing from -- remote server to local drive, please use UNC path and make sure server has -- write acce...

比對SQL Server 資料庫Schema

圖片
  下載位址: http://www.dbcomparer.com/ 版權: Free 適用資料庫版本: Microsoft SQL Server 2008 (and 2005) 功能說明: DBCompare 可以比對SQL Server 2008 與 2005 的資料庫的Schema,其比較的項目包括整個Schema 所有項目.   1. 安裝DBcomparer 2. 輸入兩個資料庫的位置與認證資訊 3.設定比對項目 點選Compare Options 可以選擇比對的項目. 3.開始比對 點選Compare Now 開始執行比對. 4.比對結果   上方視窗顯示兩個Schema 的差異 5.差異說明 黑色字表是兩者相同 紅色與欄色字皆表示可能有差異 差異可能是欄位也可能是索引, 因此可以展開有差異的檔案逐一檢視.

選擇適合的流程平台

BPM、SOA、Workflow、電子表單 打開Google 輸入BPM、SOA、Workflow、電子表單任何一個單字,至少可你看到數十種以上得產品,包括ultimus、K2、AgilePoint、華苓(AgentFlow)、超義(Power Process)、新人類(FlowMaster)甚至Oracle、IBM、Mircosoft…等等都有相對應的產品,早期最常被客戶問到的是BPM與Workflow 有什麼不同?要導入SOA或BPM呢?現在大家已經不在意這個問題了, 因為現在所有的產品都說是自己是BPM或SOA. 每個產品都號稱自己功能強大, 只要簡單的拖拖拉拉工作就完成了,真的是這樣嗎?如果導入了一個錯誤的產品, 簡單的需求當然沒有問題, 但是面對複雜的問題時, 因為東西已經買了, 要退貨或解約, IT 主管不只要面對廠商, 也要面對內部老板的壓力, 在這種情形下只好改變公司的流程去迎合產品. 有句話說不管黑貓白貓能抓的到老鼠的就是好貓,同樣的不管叫SOA或BPM只要能符合企業需求的就是好流程. 為了避免導入不適合的產品, 在導入前應該更審慎的評估, 先了解本身的需求, 再評估那一個產品適合自己的企業, 可是面對市場上琳瑯滿目的產品或平台該如何選擇呢? 企業應該導入一個BPM產品(電子表單系統)或SOA的架構? 在評估適合產品時,我們可以先看一下兩個最常見的產品類別,不論是Workflow或電子表單我們統一叫作BPM, 另一類是屬於較完整的架構的我們稱為SOA.  導入SOA 在一個SOA的平台中不論外掛或整合都會含有BPM的模組, 目前市場上所看的到的SOA平台都是屬於資訊界的大廠所推出的產品. SOA平台(含BPM 模組)其特點是平台架構完整, 因此具有未來擴充性, 同時SOA的平台通常可以用程式語言開發流程所需要用到表單與各種整合的元件,可是導入一個SOA的平台不是只由技術層面來考量, 還要由公司整體IT發展的策略來看, 因此架構完整的另一個義意, 代表了覆雜, 因此很難短時間內看到成效. 通常SOA的平台較擅長的是在自動化流程或系統整合部份, 面對華人地區覆雜的簽核流程時組織簽核的功能通常較弱, 我常開完笑講在歐美是符合規則就不用簽, 在台灣是符合規則就要簽, 而且這個規則的彈性很高, 其實台灣的企業都...

AgilePoint逐級簽核與指定簽核層級範圍

圖片
  循序簽核 企業流程中, 大部份的行政流程都採用申請者逐級簽核的方式進行, 由申請者開始依組織的層級逐級向上簽核,當導入BPM或Workflow時也會面臨同樣的問題, 一般常見的作法是逐一繪出組織層級與流程. 上述的流程雖然很清楚的呈現簽核者的層級與流程, 可是問題也不少,因為一般流程的訪談都是以最基層的員工為主, 因此很容易發生以自己為出發點去設計流程,試問 1.如果經理自己申請是否要自己核准, 如果協理申請是否要給經理簽 ? 2. 如果有一個部門沒有協理怎麼辦 ?一個流程如果要適用於生產部門的工廠與行政支援部門, 通常其組織結構是不同的, 傳統的作法是把每個組織了流程劃出來, 整個流程密密麻麻. 逐級簽核 新的流程設計通常改用逐級簽核的方式, 以類似迴圈的方式判斷是否達到核決的權限, 如未達到則在找上一階主管, 已達到則離開迴圈, 不論申請者是何層級或組織階層為何皆可執行.   AgilePoint 提供很有彈性的逐級簽核的判斷,可在單一條件的流程元件(Single Condition) 是否達核決權限中判斷指定的流程變數(圖中IsPrivileged)為True或False, 因此只要在流程中依組織的核決規則去設定流程變數值即可. 判斷是否達核決權限的判斷有許多種方法, 第一種是在人工簽核作業元件中設定判斷的基准,該元件會依設定的內容指定流程變數的值. 內件元件可以依人員或部門甚至流程變數的值作判斷, 判斷的方法有特定的值(等於某個層級), 特定欄位值是否符核該層級的區間(經理可准假幾天, 協理可以核准採購金額多少),上簽幾階等不同的方式. 如果內建的內容無法滿足時,亦可在表單上運算然後將結果(True/False)直接設定給流程變數, 不過我們通常不建議將判斷寫於表單上, 比較建議的方法是寫成一個流程元件(AgilePart), 其優點除了簡化表單的設計外, 另一個好處是可以重覆利用這個元件, 達到組合流程的目的. 資產處分流程中, 依資產使用年限與殘值決定核決層級, 以AgilePart 製作核決權限判斷元件. 設計一個可參數化的流程元件直接設定所需的核決層級. 透過上述幾個案例, 可以發現逐級簽核有兩個重點, 一個是需要一個樹狀...

如何將SQL Server 的查詢輸出寫入文字檔

圖片
  SQL Server 預設會將執行結果顯示於畫面上,可設定將其輸出寫入外部檔案,此項設定只針對新開啟的視窗有效. 以下範例是針對SQL Server 2005 . a. 開啟SQL Server Management Studio b. 點選工具à選項 c. 設定查詢結果,選擇將結果存檔 d. 開啟新的執行視窗,並執行指令. e. 選擇輸出檔案名稱. 雖然預設副檔名為 .rpt , 但其內容為文字檔,因此可用文字編輯開啟.

如何查詢AgilePoint 版本升級資訊

圖片
AgilePoint 版本記錄 AgilePoint Server 升級的記錄會寫入Registry, 其路徑為              HKEY_LOCAL_MACHINE\SOFTWARE\Ascentn\Upgrade 可看到每個版本有一個更新記錄的目錄, 右側視窗亦有一個TimeStamp 記錄升級的時間.   AgilePoint 4.0 版以後的命名格式為 主版本(2位).次版本(2位).ServicePack(2位)Hotfixed(2位) 由以下記錄可以看出這台機器歷史久遠, 由AgilePoint 3.204 patch1 net11 到 3.204 patch2.0. 再升級為 4.0 , 一直到最新版的 AgilePint 4.7 service pack 2 hotfixed 4 (04.070204) 這個記錄也是一個AgilePoint由過去版本(3.204)升級為最新版本(4.7sp2), 基本上升級的過程都很順利, 只要直接安裝新的版本, 一個按鍵系統就自動將所有安裝的產品(AgilePoint Sever/Developer/envision …)都升級. 如何重新安裝ServicePack 或Hotfixed ? 如果需要重新安裝特定版本的Service Pack或Hotfixed  , 若該版本已經安裝過, 安裝時系統會出現已經安裝過的訊息, 例如: “The upgrade has already been applied on …” 如果需要重新安裝已經安裝過的版本, 可以將Registry 刪除, 在重新安裝即可.

如何修改流程資料庫中使用者帳號的Domain

注意: 以下方法建議用於測試資料庫, 使用於正式資料庫需注意其中的風險 感謝Gemtek 的 Fred 提供相關指令. AgilePoint Server 系統中所有的資料都是存在流程資料庫中, 若測試主機與正式主機兩者採用相同的帳號, 則只需將正式機的資料庫複製至測試機上則可以模擬相同的流程情境, 必要時可將測試機採用Form 認證, 並設定為測試模式(只輸帳號不輸密碼) 則很容易的模擬流程中各角色簽核情形.   但若測試機與正式機兩者網域不同時則需修改使用者帳號中的domain, 過去我有寫過一段SQL 作為Update 相關Table 的domain , 不過因為是用取出字串重新組合的方式, 有一個很大的缺點是得算出新舊帳號的長度, 然後取substring()再組合, 自己也覺得不是很方便, 因此只留著自己用. update  WF_REG_USERS set USER_NAME = 'APDEV02'+substring(user_name,12,20),   USER_NAME_UPCASE = 'APDEV02'+substring(user_name_upcase,12,20) where User_Name like 'vpc-ap-main%' 今天由另一個客戶某科技大廠的同仁 Fred, 手中看看一個不錯寫法, 用Replace 的方式來寫, 只需將舊的Domain Replace 成新的Domain , 因此徵得他的同意提供給大家參考. --AgilePoint 預設的流程資料庫 update WF_EVENTS set SENDER=replace(SENDER,'PORTAL','PORTAL-TEST') update WF_MANUAL_WORKITEMS set LAST_MODIFIED_BY=replace(LAST_MODIFIED_BY,'PORTAL','PORTAL-TEST'),USER_ID=replace(USER_ID,'PORTAL','PORTAL-TEST'),ORIGINAL_USER_ID=replace(ORI...

無法顯示程式清單

圖片
AresPortal 中的樹狀結構是使用WebCtrl_Client 的元件, 若無法正常顯示通常都是網站中沒有這個元件或沒存取的權限 正常的程式清單   無法顯示樹狀結構 檢查是否可以存取 可開起IIS 管理員, 找到webctrl_Client 之Treeview.htc 按右鍵瀏覽, 若可出現下載視窗表是存取正常, 若出現您無存取這個頁面的授權, 則表示權限設定錯誤. 顯示無存取權限 開啟存取權限 a.首先將該目錄設定為可讀取 b.設定目錄安全, 點選編輯 可設定為啟用匿明存取或指定存取驗證的方式

讓流程一目瞭然

圖片
AgilePoint 的流程設計工具是使用基於Visio的Envision, 流程圖可以很明確的呈現流程的規則, 在流程設計上可採用由左至右, 將同一部門或同一階段的工作放在一起, 另外也可以用線條的顏色來區分不同的作業, 就可以作出很請礎的流程.可是如果可以再加上一些區塊, 以區分出流程中各階段的作業, 更可以讓流程一目了然. 比較下面兩張流程圖, 可以很明顯的看出差異性. 調整前, 作業流程已經很明確了. 調整後, 是不是更容易看了呢? 怎麼作呢? 很簡單只要用Visio 的圖形樣版中的區塊, 作為其底圖. 選擇 檔案-->圖形-->區塊圖-->區塊 再將其移至最底層, 並設定其底色(以粉色系為主), 並可調整其透明度至50-60% 將每個區塊設定為不同的顏色, 則整個流程圖將更為明確.

親愛的, 我把圖形變小了

圖片
AgilePoint 的流程是採用Model-Driven的設計架構, 由規劃-->設計-->開發-->執行, 所看到的都是相同的流程模型, 因此所看到的流程圖就是真正執行的流程圖, 其中一個優點是可以讓企業中所有參與的同仁都可以很清礎的看到完整的流程規範. 可是如果在一個流程中有很多系統整合、資料庫寫入或內部邏輯處理的AgilePart , 則會讓人有眼花撩亂的感覺,因此有很多的使用者都反應要如何不讓使用者看到這些AgilePart ? 因為AgilePoint 執行期所看到的流程圖就是設計時的流程圖, 因此無法直接將其移除. 在AgilePoint 4.x 版, 增加了一個新的功能, 可以把自動化的流程元件AgilePart 縮小, 相對的可以突顯手動執行的步驟及流程中的處理邏輯. 自動化的流程元件AgilePart 可以在Envision 中, 進行放大與縮小. 點選放大(Expand All AgileParts)(預設值) 點選縮小(Collapse All AgileParts), 自動化的元件會變小,但其餘元件不變. 圖形縮小後, 再將其佈署至AgilePoint Server, 執行時則可看到圖形變小了.

導入 BPM 不一定要犧牲彈性

圖片
BPM 沒有彈性嗎? 很多的企業導入 BPM 或 Workflow 的原因,是希望利用流程的設定,讓企業依循一定的規範運作。但在實務上我們常看到,因為規範的太嚴謹,導致運作上的困難。比如說在一個科技業或銀行業,物品的攜出入管制是相當嚴格的,一定要經過特定層級主管的放行才能夠攜帶出去,但總會有一些例外的狀況需要例外的處理,像是半夜緊急維修、主管已經下班、或是上班時間主管在會議中無法簽核。 企業導入差旅的流程,將差旅申請、費用報支導入流程管理,除了強化制度化的流程管理外,亦能讓費用審核更加透明化。可是也有人會擔心,如果遇到緊急出差的情形,一連串的申請作業如出差申請、預支申請、購買機票都需要主管審核,主管有時不在,或未指定代理人情形下,常會使得工作延誤。 因此,有些企業在導入 BPM 時,透過大量的 E-mail 簽核、批次簽核、 Mail 通知、簡訊通知,目的就是在於減少簽核延遲的情形。曾經聽過有一個公司的主管申請一支手機專為假日登山時使用,因為如果在山上收到簽核通知,難道要立刻趕下山嗎?所以有時判斷事情的重要性,是一件令人很為難的工作。 另一個常見的情形是,採用紙本申請時,有時直屬主管不在,可以直接拿給上一階主管簽核 ( 例如經理不在直接給協理簽 ) ,可是採用電腦化以後很多的流程平台是以循序工作指派的方式進行,單子卡在直屬主管身上,其它主管想代簽都很麻煩。 因此,很多企業在導入流程時,為了避免這種情形,刻意將一些流程排除在 BPM導入範圍之外,為了就是保留一些彈性。但在一個流程中正常的情形可能有90% 以上,例外的情形並不常見,因此而不將這些流程納入流程管理,可能會有為了 一棵樹木而喪失整個森林的遺憾。 利用例外管理創造流程彈性 除了將可能有例外的流程不要導入外,難道沒有更好的方法嗎? 觀察上述流程無法導入的原因,我們發現很多的情形是,因為大部份流程產品都只能作到循序的執行,無法動態隨流程執行的條件改變流程。如果流程可以作到隨執行的條件動態來執行流程的步驟,這些問題都可以迎刃而解。 例如前面所提到的攜出入流程,只要增加一個急件的選項,一般情形需主管審核後才能到保全放行的關卡;遇到急件時,可以讓主管審核與保全放行平行處理。為了避免同仁動不動就勾選急件,申請時對急件的選項可加入需在非上班時間才能勾選;甚至保全在放行時,表單上可...

如何使用SQL Profiler 找到語法錯誤

圖片
  SQL Profiler 我們在執行SQL 語法時, 常發生SQL Server 端的錯誤, 但無法直接由Client 端的訊息看出來,此時我們可透過SQL Profiler 來找到Server 執行的錯誤, 只是Server 端的事件那麼多該如何找到錯誤呢? 一個很重要的觀念, SQL Server 不論執行的結果如何, 正確或錯誤都會產生Complete的事件, 如 StoreProcedure 的 SP:Completed/StmtCompleted   一般SQL 的SQL:StmtCompleted / BatchCompleted. 奇怪了, 都錯了怎麼還有BatchCompleted 呢? 別緊張在Error 欄也有寫執行結果(1-Error) ,因此我們可以針對執行結果為1-Error 的部份, 來看它的錯誤原因,只要設定Exception 及User Error Message , 並針對所需的指令類別(StoreProcedure或一般SQL)所需的Completed 事件, 就可以找到錯誤的指令.   實際應用的案例 以下是一個我們在Client 端程式所發生的錯誤, 可是單由Client端的訊息看不出來錯在那裡, 執行資料庫Schema 更新失敗(Schema Ver.18 update failed) 接下來要找到失敗的原因. 1. 開啟 SQL Profiler. 開始-->程式集—>Mircosoft SQL Server 2005->效能工具->SQL Server Profiler. 2.新增追蹤 3.連結資料庫 4.設定所需的事件 預設項目除了 RPC:Completed , SP:StmtCompleted, SQL BatchCompleted 其餘均可取消.   5.勾選 顯示所有事件及顯示所有資料行. 6.選擇必要的事件    對於找出一般SQL 指令的錯誤而言, 只需要設定三個值, 其餘可取消.    設定Errors and Warnings 之 Exception 與User Error M...