Kanban

解決問題 Wekan (2)

教學目標

主要解決如何在 CentOS 7 作業系統上安裝與應用 Wekan API 優化流程的問題。

重點概念

首先 Wekan 開源專案主要是用 Node.js + MongoDB 開發的看版管理網站,然而若要優化流程,則還需要客製化輸出結果,此時是否有 REST API 能夠直接取得 Wekan 網站中的卡片資訊呢?答案是有的,我們可以使用 Wekan API 以 REST API 的方式直接取得 Wekan 網站中的卡片資訊。

接著我們可以透過下述指令安裝 Wekan API ,此 Wekan API 主要是用 Python + MongoDB 開發,透過 Python 能夠讓我們整合更多元化的機器學習和資料分析模組,將有助於流程的自動優化,以利企業達到最大的效益。

1
2
3
4
5
6
$ git clone https://github.com/LINKIWI/wekan-api.git 
$ sudo yum install python-virtualenv
$ virtualenv env
$ source env/bin/activate
$ make bootstrap
$ make serve

再來我們就能夠輸入「http://localhost:5000/」的網址開始使用 Wekan API,Wekan API 目前主要能夠取得三個重要的資訊,分別為:

  1. 看板 (boards)
  2. 清單 (lists)
  3. 卡片 (cards)

最後不同看板中會有不同清單,我們可以將清單當成不同的流程階段,並且不同清單會有不同卡片,我們可以將卡片當成不同的流程步驟,至於不同卡片中則會有許多關鍵資訊,包括人、事、時、地和物,其中我們可以針對每張卡片的成員、開始日期和結束日期搭配排程演算法優化流程的安排。此外我們還可以修改「/src/core」目錄中的「app.py」檔案,就能夠讓其它不同網域的應用程式進行跨網頁存取,像是 HTML5 網頁,請注意若要進行跨網頁存取則需要安裝 flask-cors 模組。

安裝 flask-cors 模組。

1
$ pip install -U flask-cors

修改「app.py」程式碼。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import json
import os

from flask import Flask
from flask_cors import CORS
from pymongo import MongoClient

app = Flask(__name__)
CORS(app)

def init_db():
config_file = os.path.join(
os.path.dirname(os.path.abspath(__file__)),
'../../config/database.json',
)
database_config = json.loads(open(config_file).read())

client = MongoClient(database_config['host'], database_config['port'])
return client[database_config['name']]

撰寫 HTML5 程式碼 (部份)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

$(document).ready(function(){
$.ajax({
url: 'http://localhost:5000/cards',
type: "GET",
dataType: "json",
complete: function(data, textStatus, jqXHR) {
console.log(textStatus);
},
success: function (data, textStatus, jqXHR) {
console.log(data.crads);
}
});
});

總結我們透過 Wekan API 搭配跨網域存取的功能,將能夠在 HTML5 網頁中直接透過 jQuery 的 Ajax 函數直接存取 Wekan API 的資訊,並且搭配 Bootstrap 美化介面,同時將排程演算法先以 JavaScript 進行撰寫,此時就能夠在短時間完成概念性驗證的示範網站立即與相關人員立即溝通與快速調整,以利符合流程的需求,更進一步優化流程。因此 Wekan 提供 80% 與流程操作相關的實用功能之外,20% 與流程操作相關的客製化功能,則能夠很輕易的進行客製化開發,以利滿足企業組織中流程優化的特別需求。

相關資源

解決問題 Wekan (1)

教學目標

主要解決如何在 CentOS 7 作業系統上安裝與執行 Wekan 開源專案的問題。

重點概念

Kanban 基本觀念

首先看板方法源自於 1940 年代後期,豐田在超市的研究中找到了一種絕佳的設計過程,也就是零庫存管理 (Just In Time,JIT),主要透過可視化的管理方式達到更好的「溝通」,其中溝通的工具就是看板 (Kanban),日語的 Kanban 代表訊號或卡片的意思。至於看板方式則是在 2005 年由 David J. Anderson 首先成功運用至軟體開發中,直到 2007 年才正式命名為看板方法。

接著看板方法有四個基本原則,分別為:

  1. 從既有的流程開始。
  2. 同意持續增量、漸進的變化。
  3. 尊重當前的流程、角色、職責和頭銜。
  4. 鼓勵各層級的領導行為。

以及六個核心實務的運作,分別為:

  1. 視覺化。
  2. 限制半成品數量。
  3. 管理工作流程。
  4. 讓規則明確。
  5. 落實回饋循環。
  6. 由協作改善,經實驗演進。

至於看板的定義則是一種透過漸進、演化過程來改變組織系統的方法,看板的本質是一個很單純的想法,那就是半成品 (Work-in-progress,WIP) 必須被限制,所以我們也可以描述看板方法為半成品的限制系統。

Wekan 基本介紹

再來 Wekan 主要是模仿 Trello 且最接近看板方法管理應用的開源專案,我們可以在安裝 Wekan 之前先進行試用,若能夠滿足最必要的需求再進行進行下述安裝步驟。

