[WebMethod(Description = "SAP发起放行条草稿")]
public void createRunForm(string dataFrom, string tCode)
{
try
{
XmlDocument doc = new XmlDocument();
Engine.LogWriter.Write(dataFrom);
doc.LoadXml(DocumentExtensions.ReplaceLowOrderASCIICharacters(dataFrom));
var xDocument = DocumentExtensions.ToXDocument(doc);
IEnumerable<XElement> targetNodes = from target in xDocument.Descendants("MAIN")
select target;
string userCode = targetNodes.First().Element("PERSON_ID").Value;
if (string.IsNullOrEmpty(userCode)) return;
string workflowCode = "ReleasePermit";
string usrId = GetUsrId(userCode);
bool finishStart = false;
// 获取模板
OThinker.H3.WorkflowTemplate.PublishedWorkflowTemplateHeader workflowTemplate = GetWorkflowTemplate(workflowCode);
// 查找流程发起人(设置?)
OThinker.Organization.User user = null;
if (!string.IsNullOrEmpty(userCode))
{
user = this.Engine.Organization.GetUnitByCode(userCode) as OThinker.Organization.User;
}
OThinker.H3.DataModel.BizObjectSchema schema = this.Engine.BizObjectManager.GetPublishedSchema(workflowTemplate.BizObjectSchemaCode);
BizObjectSchema childSchema = schema.GetProperty("ReleasePermitList").ChildSchema;
BizObject[] childBO = new BizObject[targetNodes.Count()];
BizObject childBO1 = new BizObject(Engine, childSchema, user.ObjectID);
for (int i = 0; i < targetNodes.Count(); i++)
{
childBO1["PoNumber"] = targetNodes.ElementAtOrDefault(i).Element("PRINT_NO").Value;//送货单编号
childBO1["SerialNumber"] = targetNodes.ElementAtOrDefault(i).Element("MATNR").Value;//产品料号
childBO1["Unit"] = targetNodes.ElementAtOrDefault(i).Element("MEINS").Value;//单位
childBO1["Quantity"] = Convert.ToInt32(Convert.ToDouble(targetNodes.ElementAtOrDefault(i).Element("MENGE").Value.Trim()));//数量
childBO1["Pice"] = targetNodes.ElementAtOrDefault(i).Element("PIECES").Value;//件数
childBO1["MaterialDescription"] = targetNodes.ElementAtOrDefault(i).Element("MAKTX").Value;//描述
childBO1["Customer"] = targetNodes.ElementAtOrDefault(i).Element("NAME1").Value;//客户
childBO[i] = childBO1;
}
OThinker.H3.DataModel.BizObject bo = new OThinker.H3.DataModel.BizObject(
this.Engine.Organization,
this.Engine.MetadataRepository,
this.Engine.BizObjectManager,
schema,
OThinker.Organization.User.SystemUserID,
OThinker.Organization.Company.DefaultCompanyId);
bo["ReleasePermitList"] = childBO1;
//DataModel.FieldSchema di=schema.GetField("");
bo.Create();
// 创建流程实例
string InstanceId = this.Engine.InstanceManager.CreateInstance(
bo.ObjectID,
workflowTemplate.WorkflowCode,
workflowTemplate.WorkflowVersion,
null,
null,
user.UnitID,
null,
null,
false,
Instance.InstanceContext.UnspecifiedID,
null,
Instance.Token.UnspecifiedID);
// 设置紧急程度为普通
OThinker.H3.Messages.MessageEmergencyType emergency = Messages.MessageEmergencyType.Normal;
// 这里也可以在启动流程的时候赋值
Dictionary<string, object> paramTables = new Dictionary<string, object>();
// 启动流程的消息
OThinker.H3.Messages.StartInstanceMessage startInstanceMessage
= new OThinker.H3.Messages.StartInstanceMessage(
emergency,
InstanceId,
paramTables,
Instance.PriorityType.Normal,
finishStart,
null,
false,
OThinker.H3.Instance.Token.UnspecifiedID,
null);
Engine.InstanceManager.SendMessage(startInstanceMessage);
}
catch (Exception ex)
{
// result = new BPMServiceResult(false, "流程实例启动失败!错误:" + ex.ToString());
}
}
public void createRunForm(string dataFrom, string tCode)
{
try
{
XmlDocument doc = new XmlDocument();
Engine.LogWriter.Write(dataFrom);
doc.LoadXml(DocumentExtensions.ReplaceLowOrderASCIICharacters(dataFrom));
var xDocument = DocumentExtensions.ToXDocument(doc);
IEnumerable<XElement> targetNodes = from target in xDocument.Descendants("MAIN")
select target;
string userCode = targetNodes.First().Element("PERSON_ID").Value;
if (string.IsNullOrEmpty(userCode)) return;
string workflowCode = "ReleasePermit";
string usrId = GetUsrId(userCode);
bool finishStart = false;
// 获取模板
OThinker.H3.WorkflowTemplate.PublishedWorkflowTemplateHeader workflowTemplate = GetWorkflowTemplate(workflowCode);
// 查找流程发起人(设置?)
OThinker.Organization.User user = null;
if (!string.IsNullOrEmpty(userCode))
{
user = this.Engine.Organization.GetUnitByCode(userCode) as OThinker.Organization.User;
}
OThinker.H3.DataModel.BizObjectSchema schema = this.Engine.BizObjectManager.GetPublishedSchema(workflowTemplate.BizObjectSchemaCode);
BizObjectSchema childSchema = schema.GetProperty("ReleasePermitList").ChildSchema;
BizObject[] childBO = new BizObject[targetNodes.Count()];
BizObject childBO1 = new BizObject(Engine, childSchema, user.ObjectID);
for (int i = 0; i < targetNodes.Count(); i++)
{
childBO1["PoNumber"] = targetNodes.ElementAtOrDefault(i).Element("PRINT_NO").Value;//送货单编号
childBO1["SerialNumber"] = targetNodes.ElementAtOrDefault(i).Element("MATNR").Value;//产品料号
childBO1["Unit"] = targetNodes.ElementAtOrDefault(i).Element("MEINS").Value;//单位
childBO1["Quantity"] = Convert.ToInt32(Convert.ToDouble(targetNodes.ElementAtOrDefault(i).Element("MENGE").Value.Trim()));//数量
childBO1["Pice"] = targetNodes.ElementAtOrDefault(i).Element("PIECES").Value;//件数
childBO1["MaterialDescription"] = targetNodes.ElementAtOrDefault(i).Element("MAKTX").Value;//描述
childBO1["Customer"] = targetNodes.ElementAtOrDefault(i).Element("NAME1").Value;//客户
childBO[i] = childBO1;
}
OThinker.H3.DataModel.BizObject bo = new OThinker.H3.DataModel.BizObject(
this.Engine.Organization,
this.Engine.MetadataRepository,
this.Engine.BizObjectManager,
schema,
OThinker.Organization.User.SystemUserID,
OThinker.Organization.Company.DefaultCompanyId);
bo["ReleasePermitList"] = childBO1;
//DataModel.FieldSchema di=schema.GetField("");
bo.Create();
// 创建流程实例
string InstanceId = this.Engine.InstanceManager.CreateInstance(
bo.ObjectID,
workflowTemplate.WorkflowCode,
workflowTemplate.WorkflowVersion,
null,
null,
user.UnitID,
null,
null,
false,
Instance.InstanceContext.UnspecifiedID,
null,
Instance.Token.UnspecifiedID);
// 设置紧急程度为普通
OThinker.H3.Messages.MessageEmergencyType emergency = Messages.MessageEmergencyType.Normal;
// 这里也可以在启动流程的时候赋值
Dictionary<string, object> paramTables = new Dictionary<string, object>();
// 启动流程的消息
OThinker.H3.Messages.StartInstanceMessage startInstanceMessage
= new OThinker.H3.Messages.StartInstanceMessage(
emergency,
InstanceId,
paramTables,
Instance.PriorityType.Normal,
finishStart,
null,
false,
OThinker.H3.Instance.Token.UnspecifiedID,
null);
Engine.InstanceManager.SendMessage(startInstanceMessage);
}
catch (Exception ex)
{
// result = new BPMServiceResult(false, "流程实例启动失败!错误:" + ex.ToString());
}
}