Sharepoint 2013 工作流:如何在从代码启动时发送一个人作为启动参数

问题描述

我正在通过 javascript 启动 Sharepoint 2013 工作流,我想将一个启动参数设置为其中的一个人。

在这里,我定义了我的启动参数并启动了工作流程。我正在为人员字段使用人员选择器。我为这个人尝试了不同的符号,比如 id、mail、显示名称、key 和 json 对象。

var peoplePicker = SPClientPeoplePicker.SPClientPeoplePickerDict.peoplePickerDiv_TopSpan;
var keys = peoplePicker.GetAllUserKeys();
var initiationParams = {};
initiationParams["Person"] = keys;
initiationParams["String"] = "test";
startWorkflow("name",initiationParams);

使用此函数可以在启动工作流时发送参数。它适用于字符串参数。 我从最后一个 anwser 得到了代码https://sharepoint.stackexchange.com/questions/175041/trying-to-start-sharepoint-workflow-from-code

/**
 * Starts a SharePoint 2013 Workflow on a particular list or library item.
 * https://sharepoint.stackexchange.com/questions/175041/trying-to-start-sharepoint-workflow-from-code
 * 
 * @param {string} workflowName         The name of the Workflow
 * @param {string} initiationParams     The initiation Parameters of the Workflow
 */
function startWorkflow(workflowName,initiationParams) {

    var itemId = 1;
    var listGUID = "{643fa273-936b-4a21-a602-0589ccafa1b0}";

    SP.soD.executeFunc("sp.js","SP.ClientContext",function () {
        SP.soD.registerSod('sp.workflowservices.js',SP.Utilities.Utility.getLayoutsPageUrl(
            'sp.workflowservices.js'));
        SP.soD.executeFunc('sp.workflowservices.js',"SP.WorkflowServices.WorkflowServicesManager",function () {
                var ctx = new SP.ClientContext.get_current(),wfsManager = SP.WorkflowServices.WorkflowServicesManager.newObject(ctx,ctx
                        .get_web()),wfSubs = wfsManager.getWorkflowSubscriptionService().enumerateSubscriptionsByList(
                        listGUID);
                ctx.load(wfSubs);
                ctx.executeQueryAsync(function () {
                    wfsEnum = wfSubs.getEnumerator();
                    while (wfsEnum.moveNext()) {
                        var wfSub = wfsEnum.get_current();
                        if (wfSub.get_name() === workflowName) {
                            wfsManager.getWorkflowInstanceService().startWorkflowOnListItem(
                                wfSub,itemId,initiationParams);
                            ctx.executeQueryAsync(
                                function (sender,args) {
                                    console.log("Successfully started workflow.");
                                },function (sender,args) {
                                    $("#workflowResult").html(
                                        "Fehler beim Starten des Workflows.");
                                    console.log("Failed to start the workflow.");
                                }
                            );
                        }
                    }
                },function (e) {
                    console.error(e)
                });
            }
        );
    });
}

如何通过 javascript 通过启动参数将人员发送到我的工作流程?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...