工作流程

在 Jam.py 框架中,同时运行着两个任务:应用程序构建器和项目。 每个任务都代表一个对象树——有应用程序构建器任务树和项目任务树。因此,在了解 Jam.py 工作流程之前,您需要先熟悉 任务树 的概念。

Jam.py 的工作流程如下:

  • 当运行 server.py 时,它会创建 WSGI 应用程序,而 WSGI 应用程序又会创建应用程序构建器任务树。

  • 当服务器收到来自项目客户端的第一个请求时,项目任务树由应用程序构建器在服务器端创建。为此,应用程序构建器需要使用存储在项目根文件夹中的 admin.sqlite 数据库中的元数据。创建任务树后,服务器应用程序会触发 on_created 事件,该事件可用于初始化服务器任务树。

  • 当应用程序(应用程序构建器或项目)首次在客户端浏览器中运行时(加载 builder.htmlindex.html 后),会构建一个空的任务对象,该对象向服务器发送请求以对自身初始化。

  • 如果项目的 安全模式 参数已设置,框架在执行任何请求之前会检查用户是否已登录。如果未登录,则客户端应用程序会创建登录表单,用户输入其用户名和密码后,客户端任务会向服务器发送登录请求。

  • 登录成功后,或者如果项目的 安全模式 参数未设置,服务器会向客户端发送有关所请求任务的信息。客户端的任务根据此信息构建其树,为其对象分配事件处理程序,并执行 on_page_loaded 事件处理程序。

  • 在此事件处理程序中,开发人员应将 JQuery 事件处理程序函数附加到 index.html 文件中定义的 DOM 的 HTML 元素。在这些函数中,开发人员可以使用 任务树 项目的方法来执行某些特定任务。这些方法在执行时,会触发不同的事件,在这些事件中可以调用其他方法,依此类推。请参阅 客户端编程

  • 任务树中具有对应数据库表的项目,有可以在服务器数据库中读取和写入数据的方法。请参阅 数据编程

  • 报告项目基于 LibreOffice 模板在服务器上生成报告。请参阅 报告编程

  • 所有其方法生成对服务器的请求的项目,都以以下方式执行:它们调用任务的方法,向服务器发送任务的 ID 、项目的 ID 、 请求类型及其参数。服务器收到请求后,根据传递的 ID,找到服务器上的任务(可以是项目任务或应用程序构建器任务)和项目,使用传递的参数执行相应方法,并将执行结果返回给客户端。这些服务器方法可能会触发它们自己的事件以覆盖默认的行为。请参阅 服务器端编程

视频

表单事件(Form events)客户端和服务端的交互(Client-server interactions) 视频教程说明了 Jam.py 项目的工作流程。