Python 为 Journyx 时间表提供支持
简介
Journyx 时间表 (tm) 是一个商业应用程序,提供时间、费用和项目跟踪。 1996 年,Journyx 首席执行官兼创始人 Curt Finch 在人力资源行业工作时,看到了使用 Web 准确收集和存储员工时间表信息的机会。

Journyx 时间录入屏幕 放大
时间表的第一个版本侧重于收集准确的成本信息,着眼于将这些数据应用于制定新的项目成本预测。此后,时间表已大大扩展,不仅便于项目管理,还便于计费和工资核算,可以跟踪时间、里程和费用。可选模块可用于无纸化费用报告、高级用户角色管理、自动计费和工资单,并方便断开连接的旅行用户访问系统。
如今,时间表是独立于平台的,足够灵活,可以由客户重新配置以适应独特的组织需求,并且可以为大型企业扩展到数万用户。
从一开始就使用 Python
Journyx 时间表从一开始就一直在使用 Python。 Curt Finch 最初是根据一位朋友 Steve Madere(他创立了 Dejanews.com,现在是 Google 的一部分)的建议选择了 Python。在描述他选择的理由时,Curt 说:“我研究了 Java 和 C,得出的结论是,1 行 Python 相当于 10 行 Java 或 100 行 C。开发人员编写代码的速度基本上是恒定的,所以我选择了 Python,它是(现在仍然是)我见过的最高级语言,而且足够灵活,可以普遍使用。”
架构
从一开始,时间表就被设计和实现为一个 Web 应用程序。它使用三层 Web 应用程序架构,分别为 Web 表示层、业务逻辑层和数据存储层。随着时间的推移,应用程序的功能已经大大提高,Curt 决定使用 Python 作为实现语言的决定已被证明是一个不错的选择。
Python 目前用于时间表应用程序中的所有应用程序逻辑。这包括从最初的 Apache 调度(使用 mod_python 来加快解释器实例化)到应用程序逻辑,再到数据库传输层的调用的所有代码。
时间表不仅使用 Python 标准库,还使用几个独立开发的开源 Python 子系统,例如 PyXML 和 ActZero 的 SOAP 支持。 PyXML 用于实现某些业务规则并开发 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 与我们的许多客户一样,在内部将时间表用作公司基础设施的关键组成部分。它广泛用于项目跟踪、计费和工资核算。
到目前为止,大约有 11 人年的时间投入到 Journyx 时间表产品中,产生了超过 15 万行的 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 的自然优势也使我们能够以具有竞争力的低成本提供高质量的关键任务应用程序。
关于作者
Curt Finch 是 Journyx 的创始人兼首席执行官,他在咨询行业成功地参与并管理了与诸如 Tivoli、IBM 和 Prudential Securities 等财富 100 强公司的合作后,于 1996 年创立了该公司。
John Maddalozzo 是 Journyx 工程副总裁,在 IBM AIX 工程组从事 Unix 内核开发 12 年后,于 1999 年加入 Journyx。