选择正确的计划

  • 在您开始在AppCreator中创建应用程序之前,了解AppCreator平台可以提供的内容以及每个计划的详细信息很重要。
  • 作为经验法则,理想的范围至少比要求的多5-10%。这将确保您的应用程序可以在用户活动激增的情况下进行扩展。
  • 确定谁将使用该应用程序,并根据他们的要求进行设计。例如,您可以选择一个客户门户计划来支持您的客户、供应商和合作伙伴的需求。

安全最佳实践

用户和权限
  • 仅应将所需用户添加到应用程序中,并仅共享必要的模块。
  • 不再需要访问应用程序的用户或开发人员应该被删除。
  • 当多个用户正在构建应用程序时,请添加所需用户作为开发人员,而不是共享管理员凭据。
  • 访问个人身份信息(PII)和电子受保护的健康信息(ePHI)数据可以单独授予必要的权限集。
  • 必须限制导出、删除、查看全部和批量编辑权限。
  • 可以删除用户和客户不需要的权限集。

表格和报表

  • 收集或包含PII和ePHI数据的字段应加密。
  • 敏感信息可以在适用的情况下在报表中被屏蔽。
  • 过滤器和标准可以添加到报表中,以确保只向用户显示所需信息。
  • 任何存储的敏感信息都可以在不再需要时删除。
  • 确认消息可以与自定义操作按钮相关联。
  • 不建议收集或存储社会保障号码或密码等敏感信息。如果收集,目的应在表格中明确说明。
  • 最好避免在应用程序中存储API凭据。
  • 帮助文本或工具提示可以与字段相关联,以详细说明收集数据的原因。
  • 注释字段可以添加到表单中,以向用户指定数据收集的目的。
  • 当不再需要公众访问时,建议停用已发布的表格。
  • 决策框可用于获得数据收集的同意。
  • 在调用API时,应尽可能使用基于OAuth的身份验证。
  • 收集IP地址时,建议通知用户并征得他们的同意。IP地址也可以加密。
  • 报表中的操作,如添加、删除和复制,必须进行审查,如果不需要,可以删除。
  • 也可以使用审计跟踪功能来跟踪对记录所做的更改历史。

工作流程和脚本

  • 应尽可能对字段进行输入验证。
  • 应用程序中使用的任何超链接都应经过验证。
  • 应审查短信和电子邮件任务中的内容。
  • 业务逻辑,如函数和计划工作流程,可以在工作流构建器本身内执行,然后再纳入主流程。

页面

  • 应该审查HTML和JavaScript代码。
  • 尽可能使用评论。
  • 对于基于参数工作的页面,请务必包含空值检查,以防止页面显示错误或无关数据。
  • 避免重复CSS样式。

应用最佳实践

一般做法
  • 定义应用程序结构,识别数据模型-字段、关系、字段加密,并在开始构建应用程序之前考虑当前流程的痛点。
  • 记录应用程序结构。这将使以后更容易进行更改。
  • 为所有组件分配有意义的名称——表单、字段、报表、工作流程、页面、变量、函数和权限集。
  • 使用查找字段在表单之间创建关系,以避免跨表单的冗余数据。
  • 将强制值和无重复值等属性设置为字段,以保持数据完整性。
  • 从应用程序中删除不需要的组件。
  • 指定记录的删除行为——当特定记录被删除时,任何相关记录会发生什么。例如,如果员工被删除,分配给他们的任务会发生什么?
  • 在沙盒环境中对应用程序进行更改,并在发布前进行测试。
  • 使用计划的应用程序备份功能来创建定期备份。

洪水最佳实践

Deluge是AppCreator的内置脚本语言。它易于学习,并带有集成的开发环境,使您能够在编码时拖放Deluge代码片段。

一般做法
  • 像“信息”这样的调试语句可以在适用的地方用于消除错误。
  • 避免脚本的重嵌套并优化循环。
  • 有效地使用汇总记录任务。仅在需要时获取所有记录。
  • 尽可能使用内置功能——这些功能针对性能进行了优化。
  • Try catch语句可用于处理代码中的异常。
  • 变量可以被赋予有意义的名称。
  • 使用zoho.appUri和zoho.appName等系统变量,这样应用程序链接名称或所有者名称更改就不会影响您的功能。
  • 这对于HTML页面中用于嵌入组件的Deluge脚本特别有用。
  • 函数可用于从常用或重复的代码中创建可重复使用的代码块。
  • 可以删除不需要的和注释的代码,以保持代码库的清洁,以便于维护。
  • 脚本可以缩进,并添加注释,以简要概述逻辑和目的。
  • 保持代码模块化。
  • 语法辅助可用于帮助配置任务。
  • 版本管理也可用于跟踪各种版本和代码更改。
  • 当使用invokeURL Deluge任务进行API调用时,响应不会存储在AppCreator保留的数据中或处理,这使得Deluge不受任何漏洞的侵害。
  • Deluge脚本中的任何错误只会影响应用程序逻辑,不会造成任何漏洞。
  • 当用户尝试保存脚本时,将显示Deluge中出现的语法错误。在纠正错误之前,代码将不会被保存或执行。
  • 必须追踪和修复因编程实践和错误不佳而产生的逻辑错误。
  • 编写的任何Deluge代码都必须优化,以确保不会达到Deluge语句限制。这些设置是为了防止资源意外滥用。
  • 为了提高性能,请使用预定义的洪水函数:等于忽略案例,等于比较而不是“==”。

