xml

[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());
                }


        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值