注意: 虽然 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 内核开发工作长达十二年。