[VtigerCRM][進階] 使用工作流來滿足自動化處理
這裡獨立出來一篇給有需要的朋友知道,首先甚麼是工作流?當某個動作條件成立時,就會觸發一個處理行為。譬如說我希望在第一次建立Quote時,會自動發信給負責人;或者當淺在客戶成立時發送信件給負責人。如果你有這種自動處理的想法。那你需要使用工作流。
工作流已經預先好幾筆被設定好內容,譬如每次RMA服務單成立會自動發信給客戶跟負責人,如果你發現你沒有得到這樣的服務,那是你的定時任務沒有被驅動。
你可以新增你要的新工作流。工作流最大的問題有兩個,一個是你必須先讓『定時任務』被驅動起來,透過定時任務去執行工作流;另一個是你要熟悉工作流的編寫觀念語法。我只能協助前者如何設定,後者在新版Vtiger 6變得很好理解,基本上自己摸索不難,除了進階的客製化模組,能觸發的就是發信、建立待辦事項、日曆、修改某值等等觸發行為。
本篇教你如何驅動定時任務,另外可參考以前5.4的作法概念雷同,但建議本篇做法。
驅動方式很簡單,根據Windows與Linux不同,將下列指定檔案丟給OS進行工作排程。如果你跟我一樣用NAS,那就視同Linux作法。
Windows : vtiger6/cron/vtigercron.bat
Linux:vtiger6/cron/vtigercron.sh
這裡我不太需要教,Windows就在電腦管理->工作排程器。指定15分鐘去跑這個檔案一次。Linux就去vi 你的crontab檔案。一樣這裡設定15分鐘跑一次。Linux的版本很多Crontab所以位置不一定,NAS作法也不一樣。
以我的QNAP NAS(Linux)為例,前往etc/config/crontab修改新增下列,並restart驅動
我不是很熟練vi,所以我習慣這樣做(在我的QNAP上)
1. 用FileZilla透過port 22取得檔案路徑etc/config/crontab修改Code並回傳。
2. putty進去,輸入crontab -l 檢查目前的預設排程清單
3. 輸入crontab /etc/config/crontab,載入我剛修改的清單
4. 輸入crontab -l,是否變成我要的清單
5. 輸入/etc/init.d/crond.sh restart,重啟Cron服務
Well,這裡講的做法根據不同環境有所差別,Linux或NAS的人請自行取得修改cron的方法,我這裡只PO QNAP作法。
到這裡你已經完成驅動了,在一定時間內 (15min)就會驅動Vtiger的定時任務。前往Vtiger→設定→定時任務。看一下畫面是否跟我差不多。如果跟我長得不一樣,那就是可能你的環境不支援php-cli,請自行確認。如果你畫面跟我一樣,接下來就不用改了。下面只是給還是無法驅動的人看。
我這裡的作法是放棄php-cli的驅動方式,因為通常在你的網站環境不一定能支援php-cli。因此我需要進行兩大修改作業
1. 先取得server的PHP_SAPI值,並替換掉cli
修改root/vtigercron.php的第42行的 if(PHP_SAPI === "cli" ||......。將cli替換成你的PHP_SAPI實際內容。通常是apache2handler,不確定的話可以先在40行插入 echo(PHP_SAPI."\n"); 做個測試。執行網頁http://YOUR_IP/vcrm6/vtigercron.php,確認是否顯示為apache2handler。
取消剛剛的40行修改,正式替換cli變成apache2handler。再執行網頁http://YOUR_IP/vcrm6/vtigercron.php,應該會出現類似下列一大串的東西
[CRON],"1405409688.96",http://192.168.1.251/vcrm6,Instance,"2014-07-15 07:34:48","",[STARTS] [INFO] Workflow - not ready to run as the time to run again is not completed [INFO] RecurringInvoice - not ready to run as the time to run again is not completed [INFO] SendReminder - not ready to run as the time to run again is not completed [INFO] MailScanner - not ready to run as the time to run again is not completed [INFO] Scheduled Import - not ready to run as the time to run again is not completed [CRON],"1405409688.96",http://192.168.1.251/vcrm6,Instance,"2014-07-15 07:34:48","2014-07-15 07:34:49",[ENDS]
跟我差不多有一大串東西時,這裡就OK了,檢查Vtiger→設定→定時任務。看一下畫面是否一樣。目前階段為:當手動去執行這個網頁就會驅動定時任務一次。
2. 修改cron/crontab.sh,將系統排程的處理事項做修改。全部刪除代碼(或全部前端加上#做忽略),只新增下列
這裡是做為執行一個驅動網頁,也就是剛剛我們手動的驅動網頁。
整個顛倒回顧,
1. 透過crontab,每15分鐘就會執行一個叫做crontab.sh的工作,並記錄log放置在log/debug.log
2. 這個工作內容,是執行網頁做為驅動vtiger的定時任務,但可能無法驅動成功。
3. 因為環境問題,我們把cli改成PHP_SAPI值,讓驅動可以成功化。
Bye!
參考:
https://discussions.vtiger.com/index.php?p=/discussion/170338/scheduler-cron-job-not-working-access-denied/p1
http://www.puritys.me/docs-blog/article-241-PHP-%E5%88%A4%E6%96%B7%E6%98%AF%E5%90%A6%E7%82%BA-Command-Line-%E7%9A%84%E6%96%B9%E5%BC%8F.html
工作流已經預先好幾筆被設定好內容,譬如每次RMA服務單成立會自動發信給客戶跟負責人,如果你發現你沒有得到這樣的服務,那是你的定時任務沒有被驅動。
你可以新增你要的新工作流。工作流最大的問題有兩個,一個是你必須先讓『定時任務』被驅動起來,透過定時任務去執行工作流;另一個是你要熟悉工作流的編寫觀念語法。我只能協助前者如何設定,後者在新版Vtiger 6變得很好理解,基本上自己摸索不難,除了進階的客製化模組,能觸發的就是發信、建立待辦事項、日曆、修改某值等等觸發行為。
本篇教你如何驅動定時任務,另外可參考以前5.4的作法概念雷同,但建議本篇做法。
驅動方式很簡單,根據Windows與Linux不同,將下列指定檔案丟給OS進行工作排程。如果你跟我一樣用NAS,那就視同Linux作法。
Windows : vtiger6/cron/vtigercron.bat
Linux:vtiger6/cron/vtigercron.sh
這裡我不太需要教,Windows就在電腦管理->工作排程器。指定15分鐘去跑這個檔案一次。Linux就去vi 你的crontab檔案。一樣這裡設定15分鐘跑一次。Linux的版本很多Crontab所以位置不一定,NAS作法也不一樣。
以我的QNAP NAS(Linux)為例,前往etc/config/crontab修改新增下列,並restart驅動
*/15 * * * * /share/MD0_DATA/Web/vcrm6/cron/vtigercron.sh 2>/share/MD0_DATA/Web/vcrm6/log/debug.log 1>2
我不是很熟練vi,所以我習慣這樣做(在我的QNAP上)
1. 用FileZilla透過port 22取得檔案路徑etc/config/crontab修改Code並回傳。
2. putty進去,輸入crontab -l 檢查目前的預設排程清單
3. 輸入crontab /etc/config/crontab,載入我剛修改的清單
4. 輸入crontab -l,是否變成我要的清單
5. 輸入/etc/init.d/crond.sh restart,重啟Cron服務
Well,這裡講的做法根據不同環境有所差別,Linux或NAS的人請自行取得修改cron的方法,我這裡只PO QNAP作法。
到這裡你已經完成驅動了,在一定時間內 (15min)就會驅動Vtiger的定時任務。前往Vtiger→設定→定時任務。看一下畫面是否跟我差不多。如果跟我長得不一樣,那就是可能你的環境不支援php-cli,請自行確認。如果你畫面跟我一樣,接下來就不用改了。下面只是給還是無法驅動的人看。
![]() |
驅動成功就會有右邊的資料 |
我這裡的作法是放棄php-cli的驅動方式,因為通常在你的網站環境不一定能支援php-cli。因此我需要進行兩大修改作業
1. 先取得server的PHP_SAPI值,並替換掉cli
修改root/vtigercron.php的第42行的 if(PHP_SAPI === "cli" ||......。將cli替換成你的PHP_SAPI實際內容。通常是apache2handler,不確定的話可以先在40行插入 echo(PHP_SAPI."\n"); 做個測試。執行網頁http://YOUR_IP/vcrm6/vtigercron.php,確認是否顯示為apache2handler。
取消剛剛的40行修改,正式替換cli變成apache2handler。再執行網頁http://YOUR_IP/vcrm6/vtigercron.php,應該會出現類似下列一大串的東西
[CRON],"1405409688.96",http://192.168.1.251/vcrm6,Instance,"2014-07-15 07:34:48","",[STARTS] [INFO] Workflow - not ready to run as the time to run again is not completed [INFO] RecurringInvoice - not ready to run as the time to run again is not completed [INFO] SendReminder - not ready to run as the time to run again is not completed [INFO] MailScanner - not ready to run as the time to run again is not completed [INFO] Scheduled Import - not ready to run as the time to run again is not completed [CRON],"1405409688.96",http://192.168.1.251/vcrm6,Instance,"2014-07-15 07:34:48","2014-07-15 07:34:49",[ENDS]
跟我差不多有一大串東西時,這裡就OK了,檢查Vtiger→設定→定時任務。看一下畫面是否一樣。目前階段為:當手動去執行這個網頁就會驅動定時任務一次。
2. 修改cron/crontab.sh,將系統排程的處理事項做修改。全部刪除代碼(或全部前端加上#做忽略),只新增下列
wget "http://localhost/vtigercron.php" -O /dev/null
這裡是做為執行一個驅動網頁,也就是剛剛我們手動的驅動網頁。
整個顛倒回顧,
1. 透過crontab,每15分鐘就會執行一個叫做crontab.sh的工作,並記錄log放置在log/debug.log
2. 這個工作內容,是執行網頁做為驅動vtiger的定時任務,但可能無法驅動成功。
3. 因為環境問題,我們把cli改成PHP_SAPI值,讓驅動可以成功化。
Bye!
參考:
https://discussions.vtiger.com/index.php?p=/discussion/170338/scheduler-cron-job-not-working-access-denied/p1
http://www.puritys.me/docs-blog/article-241-PHP-%E5%88%A4%E6%96%B7%E6%98%AF%E5%90%A6%E7%82%BA-Command-Line-%E7%9A%84%E6%96%B9%E5%BC%8F.html
作者已經移除這則留言。
回覆刪除已回信
刪除資安建議,您可移除電話與信箱避免網蟲竊取
江大:
回覆刪除感謝您的分享!小弟從5.4一路跟隨您的腳步將公司的CRM導入到6.0.公司也漸漸依賴上CRM.再次向您感謝.但近日發生指定任務相關的問題,想與您請益,公司CRM是安裝在server 2012 R2 裡VM 中的centos ,但在指定的任務中每一個項目都是激活的狀態,但是掃描的時間 都已經是4天以前的事情,能否點解哪裡出了問題?
Sorry
刪除忙著處理公司網站好幾個月,回家都都懶得開mail跟顧blog
應該跟VM沒啥關係,只是個OS層而已
centos我不熟,既然你曾經正常一段日子,代表原本設定都OK
當初你怎麼設定cron指令,這點要去檢查一下
我不知道你是選擇直接用linux crontab去驅動php-cli的vtiger6/cron/vtigercron.sh
還是像我這樣弄一個wget來驅動webpage,用crontab去執行vtigercron.php
反正,先檢查你的crontab是否正常
很有可能你的cron被reset或被關閉了
另一個做法,上面提到的cron兩種方式兩種都試
我是因為不支援php-cli才去用後者
一直都正常
我有次的經驗是也突然失敗
是因為曾經OS(QNAP NAS)進行版本升級或重新開機過會導致原本的crontab被回朔到原廠狀態
所以我是寫到QNAP官方建議的crontab作法
大大您好
回覆刪除非常感謝您熱心的教學文與繁體中文檔案 ^^
小弟目前遇到的問題想跟您請益
目前使用Vtiger 6.1 WIndows安裝檔安裝於Windows server 2008 R2 64Bit上
也已加入工作排程 但是仍是無法驅動 請問還有啥可能的原因嗎?
此人來信,說解決了 Σ(゚д゚)
刪除