要避免的脚本

以下是一些可以避免的脚本。为他们提供了替代方案。

示例1:

您可以直接在循环中使用获取集合,而不是从获取语句中检查计数。

fetchInvoices = Invoice[Client == input.Client && Location.equalsIgnoreCase("Chennai") && Bill_Payment_Status == "未付款"];
if(fetchInvoices.count() > 0)
{
对于fetchInvoices中的每张发票
{

}
}
//------------------------------------------
//相反,请使用以下脚本
//------------------------------------------
对于发票中的每张发票[客户==输入.客户&&位置.等值IgnoreCase("Chennai") && Bill_Payment_Status == "未支付"]{

}

示例2:

您可以使用内置函数来避免循环。

付款列表=列表();
PaymentAgainstInvoice[ID == rushPayment]中的每张发票
{
付款列表.添加(发票.ID);
}
//------------------------------------------
//相反,请使用以下脚本
//------------------------------------------
付款清单=对发票付款[ID == rushPayment]。ID.获取所有();

示例3:

这是另一种使用内置函数来避免循环的方法。

fethcInvoice = 发票[ID == input.invoiceId];
对于fethcfrominv.Line_Items中的每个lineitmcount
{
连接线 = 连接线 + 1;
}
//----------------------------------------------------
//相反,使用以下脚本
//------------------------------------------
计数=fethc发票=发票[ID ==输入.发票ID].计数(ID);

示例4:

此代码示例向您展示如何避免不必要的更新操作。

billId = 插入到账单中
[
添加_用户=zoho.loginuser
总_价格=总_价格
账单_状态=账单_状态
];
获取账单=账单[ID == billId];
如果(患者_类型 == “免费”)
{
获取账单.总计_价格=0;
获取Bill.Bill_Status="Closed";
}

//----------------------------------------------------
//我们可以在将数据插入账单表格之前执行检查,而不是使用上述代码。这将避免不必要的更新操作
//----------------------------------------------------

如果(患者_类型 == “免费”)
{
总计_价格=0;
账单_状态="已关闭";
}
billId = 插入到账单中
[
添加_用户=zoho.loginuser
总_价格=总_价格
账单_状态=账单_状态
];
资源

移动应用程序最佳实践

  • 触发的操作和事件,如点击记录、向左滑动和向右滑动,可以确定和更改。
  • 快速视图和详细视图中的列可以根据应用程序上下文进行设置。
  • 自定义徽标可以上传到应用程序。
  • 应用程序可以为用户和客户单独离线更名和发布。

可用性和用户体验最佳实践

表格
  • 多列布局可用于将表单分解成更小的部分。
  • 部分可用于根据上下文对字段进行逻辑分组。
  • 字段大小和字段标签的位置可以操作。
  • 工具提示和帮助文本可用于帮助用户理解字段所需的输入。
  • 可以添加成功消息来确认提交。
  • 电子邮件和短信通知可以配置为在相关操作上发送给用户。
  • 可以显示适当的消息和告警来提供视觉帮助。
报道
  • 具有适当内容的上下文消息可用于个性化报表中显示的消息。
  • 仅应将最重要和相关的列添加到报表的快速视图中。
  • 其他信息可以添加到详细信息视图中,并使用块进行逻辑分组。
  • 在滚动浏览报表时,冻结报表的列以保持记录的上下文。
  • 条件格式可用于根据特定标准突出显示特定记录。
  • 频繁操作可以使用自定义操作按钮进行简化,并作为标题操作放置。
  • 自定义操作按钮可以配置为在执行前有确认消息。
  • 自定义布局和记录模板可用于根据上下文进一步自定义记录的外观。
页面
  • 仪表板旨在全面概述应用程序中的流程。不建议用多个组件超载它,因为这可能会增加用户的认知负荷。
  • 可以根据上下文创建多个页面。
应用程序导航
  • 主题可用于更改应用程序导航:顶部、左侧和网格导航。

如果您有任何其他问题,请随时与我们联系。

请求演示体验