锁定CustomRecord序列表

时间:2018-09-29 18:11:36

标签: netsuite suitescript suitescript2.0

我们在1.0中有一个实现脚本,该脚本基于SKU和其他参数从自定义记录中提取序列号。有一个基于SKU创建的搜索,并使用了第一个可用记录。搜索的条件之一是您不是与密钥相关联的最终用户。

我们正在努力将脚本转换为2.0。我无法确定的是,如果该脚本(例如,将上述功能放入MR脚本的Map函数中)将在多个队列/实例上运行,这是否意味着有两个实例可能会击中自定义记录的相同条目?有什么解决方法可以确保X函数的Map实例不会使用相同的SN / Key终止我们?在2.0中可能发生这种情况的方式是,两个Map实例同时在Custom记录上发出搜索请求,并获得相同的结果,因为第一个Map尚未完成处理并将其标记为已使用(将最终用户信息更新为键)。

是否有更好的方法可以在2.0中完成此操作,还是我需要创建另一个自定义记录,脚本必须读取该自定义记录才能提取密钥。如果表已锁定,我还可以等待吗?

Thx

1 个答案:

答案 0 :(得分:0)

这里最好的办法是将您的分配过程分为两个部分或对其进行重组,以便最终获得一个排定的脚本,并为其提供一个明确的队列。这样,您对序列号的访问将被序列化,并且您无需进行任何额外的工作。如果需要有关使用SS2处理大批量的提示,请参见https://github.com/BKnights/KotN-Netsuite-2,以获取大批量处理可能需要的实用程序脚本。

如果这不可能,那么我要做的是: 创建另一个名为“锁定表”的自定义记录。它必须至少具有一个id和一个文本字段。创建一条记录并记下其内部ID。如果在“名称”列中保留该名称,则为其命名以反映其用途。

要提取序列号时,请执行以下操作: 使用查找字段功能从锁表中读取。如果不为0,请等待*。 如果为0,则生成一个从0到MAX_SAFE_INTEGER的随机整数。

尝试使用提交字段功能将其写入“锁定表”。然后马上读回来。如果它包含您的随机数,那么您将拥有锁。如果没有,请稍候*。

如果有锁,请继续分配序列号。通过写回0释放锁。

  • 等待: 在NS中这很难。由于我不希望s / n分配花费很多时间,因此有时会启动等待,因为只是循环浏览我希望是CPU密集型任务,直到一段时间后才需要治理成本。