有点背景。 我正在升级由某人使用k2 2003编写的项目来使用k2 Blackpearl。 的一部开拓创新K2 2003过程具有使用1个时隙Connection.OpenWorklistItem投掷Worklistitem在K2中找不到错误Blackpearl
public class DestinationRule_e68c062c1c8d41f5a80ba96b065f76f7
{
public void Main(ref DestinationRuleContext K2)
{
K2.ResolveQueuesToUsers = true;
K2.Destinations.Add(DestinationType.User, K2.ProcessInstance.Originator.FQN);
}
}
public class EventItem_5e24182cd2b9469aa5314aafaa0abeff
{
public void Main(ClientEventContext K2)
{
K2.VerifyCredentials = false;
try
{
K2.ProcessInstance.DataFields["CurrentSerialNo"].Value = K2.SerialNumber;
}
catch (System.Exception ex)
{
throw new System.Exception(ex.Message);
}
}
注不存在调用“K2.AddWorklist”在上面的代码中的以下目标和规则客户端事件。应该有吗?
该方法使用的数据字段存储的序列号,然后从一个网络应用使用的序列号,用于打开 一个worklistitem再整理它像这样(使用K2ROM DLL):
//using k2 2003
public void FinishWorkItem()
{
if (this.ProcessInstance != null)
{
if (!string.IsNullOrEmpty(this.CurrentSerialNo))
{
WorklistItem item = null;
Connection connection = GetConnection();
try
{
item = connection.OpenWorklistItem(this.CurrentSerialNo, "ASP");
}
catch { }
if (item != null)
{
this.CurrentSerialNo = string.Empty;
item.Finish();
}
}
}
else
{
throw new Exception("Cannot finish work item where ProcessInstance is null (calling from KOProcessInstance)");
}
}
注OpenWorklistItem如何使用“this.CurrentSerialNumber”,这是来自 数据字段的序列号的值,用于打开和完成工作列表项。 这似乎在2003年
做工精细我如下重新写这个方法使用BLACKPEARL API(SourceCode.Workflow.Client.dll):
//same code using BlackPearl
public void FinishWorkItem(IClientDocumentEntity currentClientDocument)
{
if (this.ProcessInstance != null)
{
if (!string.IsNullOrEmpty(this.CurrentSerialNo))
{
WorklistItem item = null;
item = connection.OpenWorklistItem(this.CurrentSerialNo,"ASP");
if (item != null)
{
if (item.Actions.Count > 0)
{
foreach (SourceCode.Workflow.Client.Action action in item.Actions)
{
if (string.Compare(action.Name, "Finish", true) == 0)
{
action.Execute();
break;
}
}
}
this.CurrentSerialNo = string.Empty;
}
}
}
else
{
throw new Exception("Cannot finish work item where ProcessInstance is null (calling from KOProcessInstance)");
}
}
的connection.OpenWorklistItem(this.CurrentSerialNo “ASP”)抛出了以下错误 26030工作列表项,13351,144没有发现在
我的问题是,是否有已经从 2003 OpenWorklistItem调用BLACKPEARL行为的改变? 上面K2 2003的代码片段中的“FinishWorkItem”方法由 K2 2003中的'Admin'帐户执行,它目前在Production中似乎正常工作,这使我相信K2 2003 允许打开WorklistItem使用序列号,无论该项目分配给哪个用户 ,并在代码由K2 2003服务器上的管理员帐户执行时完成。这个陈述是正确的吗? 这种行为在BlackPearl中改变了吗?如果是这样,我应该采取什么不同的方式来使事情顺利进行
此外,存储K2.SerialNumber作为流程实例中的数据字段是正确的。 我不确定是否了解是否有多个目标用户,数据字段是否包含最后一个目标用户的序列号 以及是否使用此序列号打开工作清单项目是正确的。
谢谢。
我收到的错误消息是以下表格26030工作清单项目,13351,144未在处找到不确定为什么它不是您提到的新格式。这是一个K2 2003流程定义,我在VS 2010中使用与VS ad集成的BlackPearl客户端工具将其部署到BlackPearl服务器 –
@AbhijeetPatel,这是因为您现在已经将它部署到黑珍珠服务器。尝试'13351_41'。 –
你能否详细说明你的意思是'尝试'13351_41'。我上面发布的格式来自K2 blackpearl服务器投掷的错误消息 –