注意: 雖然 JavaScript 對於本網站不是必需的,但您與內容的互動將受到限制。請開啟 JavaScript 以獲得完整的體驗。

Python 助力 Journyx 考勤系統

引言

Journyx 考勤系統 (tm) 是一款提供時間、費用和專案跟蹤的商業應用。1996 年,Journyx 的執行長兼創始人科特·芬奇在人員配置行業工作時,看到了利用網路準確收集和儲存員工考勤資訊的機會。

Journyx Screen Shot

Journyx 時間錄入介面 放大

考勤系統的第一個版本專注於收集準確的成本資訊,著眼於將這些資料應用於新專案成本預測的制定。此後,考勤系統已大大擴充套件,以方便跟蹤時間、里程和費用,不僅用於專案管理,還用於計費和薪資目的。可選模組可用於無紙化費用報告、高階使用者角色管理、自動化計費和薪資,以及方便斷開連線的差旅使用者訪問系統。

如今,考勤系統是平臺獨立的,足夠靈活,客戶可以根據獨特的組織需求進行重新配置,並可擴充套件到大型企業的數萬使用者。

從一開始就使用 Python

Journyx 考勤系統從一開始就使用 Python。科特·芬奇最初是根據朋友史蒂夫·馬德爾的推薦選擇 Python 的,史蒂夫·馬德爾曾創辦 Dejanews.com(現已成為 Google 的一部分)。在描述他的選擇理由時,科特說:“我研究了 Java 和 C,得出的結論是,1 行 Python 程式碼相當於 10 行 Java 程式碼或 100 行 C 程式碼。開發人員編寫程式碼的速度基本恆定,所以我選擇了 Python,它是(而且仍然是)我見過的最高階語言,同時又足夠靈活,具有普遍的實用性。”

架構

從一開始,考勤系統就被設計並實現為網路應用程式。它採用三層網路應用程式架構,分別用於網路呈現、業務邏輯和資料儲存。隨著時間的推移,應用程式的功能已大大提升,科特選擇 Python 作為實現語言的決定已被證明是明智之舉。

Python 目前用於考勤系統應用程式中的所有應用程式邏輯。這包括從初始 Apache 排程(其中 mod_python 用於加快直譯器例項化)到應用程式邏輯,再到呼叫資料庫傳輸層的所有程式碼。

考勤系統不僅使用 Python 標準庫,還使用幾個獨立開發的開源 Python 子系統,例如 PyXML 和 ActZero 的 SOAP 支援。PyXML 用於實現某些業務規則和開發 jxAPI,jxAPI 是一個基於 SOAP 的應用程式邏輯 API。目前正在擴充套件此 API,以定義 jxAPI 函式的 Web 服務描述語言模板。該應用程式目前使用 Python 2.1.1 進行構建和釋出。

考勤系統還融合了多種非 Python 技術。Unix 和 Linux 發行版與 Apache HTTP 伺服器和 PostgreSQL 資料庫打包在一起。Windows 版考勤系統發行版附帶可選的 Microsoft Desktop Engine (MSDE) 資料庫,並與 Microsoft IIS 整合。考勤系統可以配置為使用各種第三方資料庫。

結果

考勤系統專案取得了巨大的成功,創造了數百萬美元的收入,並使 Journyx 每年都在增長,即使在當前的經濟環境下也是如此。

Journyx 和我們的許多客戶一樣,在內部將考勤系統作為公司基礎設施的關鍵組成部分。它被廣泛用於專案跟蹤、計費和薪資。

迄今為止,Journyx 考勤系統產品已投入約 11 個人年,產生了超過十五萬行 Python 程式碼。

在開發 Journyx 時,Python 的兩大優勢是編寫和部署功能的速度,以及其真正的“一次編寫,隨處執行”的跨平臺能力。

Journyx 的開發人員發現,Python 的簡潔性和清晰性與其面向物件的特性相結合,使其成為一種非常強大和高效的語言。Python 豐富的標準庫,包括用於字串操作和 HTML 生成等模組,進一步支援程式設計師按時完成緊張的開發計劃。

由於語言的這些特性,Python 使 Journyx 能夠比競爭對手更快地新增功能。我們已經能夠實現 SOAP/XML 和 WSDL 支援,並擴充套件了應用程式功能的其他方面,這遠遠領先於競爭產品。這種維護和改進效率的關鍵推動因素之一是 Python 語言固有的清晰度和可讀性。其他重要因素包括活躍且響應迅速的 Python 開發社群,以及隨著語言設計的發展,我們所看到的其高度向後相容性和穩定性。

Python 的跨平臺標準庫和平臺無關的位元組碼檔案格式允許將 Python 模組部署到任何平臺,無論該模組是在哪個平臺上準備的。這不僅有助於避免每個平臺的開發開銷,還有助於為考勤系統軟體產品提供客戶支援。例如,在 Redhat 6.2 系統上構建的補丁模組可以傳送給客戶,以便在 Windows XP 或任何其他作業系統上安裝,而無需進行任何型別的交叉編譯或翻譯。

結論

Python 使 Journyx 能夠在比使用其他語言更短的時間內為多個平臺生產出靈活、功能豐富的產品。Python 對我們來說是一個重要的競爭優勢,即使我們的 Python 程式碼庫在複雜性和成熟度上不斷增長,Python 的固有優勢也使我們能夠以具有競爭力的低成本提供高質量的關鍵任務應用程式。

關於作者

Journyx 創始人兼執行長科特·芬奇在諮詢行業成功職業生涯後於 1996 年創立了該公司,他曾參與和管理與財富 100 強公司(如 Tivoli、IBM 和 Prudential Securities)的業務。

Journyx 工程副總裁約翰·馬達洛佐於 1999 年加入 Journyx,此前他在 IBM 的 AIX 工程組從事 Unix 核心開發工作長達十二年。