最後 Wekan 的安裝方式主要有二種,分別為 Docker 安裝和 Build 安裝,此篇主要以 Build 安裝為主,至於 Docker 安裝相對簡單按照官方的步驟安裝即可。然而 Build 安裝就相對較複雜,我們主要會進行下述六個步驟,分別為:

  1. 建立 Wekan 資料夾。
  2. 安裝 MongoDB 工具。
  3. 安裝 Meteor 工具。
  4. 安裝 Node.js 4.8.4 工具。
  5. 建立 Wekan 網站。
  6. 執行 Wekan 網站。

建立 Wekan 資料夾

1
2
3
4
5
6
7
8
9
10
$ mkdir /wekan
$ cd /wekan
$ git clone https://github.com/wekan/wekan
$ mkdir packages
$ cd packages
$ git clone https://github.com/wekan/flow-router.git kadira-flow-router
$ git clone https://github.com/meteor-useraccounts/core.git meteor-useraccounts-core
$ sed -i 's/api\.versionsFrom/\/\/api.versionsFrom/' ~/.meteor/packages/meteor-useraccounts-core/package.js
$ cd ..
$ rm package-lock.json

安裝 MongoDB 工具

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$ wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.5.tgz
$ tar -zxvf mongodb-linux-x86_64-3.0.5.tgz
$ mv mongodb-linux-x86_64-3.0.5 mongodb
$ rm -rf mongodb-linux-x86_64-3.0.5.tgz
$ cd mongodb
$ mkdir data
$ mkdir log
$ touch log/mongodb.log
$ vim mongod.conf
fork=true
port=27017
dbpath=/wekan/mongodb/data
logpath=/wekan/mongodb/log/mongodb.log
logappend=true
auth=false
$ /wekan/mongodb/bin/mongod --config /wekan/mongodb/mongod.conf

透過 mongo 客戶端工具進行測試。

1
$ /wekan/mongodb/bin/mongo

其中參數所代表的意義為:

  • fork:設定為 true 時,則啟動之後,不會鎖定。
  • port:設定資料庫連接埠。
  • dbpath:設定資料的儲存位置。
  • logpath:設定記錄檔的儲存位置。
  • logappend:設定為 true 時,則新增記錄檔會新增至檔案之後,而不會進行覆寫。
  • auth:設定為 false 時,則不會進行使用者驗證。

安裝 Meteor 工具

1
$ curl https://install.meteor.com/ | sh

安裝 Node.js 4.8.4 工具

1
2
3
4
5
6
7
8
9
10
$ sudo rm -rf /usr/local/lib/node_modules
$ sudo rm -rf ~/.npm
$ sudo yum install build-essential g++ capnproto nodejs nodejs-legacy npm $ git curl
$ sudo npm -g install n
$ sudo n 4.8.4
$ sudo npm -g install npm@4.6.1
$ sudo npm -g install node-gyp
$ sudo npm -g install node-pre-gyp
$ sudo npm -g install fibers@1.0.15
$ sudo npm install

建立 Wekan 網站

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$ cd /wekan/wekan
$ rm package-lock.json
$ rm -rf .build
$ meteor build .build --directory
$ cp fix-download-unicode/cfs_access-point.txt .build/bundle/programs/server/packages/cfs_access-point.js
$ sed -i "s|build\/Release\/bson|browser_build\/bson|g" .build/bundle/programs/server/npm/node_modules/meteor/cfs_gridfs/node_modules/mongodb/node_modules/bson/ext/index.js
$ cd .build/bundle/programs/server/npm/node_modules/meteor/npm-bcrypt
$ rm -rf node_modules/bcrypt
$ npm install bcrypt
$ cd .build/bundle/programs/server
$ npm install
$ cd /wekan/.build/bundle
$ export MONGO_URL='mongodb://127.0.0.1:27017/admin'
$ export ROOT_URL='http://localhost:3000'
$ export MAIL_URL='smtp://user:pass@mailserver.example.com:25/'
$ export PORT=3000

執行 Wekan 網站

1
$ node main.js

透過瀏覽器開啟下述網址,就能夠開始使用 Wekan 網站。

1
http://localhost:3000

總結看板方法主要是從既有的流程開始改善,至於 Wekan 工具則適當的運用,同時持續進行改善與優化,才能夠帶來流程優化之後的最佳成效。

相關資源

專案管理 Kanban (2)

基本介紹

教學目標

初步了解看板方法的回顧會議之概念。

重點概念

(註: 以下內容主要純屬銀行資訊人員工作經驗分享,並非標準流程。)

在組織內運行看板方法時每個月最好有至少一次回顧會議,類似於 Scrum 中的短衝回顧檢討會議,請參考 Scrum 指南,主要目的為:

  • 檢驗這個月內有關於人員,工作關係,流程,和工具的情況如何。
  • 找出並加以排列做的很好的主要任務們和具有潛力改善的任務們。
  • 制定一個計劃讓團隊的最佳工作方式得以改善。

