[OpenERP] 客製流程(以expense為例)

1.        先定義流程狀態(state)
#sudo vi /opt/openerp/server/openerp/addons/hr_expense/hr_expense.py
修改 :
=>增加兩個狀態 hr_expense.mt_expense_first_approved, hr_expense.mt_expense_second_approved

=>增加兩個狀態 first_approved, second_approved

=>加入以下兩個methodaction call,主要是來change state

       
2.        增加流程動作
OpenERP上,點選"設置">"技術">"工作流程">"工作流程"


=>這時會顯示所有目前已定義的流程


我們以expense來說明,所以點選"hr.wkf.expenses"

點選後會跳出此流程的所有動作(activity),



按下"編輯"來新增我們要的動作

點選"新增一個項目",填入名稱,工作流程,類別及python 動作

新增源活動及目標活動

這裡的信號代表畫面上按鈕的動作(name),此時可選擇這個活動的使用者群組,來限定可執行該動作的人員.

依樣作出second_approved.
3.        修改畫面
點選人力資源”>”費用並按下建立

此時在上方調試視圖#xxx”內選擇編輯Form視圖

會出現如下圖,


在裡面新增兩個button
更改
最後按下存檔就完成了.

[PostgreSQL] PostgreSQL 9.x Replication 心得記錄


1. Hot-Standby vs. Warm-Standby:
    先講講Warm-Standby,它指的是Standby server處在offline的狀態下,並不能提供查詢工作。主要目的是讓Master在失效後能透過它快速的啟動來接手服務。
    而Hot-Standby基本上跟Warm-Standby相同,只差異在於Hot可以提供read-only queries,可以利用這個特性來做負載平衡。

2. Replication 方法差異(file-based log shipping, streaming replication 及 synchronous replication)
    a) file-based log shipping:
            指的是copy WAL log 到指定目錄,等到master有問題時,可以透過這些備份的  
        WAL log來進行還原。此方法是當一個WAL被填滿時(預設是16MB),才會進行copy,
        所以master跟slave之間會有比較大的delay。


    b) streaming replication :
             相較於file-based log shipping,Streaming的方式是根據WAL Record,在master
        及standby node各自有一個WSL Sender及Receiver來對資料進行replicate。



    c) synchronous streaming replication :
           與streaming replication相似,只需於Master的postgresql.conf增加配
       置synchronous_standby_names,再於recovery.conf裡的primary_info裡多增加
       application_name就可以了,這些參數會保證replication 同步。有一點值得注意的是當
       你的synchronous_standby_names不只一個時,只有一個(第一個)可以做為同步的對象。

主要的設定為:
    a) master node 上的 postgresql.conf
        wal_level = hot_standby or archive                                       #對應hot-standby or warm-standby
          archive_mode = on
          archive_command = 'cp %p /home/postgres/archive/%f'        
#也可用rsync來達到
          max_wal_senders = 1                                                        #基於WAL Record,值視standby server的數量
          synchronous_standby_names = 'standby_db1,standby_db2'    #同步replication時會用到
    b) slave node 上的 postgresql.conf
        hot_standby = on                                                             #hot-standby才需要有這個
    c) slave node 上的 recovery.conf
        standby_mode = on
          restore_command = 'cp /home/postgres/archive/%f %p'  
          primary_conninfo = 'host=db01 port=5432 user=repusr password=repusr application_name=standby_db1#同步replication時會用到
          trigger_file = '/opt/pg92/pgsql.trigger.6432'