首页 > 解决方案 > 在同一时间发生的两个事件上出错

问题描述

我有 activiti Bpmn 文件,因为有任务转换。在过渡期间,我需要为该新任务创建截止日期。我的问题是截止日期和新任务同时发生。因为那我得到了错误。

                    onClose: function (date) {
                        if (valid) {
                            date = Date.parse(date);
                            if (oldDate !== date) {
                                var tasks = getSet(context, 'task') || getSet(context, 'tasks'),
                                trans = Ember.get(context, 'transition') || Ember.get(context, 'propertyMap.transition'),
                                requestData = [];
                            if (!tasks.length) {
                                resolve();
                                return;
                            }
                            if (!trans) {
                                trans = 'Done';
                            }
                                tasks.forEach(function (task) {
                                 requestData.push({ name: 'id', value: (Ember.get(task, 'id') || Ember.get(task, 'currentTask.id') )});
                                requestData.push({ name: 'transition', value: trans || '' });
                            });
                            if (context.get('serviceParams')) {
                                Object.asAjaxData(context.get('serviceParams')).forEach(function (param) {
                                   requestData.push(param);
                                });
                            }

                         return (Core.services({
                            type: 'post',
                            service: 'workflow/task/transition',
                            data: requestData,
                            json: true
                        })
                        .done(function (res) {
                                Core.Action('Core:updateTask', context, { dtDue: date });
                            Core.model.ingestResources(res);
                            var inspected = Core.controller.detailsObject,
                                wf = res.workflows || {};
                            if (inspected) {
                                Object.keys(wf).forEach(function (w) {
                                    var hist = wf[w].historicalTaskIds;
                                    if (hist.contains(inspected.currentTaskId)) {
                                        inspected.set('currentTaskId', wf[w].openTaskIds[0]);
                                    }
                                });
                            }

                            resolve();
                        })
                        .fail(function (xhr, status, error) {
                            Core.Error.show(error);
                        })
                        .always(function () {
                            tasks.forEach(function (task) {
                                if (Ember.get(task, 'isClip')) {
                                    Core.model.clip.clear();
                                }
                            });
                            var wfController = Core.Tab.Workflow.getController();
                            var sel = wfController.get('selection');
                            wfController.reloadResultSet();
                            var rs = wfController.get('resultSet');
                            rs && rs.done(function () {
                                var s = Ember.Set.create();
                                rs.get('content').forEach(function (item) {
                                    if (!item) { return; }
                                    s.addObject(item);
                                });
                                sel.forEach(function (item) {
                                   if (!s.contains(item)) {
                                       sel.remove(item);
                                   }
                                });
                            });
                            sel.clear();
                            resolve(tasks);
                        })
                    );




                            }
                        }
                    }

用于Core.Action('Core:updateTask', context, { dtDue: date });更新到期日期。如果我在顶部If声明中使用到期日期已更新,但没有发生过渡。如果我在done函数上使用,则会发生转换并移动到新的任务 ID。因此,它搜索任务 ID 并显示错误。请为此提供建议。我需要创建转换并同时更新日期。

标签: javascriptjquerydelay

解决方案


推荐阅读