一開始我們會在看板挑一張準備分享的便利貼 (最有意義的任務) ,並且自己給予評價分數 ( A+、A、B+、B、C ),並且填下以下相關事項。

  • 基本簡介
    • 任務摘要
    • 負責人
    • 評價分數
    • 花費時間
    • 提升效益
    • 感謝何人
  • 執行情況
  • 面臨問題
  • 檢討建議

接著在開始回顧會議之前,我們團隊組長會邀請部門科長、部門協理和敏捷顧問一同參與,並且在現場白板上將每個人的便利貼按照評價分數進行分類,等待會議開始,再來就由團隊組長說明此次開會目的,以及逐一請團隊成員上台分享這個月最有意義的任務,內容包括任務摘要、負責人、評價分數、提升效益、執行情況、面臨問題、檢討建議、感謝何人。此時過程中會由團隊組長將改善建議填寫至便利貼中,每個任務可以有多個改善建議。

當每個團隊成員包括團隊組長都分享完之後,團隊組長就會將改善建議貼至白板中,接著大致說明之後,再請團隊成員個別進行投票,選出得票數最高的改善建議保留下來貼回至看板中時刻提醒團隊們注意該改善建議,例如:SQL 效能優化、SOP 文件準備、簡化工作、…… 等。

此外團隊成員會再依據 Scrum 五大價值觀,分別為承諾、專注、開放、尊重和勇氣,填寫至少兩張好或不好的事項,貼至白板中,接著再由團隊組長將所有事項進行分類,並且大致說明之後,再請團隊成員個別進行投票。再來我們會針對不好的事項,找到最能解決與控管的利害關係人,並且將此次回顧會議的記錄文件複本給提供參考。

最後由敏捷顧問進行評論,指導我們該如何進行改善,以及協助後續與利害關係人的溝通。總結來說,看板方法除了每日的站立會議之外,每月的回顧會議更能夠讓我們更專注於維護和開發的任務中,過程中尊重每個人的意思、開放心胸進行學習、勇氣挑戰優化任務、並且在承諾的時間內完成任務的交付。

相關資源

專案管理 Kanban (1)

基本介紹

教學目標

初步了解看板方法的基本概念。

重點概念

當組織發生變革時我們要如何適應呢?然而不論正向思考或負向思考皆會面臨組織的危機點,此時藉由精實開發之看板方法有效且短時間內修正渡過危機持續成長。從專案開始我們做的第一件事情主要是看見整體,接著定義範圍,可是有挑戰的複雜專案需求會一直改變,此時藉由敏捷開發之 SCRUM 方法有效由上而下處理複雜專案;然而當敏捷開發之 SCRUM 方法與組織文化抵觸時,會先以組織文化為主,也因此敏捷開發之 SCRUM 方法的成功關鍵在於老闆的觀念是否正確。此外若當發現組織文化與看板方法抵觸時則會修正組織文化,同時符合精實開發的原則縮短開發時間,所以當組織發生變革或要導入敏捷開發時最好先從落實精實開發之看板方法開始。

精實開發的原則主要是組織文化的基礎規範,分別為:

  1. 消除浪費
  2. 增強學習
  3. 盡量延持決策
  4. 盡快交付
  5. 授權團隊
  6. 嵌入完整性
  7. 看見整體

第一原則消除浪費主要先繪製出開發流程或價值流程圖,找出浪費時間的原因,像是等待就是一種不能控制的事情,減少等待的時間,以及資源充份應用,就能夠讓時間變的更快。開始的第一步就是使用看板,目前敏捷開發之 SCRUM 方法皆採用看板,因為看板能夠充份表達出昨日主要進行哪些對組織有意義的事情、今日將會進行哪些對組織有意義的事情,以及目前遇到什麼阻礙需要團隊協助解決,同時藉由昨日事情進行自我檢討和今日事情進行自我學習,看板方法的約束相較 SCRUM 方法約束較少,主要有六大核心實務,分別為:

  1. 視覺化
  2. 限制半成品數
  3. 管理工作流程
  4. 制定明確規則
  5. 落實回饋機制
  6. 在協作中持續改善

其中前三項核心實務的約束為主,後三項核心實務的約束則為策略,看板其實源自於豐田主要有兩個原則為零庫存系統和拉式系統,直到 2007 年才正式正名為『看板方法』,主要僅是改變管理方針的途徑。藉由看板能夠讓專案透明化,並且透過給予學習的機會讓團隊成員成長更快速,以及藉由回饋所帶來的價值持續改善。

最後我們都知道專案失敗最主要的原因為需求不明確,此時要如何讓需求更明確呢?主要可以藉由使用者故事以卡片說明、對話問題和測試案例的方式拆解出滿足需求的任務,卡片資訊主要包括標題、工時預估、說明、負責人、重要性、…等資訊。因此主要會由團隊的一起評估開發時間,以及進行討論與回饋,切記卡片主要僅代表團隊對任務的認知,以及最終目標,內容足夠就好,當然除了卡片之外,落實看板方法最好了解看板背後隱藏的規則,並且針對『完成』進行定義,再藉由增刪欄位改善組織文化。總而言之若要導入敏捷開發之 SCRUM 方法之前,最好先導入精實開發之看板方法改善組織文化。

相關資源