Tabledown
description
Transcript of Tabledown
Tabledown?
• 命名靈感: Markdown
• (應用)資料, Java示範, Python實作
• google: tabledown
About me
SI 5+ 事C/C++PerlJavaWeb
SW 5- 人 Python
SD 5+ 球 GroovyScala
能用軟的解決就不要硬來
• 運算能力躍進• 規模經濟戰場• 整合勝過特製
大綱
• 背景 - 發展 Tabledown 原由
• 方案 - 開發與使用觀點
• 可能 - 還能做的?
開始
• 強者DIY, 採取DRY
• 找合用的系統 ...
• OFBiz ☞ FLOSS! Apache! 中文?
安裝
• FLOSS 持續改版
• 應用系統設定繁雜, 資料遷移問題
• 跨多個子系統, 多個 UI
• 使用 twill 播放 HTTP (解決)
• scotch HTTP 代理記錄成 *.pickle
• translate-recording-to-twill 轉換 *.twill
UX FAIL!
DATA FAIL!
twill 範例
go http://localhost:8080/ofbizsetup/control/mainfv 2 groupName '甲方'fv 2 USER_ADDRESS1 '東大路'fv 2 USER_POSTAL_CODE '300'fv 2 USER_COUNTRY 'TWN'fv 2 USER_CITY '新竹市'fv 2 USER_WORK_COUNTRY '886'fv 2 partyId 'jia'fv 2 USER_WORK_CONTACT '5153000'fv 2 USER_WORK_AREA '3'fv 2 USER_EMAIL '[email protected]'submit
(部份)
使用應用系統
• 常見: 人員, 產品, 專案
• 不同系統 ☞ 類似的資料
• 設定繁多...
UX FAIL!
改用試算表
• 多個畫面, 一個表單
• 使用者 ok
• 開發者 orz
試算表處理
• 工具: 匯出匯入, 單一表格對單一表單
• API: 程式讀取/寫入
• DSL: Groovy Builder/Slurper
• Tabledown: Collections 對應 Collections
☞ Hash + List
tabledown 範例 1
{ '_':['master','tasks'], 'master':{ 'id':['A^1',u'專案ID'], 'name':['A^2',u'名稱'], 'desc':['A^3',u'描述'], 'billing':['A^4',u'客戶的帳務處理'], 'cust_pm':['C^4',u'客戶PM'], 'org':['A^5',u'執行單位'], 'exec_pm':['C^5',u'執行PM'], 'sa':['E^5',u'系統分析'], 'pg':['G^5',u'開發人員'], }, 'tasks':{ '*':{ 'id':['A1',u'ID'], 'sno':['B1',u'序號'], 'type':['C1',u'種類'], 'name':['D1',u'名稱'], 'desc':['E1',u'描述'], 'est_bgn':['F1',u'預定開始'], 'est_end':['G1',u'預定結束'], 'res':['H1',u'人員'], }, },}
{ u'Sheet1': { 'master': { 'billing': u'yi', 'cust_pm': u'yi', 'desc': '', 'exec_pm': u'bing', 'id': '', 'name': u'PR001', 'org': u'jia', 'pg': u'wu,ji,geng', 'sa': u'ding'}, 'tasks': [ { 'desc': '', 'est_bgn': '', 'est_end': '', 'id': '', 'name': u'\u8a55\u4f30', 'sno': u'100', 'type': u'P'}, { 'desc': '', 'est_bgn': u'2011-3-26', 'est_end': u'2011-3-26', 'id': '', 'name': u'\u8166\u529b\u6fc0\u76ea', 'res': 'bing,ding,wu', 'sno': '', 'type': u'T'},
設定 資料
(部份)
tabledown 範例 2
from tabledown.tdxls import TDXlstdx = TDXls(conf)
data = tdx.xls2dict(filename)
tdx.dict2xls(data, filename)
設定
讀取
寫入
連接應用系統
• REST, Web Service ... OFBiz 單一開關
• 實際上 ... 功能不足!
• 連接 Web App ☞ mechanize
(Python, Perl, Ruby ... PHP 比較缺乏)
SOA FAIL!
mechanize
• 可靠• 自由軟體鑄造廠 WWW::Mechanize
• 相本收集/下載 (Ruby) 非常人性的應用
• 10yr, 5yr
• 特性• 與 twill 差別
• 與 Beautiful Soup 搭配處理
mechanize 範例import mechanizebr = mechanize.Browser()...# create projectdProject={'workEffortName': mName, 'description': mDesc, 'clientBillingPartyId': mBilling, 'organizationPartyId': mOrg, 'scopeEnumId':'WES_PRIVATE',}br.open("%s/EditProject" % url_app)applyDict2Form(br, 'EditProject', dProject)res = br.submit()id, soup = page_get_project_id_and_soup(res.get_data())
def page_get_id_and_soup(page): soup = BeautifulSoup(page, convertEntities=BeautifulSoup.HTML_ENTITIES) title = soup.find('div', {'class':'page-title'}) # ok id = None if title: m = re.search(r'\[([^\]]+)\]', title.find('span').getText()) if m: id = m.groups()[0] print "---> new id %s" % id return (id, soup)
(部份)
新增專案
整理
PythonWeb/
Services試算表
twill + scotch
mechanize+
BeatifulSoup Tabledown
日常生活
• OFBiz 時間表(Timesheet) → 轉發票 ♥
• 時間表的處理流程• 每人每週一張• 工作項目是任務(Task)
• 指定時間轉發票• 區分已記帳、未記帳• 發票進入應收管理
UX OK
時間表 範例OFBiz
試算表
時間表使用 Td
• 使用方便、隨時使用• 登入 ☞ 選擇(找)功能 ☞ 記時數
• 月底高峰?
• 留有存檔(表單化)
• 除了資料匯出/匯入, 示範配合作業流程。衍伸另一個問題 …
連接或不連接
• 網路、雲端、行動 ... 連接!
• 試算表遂行表單化• 容易實行 ex: PM, 問題追蹤
• 行動設備 >> 上世代主機
• 獨立關鍵步驟, 有益資料健康
• 表單化可批次處理 ... 連接?
實現雲端服務
• 尋找合用 SaaS, 在 PaaS 打造, 而 IaaS 偽?
• 購買 IaaS 搭配開源/客製/商業方案
• 啟動 > 人工/腳本設定 > 上線 > 資料保存
IaaS 實行策略
• 購買 IaaS 配合某套件
• 啟動 > 人工/腳本設定 > 上線 > 資料保存
• 設定: 試算表
• 流程: 試算表
• 資料: 試算表
(假說)
可能
• 使用者觀點• 建置: 更容易起步, 降低負擔
• 流程: 行動與商務配合
• 資料: 私有化與一致性
• 雲端: 搭配 Socialtext 的 Socailcalc 或 Google Spreadsheet
限制
• 分段處理適合, 連續處理不適合
• 階段: 資料輸入, 報表產生
• 連續: 線上服務(查詢), 生產管理 SFC
• mechanize 的交易問題
• 被 UI 限制 架構 FAIL?
FAILs
• DATA FAIL: 資料遷移
• UX FAIL: 多關連的資料, 多畫面的操作
• SOA FAIL: 實際功能只在 Web App 有
小結
• 動手填妥試算表, 立刻開始, 跨越煩瑣的步驟
• 安全網路中斷不中斷商務; 成為攻擊對象??
• ♥ 地球 / ♥ $ £¥
批次執行使用, 採買計算不包養
• Tabledown http://code.google.com/p/tabledown/
• OFBiz http://ofbiz.apache.org/
• xlrd, xlwt http://www.python-excel.org/
• twill http://twill.idyll.org/
• scotch http://darcs.idyll.org/~t/projects/scotch/doc/
• mechanize http://wwwsearch.sourceforge.net/mechanize/
• Beatiful Soup http://www.crummy.com/software/BeautifulSoup/
Option比較 XML, JSON, YAML, S-表示式
Option: 開放應用架構1
!"#$ %&#$'()*
+,-*!"./
Option: 開放應用架構2
!"#$
%&
'()* +,#$-./ +,#$-.0 +,#$-.1
ERP OFBiz
B2B
Portal
...
...
23
Vim
Eclipse
45 67 89 :; <=
Markdown
Docbook
DITA
Sphinx
Ant/mvn
sbt/gradle
Artifactory
Jenkins
(Hudson)
Selenium
JMeter
Hg
git
Trac
>?Java
Scala Groovy
@A Akka Grails ZK
BCrobust
serv.
cust.
serv.
Web
App
DEFGHI
JKL
MNMO
FTP
Web
...
...
PQApache
DS
R3 Activiti
ST Nuexo
UV Zenoss
WXYZ
Openfire
["\]^
Felix / Karaf
Camel
ServiceMix
_*!"`a