mdriven - 当服务器端或异步时,如何在 ocl 中执行“while 循环”?
问题描述
我使用休息 api 从网上商店获取订单,结果是一次最多 100 个订单,并且有一个页面参数可用于接下来的 100 个订单。
我已经在视图模型中使用周期性操作(disables = not self.oclIsIn(#InProgress))解决了这个问题,如下所示:
vCount := self.Orders->size;
vPage := vPage + 1;
vResponse := selfVM.RestGet(
String.Format('{0}/wp-json/wc/v3/orders?per_page={1}&page={2}',self.Channel.Url, self.Channel.Source.MaxCount, vPage),
self.Channel.UserName,
self.Channel.Password,'');
vResponse := String.Format('{0}{1}{2}','{"orders":', vResponse,'}');
--self.JSonData := self.JSonData + vResponse;
vOutput := vOutput + self.MergeTaJson( ImportBatch.Viewmodels.WooOrderJSon, vResponse );
if ((self.Orders->size - vCount) = 0) then
if vOutput->IsNullOrWhiteSpace then
self.Fail
else
--self.ParsingLog := vOutput;
self.Success
endif;
true
else
vCount := self.Orders->size;
false
endif
它会一直持续下去,直到 api 的结果为 0,然后状态设置为 Done 并停止。
现在我想做同样的服务器端,但是如果没有像这样的定期操作,我该如何解决呢?我想在 AsyncTicket“动作”中做同样的事情。
解决方案
您是否可以将整个服务器端作业视为一个定期操作?
SS 作业的每次执行都应该适合“一次性”并保存在一个事务中
推荐阅读
- python - Tkinter 按钮不出现
- python - 如何在 Seaborn 热图中添加垂直线
- excel - 如何在 Apache POI 中模拟 Excel 的“填写”?
- c# - Automapper:如何反转空替换?
- javascript - Bitboard Javascript - 如何识别确切的棋子/位置正在攻击国王
- python - AttributeError:对象没有属性 Python 错误
- r - R中两个以上二元(分类)变量的相关性分析
- python - setuptools_scm:如何在 gitflow 中合并时将“-alpha”附加到包版本?
- web-applications - 是否可以从软件文档构建 Web 应用程序,更具体地说是基于 Web 的编辑器
- javascript - 在另一个脚本中创建一个请求对象而不导入