下面通过一个具体的例子示范如何使用脚本环节、脚本参与者和脚本条件。这个例子如下图所示:

脚本环节、参与者、条件使用示例

这个例子所使用的是一张由InfoPath设计的请假单,如下图所示:

脚本环节、参与者、条件使用示例 

 

流程定义中的“脚本参与者审批”环节所使用的是“审批人”字段所设置的参与者,所以其脚本如下:

import clr;
clr.AddReference(
'mscorlib','System.Xml');
from System import String;
from System.Xml import XmlDocument,XmlNamespaceManager;

mdom
= XmlDocument();
mdom.LoadXml(DataItems.ApplicationData.FormData.ToString());

nsmgr
= XmlNamespaceManager(mdom.NameTable);
prefix
= mdom.DocumentElement.Prefix;
nsmgr.AddNamespace(prefix, mdom.DocumentElement.GetNamespaceOfPrefix(prefix));
users
= mdom.SelectSingleNode(String.Format("//{0}:审批人", prefix), nsmgr);
userData
= users.InnerText.Split(";");
Result
= [];
for user in userData:
loginID
= user[user.index("(")+1 : -1];
Result.append(OrganizationProvider.DefaultProvider.GetUserByLoginID(loginID));

从脚本中可看到是通过调用XML的相关方法,在表单数据DataItems.ApplicationData.FormData中提取相关数据来获取审批人的,最后的结果存放到变量Result中,对应于脚本参与者设置的结果参数属性。

脚本环节、参与者、条件使用示例

 

下面来看看脚本条件是如何实现对请假天数的比较的(以“大于5天”这个条件为例):

import clr;
clr.AddReference(
'mscorlib','System.Xml');
from System import String, Int32;
from System.Xml import XmlDocument,XmlNamespaceManager;

mdom
= XmlDocument();
mdom.LoadXml(DataItems.ApplicationData.FormData.ToString());

nsmgr
= XmlNamespaceManager(mdom.NameTable);
prefix
= mdom.DocumentElement.Prefix;
nsmgr.AddNamespace(prefix, mdom.DocumentElement.GetNamespaceOfPrefix(prefix));
days
= mdom.SelectSingleNode(String.Format("//{0}:天数", prefix), nsmgr);
data
= Int32.Parse(days.InnerText);
if data > 5:
Result
= True;
else:
Result
= False;

当中的原理跟脚本参与者雷同,也是把结果存到变量Result中,注意这里的Result只能是True或False代表条件是否成立。

 

“设置参数”这个环节是个脚本环节,使用它可以执行一段脚本,例如设置参数等,如下:

import sys, clr;
clr.AddReferenceToFile(
'Bingosoft.Workflow.WFAPI.dll');
from Bingosoft.Workflow.WFAPI import WorkflowHelper;

#设置参数
flowHelper = WorkflowHelper(OrganizationProvider.GetUserByID(DataItems.CurrentUser.ID));
caseID
= DataItems.FlowInstance.ProcID;
taskID
= DataItems["CurrentTask"];
flowHelper.OpenWorkflow(caseID, taskID);
flowHelper.SetParameter(
"opt", 200);
flowHelper.Save();

 

相关文章:

  • 2021-07-29
  • 2021-10-19
  • 2021-04-25
  • 2021-11-28
  • 2021-06-17
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-01-06
  • 2021-11-10
  • 2022-12-23
  • 2021-12-20
  • 2022-12-23
  • 2021-11-18
相关资源
相似解决方案