概述
本教程将为您展示Deluge脚本,如何添加到您的应用中以便增强应用的逻辑控制,丰富应用的功能。我们将创建一个简单的应用:Feedback application,并在其中添加逻辑控制,以使得它成为功能强大的程序错误跟踪系统。可以把它用于创建并管理软件中的错误。
关于错误跟踪系统(Bug Tracker)
首先使用百会Creator的嵌入功能,将表单Submit Feedback 嵌入到公司的网站,用户在使用软件时如果发现/遇到问题,可通过网站报告问题。当用户提交软件错误时,会自动向管理员用户发送邮件,通知他关于软件错误的性质,是谁提交了该软件错误。管理员用户随后会将该软件错误指派对应的团队成员以便处理该问题。软件分模块化设计,当选择某一模块时,只要属于该模块的成员才会被列出。这样使得问题的指派更加容易。当成员处理完该问题时,他可以把该问题的状态设置为“关闭”,系统会自动向问题提交人发送通知邮件。该系统还可以生成报表(视图),统计已指派的错误及其状态,查看未指派的问题列表,已指派但尚未关闭的问题列表。
您可以访问该错误跟踪系统(Bug Tracker),其URL为: http://creator.baihui.com/zchelp/feedback-application/
创建Feedback Application与Submit Feedback表单
创建一个新的应用,步骤如下:
- 登录到百会Creator,点击新建应用
- 指定应用名为Feedback Application
- 指定表单名为Submit Feedback
- 点击现在创建 生成一个空白表单。
- 在空白表单中添加如下字段:
Your emailid - 添加电子邮件类型的字段,用于问题提交人输入其邮箱。通过选择选项 -> 必填字段将它置为必填项。
Category - 添加单选按钮字段,用于定义所提交问题的分类,设置其值为Feature request, Bug report, Usability和General.
Your comments - 添加多行文本字段,用于提交人输入问题的描述。
Submitted On - 添加日期字段,用于记录问题提交的日期。通过选择选项 -> 隐藏该字段将字段隐藏,提交人不用输入。
- 点击“访问该应用”按钮,进入访问模式。如下图所示。
![]()
至此已经准备号Submit Feedback表单,以下将使用Deluge脚本,在其中添加逻辑控制。
设置日期字段为当前日期
如前所述,我们已经在Submit Feedback表单中创建了名称为 Submitted On的日期字段。当加载表单时,我们希望它的值自动设置为当前日期,不需要用户编辑修改它。为此,需要在添加记录时(on add) -> 加载表单时(on load)的脚本中使用Deluge脚本。该脚本在用户提交新的问题时自动执行。
添加脚本的步骤:
- 点击编辑该应用按钮,进入编辑模式。
- 从Submit feedback表单的顶部点击更多动作 -> 加载时脚本-> 加载时动作,显示脚本编辑器。
- 拖放Set Variable 到编辑区域。
![]()
- 将鼠标移到添加的脚本语句上,点击显示的编辑按钮,弹出设置值的对话框。
- 从可用的变量列表中选择字段变量:Submitted_On,并将它设置为当前日期,可选择Zoho Variables ,然后选择Date variables -> zoho.currentdate ,如下图所示。
- 点击完成按钮。
![]()
- 要禁用Submitted_On字段,, 拖放enable/disable 到编辑区域。
- 将鼠标移到添加的脚本语句上,点击显示的编辑按钮,选择Submitted_On并禁用它。然后点击完成按钮。
- 点击保存脚本 按钮,更新该表单的脚本定义。
![]()
上述定义的脚本将添加在表单定义的 on add -> on load 的块中,如下图所示。要查看带动作的表单定义,可选择表单定义 -> 带动作
actions { on add { on load { input.Submitted_On = zoho.currentdate; disable Submitted_On; }
} } |
设置添加记录时的邮件通知
一旦成功提交反馈信息,应用所有者希望收到一个邮件通知告知谁提交了反馈信息。这种在表单提交数据时自动发送邮件的功能可以通过配置Deluge脚本来实现。步骤如下:
- 从表单页签选择Submit Feedback表单,点击更多动作 -> 加载时脚本-> 成功时动作,显示脚本编辑器。
- 拖放Send Mail Deluge描述到编辑区域。
- 将鼠标移到添加的脚本语句上,点击显示的编辑按钮,显示发送邮件的配置对话框。
- 缺省情况下,收件人地址为zoho.adminuserid,它代表应用所有者的登录ID。
- 指定主题,这里, input.<fieldname> 将用对应的字段替代。您可以直接输入主题文字,也可以点击"书写表达式" 图标选择需要的输入字段。
"Issue Reported On " + input.Submitted_On+ "By " + input.Your_emailid
- 指定消息内容为 input.Your_comments,这样在发送的邮件中将包含反馈信息。
![]()
- 点击完成按钮,使更新生效。如下图:
![]()
- 点击保存脚本更新脚本的定义。上述定义的脚本将添加到on add -> on success 中。要查看生成的脚本,可选择显示表单/字段动作链接。
actions { on add { on load { input.Submitted_On = zoho.currentdate; disable Submitted_On; } Submit ( type = submit displayname = "Submit" on success { sendmail ( To : zoho.adminuserid, "yourname@domain.com" From : zoho.adminuserid Subject : "Issue reported on " + input.Submitted_On + "By " + input.Your_emailid Message : input.Your_Comments ) } ) } }
|
将表单嵌入到外部网站
现在Submit Feedback表单已经准备就绪,需要利用百会Creator的嵌入表单功能,将它嵌入到您的网站中。您只需要简单地复制并粘贴生成的代码到您的网站中即可。
- 点击访问该应用按钮进入访问模式。
- 在Submit Feedback 表单的左边的树状菜单中,点击更多菜单 -> 嵌入到网站。
- 复制生成的<iframe> 代码,并将它粘贴到您的网站或博客中。
![Note Icon]() | 注意: 缺省情况下,嵌入的表单会提示用户登录,要禁用登录提示,可点击嵌入对话框中的对应选项。然后再将生成的代码复制并粘贴到您的网站或博客中。 |
将Feedback表单转换为错误跟踪系统(Bug Tracker)
上面创建的Feedback表单只能用于用户提交问题。接下来我们将增强该表单的功能,使其具有指派的功能,可根据所提交的问题指派给不同团队的成员。同时可产生报表用于查看问题的状态。要实现这些功能,需要以下任务:
a. 支持团队和模块的创建
要将问题指派给负责不同模块的团队成员,我们需要知道工程中的模块以及这个团队的成员名称。因此,我们将创建模块(Modules)和团队成员(Team Member)表单。具体解释如下:
1. 创建Modules 表单,其中包含一个单行文本字段,名称为模块名(Module Name)。创建之后,在其中输入工程中包含的模块,例如:Testing, GUI, Scripting, Usability,等等,输入之后的模块视图如下图所示:
![]()
2. 创建Team Member 表单,其中包括下述字段,用于输入每个模块的成员名称:
- Name - 单行文本字段,用于输入成员名。
- Module - 查询字段(Lookup )用于从"Module" 表单导入模块名,画面截图如下:
![]()
![]()
b. 将问题指派给支持团队的成员
在Submit Feedback 表单中添加以下字段,以便应用所有者指派问题给团队成员:
a. Module Name - Lookup字段,从模块表单中导入数据,用于指派模块。
![]()
b. Assign To - Lookup 字段,从 Team Member表单 导入数据,用于指派具体的成员。
![]()
c. Status - List 字段,用于描述问题的状态,其值为 "Open"和"Closed"。缺省状态为"Open",如果问题已经解决,状态将置为"Closed"。
![]()
d. 根据所选的模块,填充"Assign To"字段
指派问题的时候,当选择某个模块时,只要属于该模块的成员才会显示到Assign To 字段中。如下图所示。
![]()
上面的功能可通过对Module Name字段添加用户输入时(on user input)的动作脚本来实现。 该脚本将在用户选择模块时执行。具体代码如下所示。
使用脚本构建器添加针对 Module Name 字段的脚本
- 选择Submit feedback 表单中的Module字段,选择on User Input 动作。
- 拖放If语句到脚本编辑区域,并点击该语句的编辑按钮,以便对其进行编辑。
- 在If条件中,使用count 语句,对Team_Members 表单中的模块名等于Module_Name的成员进行合计。
![Note Icon]() | 注意: Count 函数在脚本编辑器中并不支持,因此,请直接在文本输入区内输入(count(Team_Member[Module == input.Module]) == 0) 作为条件。 |
- 如果count为0,则使用clear picklist Deluge语句,清除Assign_To 字段。count为0,意味着团队成员中没有对应的数据。如果count大于0,则执行else 语句。
![]()
- 拖放 else 语句到编辑区域,在其中使用For each语句:
- for each 语句中的r是一个集合变量,用于保存符合条件(模块一样)的团队成员中的所有成员。因为 r 是个矩阵,必须使用递归枚举来获取每个成员的信息。递归枚举就用for each Deluge语句。
- 变量r中的每个成员的名称,使用Add to picklist语句将他们添加到 Assign To 中。
![]()
- 点击保存脚本按钮,更新脚本定义。上述定义的脚本将添加到Module字段的on user input 下。
Module ( displayname = "Module Name" type = picklist values = Modules.Module_Name on user input { if (count(Team_Member[Module == input.Module]) == 0) { clear Assign_To; } else { for each r in Team_Member [Module == input.Module] { Assign_To:ui.add(r.Name); } } } ) |
e. 当问题状态为"Closed"时发送邮件
当问题处理完毕,其状态被团队成员置为"Closed"。邮件将发送到提交该问题的用户,以便告知其问题的状态。该功能通过在"Status"字段添加更新时("on update")的脚本来实现。
为Status字段添加更新时的动作脚本:
- 编辑Submit feedback 表单中的Status 字段,选择更新时动作。 打开脚本编辑器。
- 拖放一个If condition 到脚本编辑区域,使用编辑按钮选择需要的字段和值。 在其中添加发送邮件函数。如下图所示。
![]()
- 点击保存脚本按钮,更新脚本定义。上面添加的脚本将显示在Status字段的on update 下面。
Status ( type = picklist values = {"Open", "Closed"} defaultvalue = "Open" on update { if (input.Status == "Closed") { sendmail ( To : Your_emailid From : zoho.adminuserid Subject : "Status of issue with subject " + input.Your_Comments Message : "The issue is " + input.Status ) } } ) |
创建新的视图(报表)
创建未指派的问题视图(条件为:Assigned to=null)
创建已指派的问题视图 (条件为:Assigned to !=null)
创建未指派的问题的视图
创建一个视图用于查看没有指派给任何成员的问题列表:
- 选择视图页签,并点击新建视图。 在显示的新建视图对话框中选择列表视图。
- 指定视图名为: Unassigned Issues。
- 选择表单Submit Feedback, 根据它创建视图。
- 选择该新视图的访问权限。
- 点击完成按钮,创建该视图。
- 要指定过滤条件,选择设置标准 -> 限制的记录 ,并指定如下图所示的标准。
- 点击完成按钮,为定义的视图添加过滤标准。
![]()
- 要查看上述视图的脚本定义,选择脚本页签,然后从选择列表中选择对应的视图。
list "Unassigned Issues" { show all rows from Submit_Feedback [(Assign_To is null)] ( Your_emailid as "Your emailid" Category Your_Comments as "Your Comments" Submitted_On as "Submitted On" Module as "Module Name" Assign_To as "Assign To" Status ) filters ( Module Assign_To Category Status Submitted_On ) } |
- 在访问模式,Unassigned Issues视图将显示没有指派的问题列表。如下图所示:
![]()
创建已指派的问题的视图,其状态为"Open",并根据模块分组显示
要创建一个可以显示已经指派,但是其状态仍然为Open的视图:
- 选择视图页签,并点击新建视图。 在显示的新建视图对话框中选择列表视图。
- 指定视图名为:Assigned Issues
- 选择表单Submit Feedback, 根据它创建视图。
- 选择该新视图的访问权限。
- 点击完成按钮,创建该视图。
- 要指定过滤条件,选择设置标准 -> 限制的记录 ,并指定如下图所示的标准。
- 选择全部匹配 以便列出同时符合两个条件的记录。
- 点击完成按钮,将过滤标准添加到定义的视图。
![]()
- 要查看按每个模块分组的记录,可选择设置分组选项,并在其中添加Module Name。
- 要查看该视图的脚本。可选择脚本页签,然后选择对应的视图名。
list "Assigned Issues" { show all rows from Submit_Feedback [((Assign_To is not null) && Status == "Open")] ( Your_emailid as "Your emailid" Category Your_Comments as "Your Comments" Submitted_On as "Submitted On" Module as "Module Name" Assign_To as "Assign To" Status ) filters ( Module Assign_To Category Status Submitted_On ) group by ( Module ascending ) }
|
- 在访问模式,Assigned Issues 视图显示已经指派的,但状态为"Open"问题列表。如下图所示。
![]()