2020年11月8日 星期日

關於商業規則 Business Rules

每個企業,都有他的企業商業規則,Business Rules。

這些商業規則,應該要獨立的存放在 MySQL資料庫中。

設計師應該要記住:商業規則不應該放在應用程式中。

商業規則,可以被應用程式使用,但不是把他寫死在營用城市裡面。

原因:

1- 商業規則是不斷發展中的

2- 情況是會改變的,例如有了新的規則

3-這個商業規則可能會使用在不同的應用程式裡面。


MySQL 和 商業規則

負責商業規則的程式設計師,要建立一個兩層的應用程式:

1 - 商業規則層

2 - 應用程式層

使用 MySQL 資料庫系統就是一個建立商業規則層的明顯選擇。

就是因為他可以使用大部分的程式語言,而且程式設計師可以:

1 - 將商業規則資訊存放在 資料表 Table中

2 - 使用 stored function/procedure 來執行商業規則。

使用 MySQL 建立好的商業規則,可以很便利的為使用各種不同的程式語言寫得贏用程式來呼叫使用。包括在網路上的應用程式。

建立簡單的 MySQL Stored Function 商業規則

商業規則本身,可以使用 MySQL的函數來建立。

很明顯的,這些規則可以使用 if.. then..else 指令來完成。

例如:根據輸入的項目,而採取不同的行動,程式:


delimiter //
drop function if exists business_rule;
create function business_rule (status varchar(50)) returns varchar(50)
deterministic
begin
declare new_status varchar(50);
if status = "new" then
set new_status = "case opened - send to engineer";
elseif status = "fixed" then
set new_status = "problem solved - inform customer";
elseif status = "nofix" then
set new_status = "problem unresolved - sent to engineer";
elseif status = "raise" then
set new_status = "problem escalated - inform manager";
elseif status = "close" then
set new_status = "case closed";
else set status = "undefined";
end if;
return new_status;
end
//
delimiter ;


這個函數,可以被應用程式呼叫使用:


echo "select business_rule('new')" | mysql -uuser -ppassword business_rules_db


這樣一來,

1. 這些商業規則,可以被不同語言的應用程式使用,或任何可以使用MySQL的應用程式

2.  商業規則可以被獨立更新或修改、增加而不需要更動應用程式。

最後,程式設計師可以有一個有力且可適應修改商業規則,而與使用他們的應用程式獨立運作。


簡單翻譯自:

https://steemit.com/utopian-io/@haig/how-to-use-business-rules-in-a-mysql-database-using-mysql-functions-to-create-two-tier-business-savvy-applications



沒有留言:

張貼留言

如何判斷現在FORM是在 insert mode? 還是 update mode?

只要用  if (empty({primary_key})) 就可以知道是否為新增模式了。 如果 {promary_key} 是空白的,那麼就是在新增模式;反之,就是更新模式。 以上。