我有一个不寻常的环境,客户端不想支持SharePoint组件,因此我有一个O365 SharePoint网站,我只能通过工作流或JavaScript编程来做事情。
我有一个正在启动任务的工作流,除了一些原因,我偶尔会得到一个没有得到"相关项目"填充的任务。因此,查找具有与它们关联的任务的项时失败了,因为我正在查找与我正在使用的ID对应的Related Item。我仍然可以从列表项,到工作流程,到任务。有没有其他方法,比如使用WorkflowItemId,我可以将任务与这些项关联起来?
下面是一些代码,我必须通过项目Id找到任务,它要么删除任务(当列表项被删除时),要么填充taskId以显示在表单中,这是在O365 SharePoint在线中使用的。为它指定列表项的ID,并将列表标题更改为任务列表标题。如果还有什么问题请告诉我。
$.fn.get_taskIds = function (param) {
var itemTitle, taskId, curID = param.ItemId, foundAction = param.action;
get_listData(appWebUrl + "/_api/web/lists/getbytitle('ExpirationTaskList')/items?$select=RelatedItems,Id,Title").done(
function (data) {
var itemJSON;
$.each(data.d.results, function (index, item) {
itemJSON = $.parseJSON(item.RelatedItems);
itemTitle = item.Title;
taskId = item.Id;
$(itemJSON).each(function (i, val) {
$.each(val, function (k, v) {
if (k == 'ItemId') {
if (v == curID) {
switch (foundAction) {
case 'view':
if (itemTitle == 'Warranty Expiration') { $('#WTaskId').val(taskId); $('#wTaskRadio').attr('disabled', false); }
if (itemTitle == 'Lease Expiration') { $('#LTaskId').val(taskId); $('#lTaskRadio').attr('disabled', false); }
break;
case 'delete':
delete_Task(taskId);
break;
}
}
}
})
})
});
}).fail(function (arg) {
$('#jsError').html('Fail in Async Query to Retrieve task data: <br />');
var jsonResp = $.parseJSON(arg.responseText);
$('#jsError').append(jsonResp.error.message.value);
});
}
get_listData(url) {
var dfrd = $.Deferred(function (dfrd) {
$.ajax({
url: aurl,
type: "Get",
contentType: "application/json;odata=verbose",
headers: {
"Accept": "application/json;odata=verbose"
},
success: function (data) {
dfrd.resolve(data);
},
error: function (args) {
dfrd.reject(args);
}
});
});
return dfrd.promise();
}