Exemplo n.º 1
0
        public string createProcess(string processName, string processTemplateName, Dictionary <string, Object> param)
        {
            try {
                if (String.IsNullOrEmpty(processName))
                {
                    throw new Exception("createProcess - processName is empty");
                }
                if (String.IsNullOrEmpty(processTemplateName))
                {
                    throw new Exception("createProcess - processTemplateName is empty");
                }

                string processTemplateID = api.GetReleasedPID(processTemplateName);
                if (processTemplateID == null)
                {
                    throw new Exception("createProcess - 流程模板" + processTemplateName + "未定义");
                }

                string  PiID = Ascentn.Workflow.Base.UUID.GetID();
                string  Woid = Ascentn.Workflow.Base.UUID.GetID();
                WFEvent evt  = api.CreateProcInst(processTemplateID, PiID, processName, Woid, null, false);
                evt = getFullEvent(evt);
                if (!String.IsNullOrEmpty(evt.Error))
                {
                    throw new Exception("createProcess - " + evt.Error);
                }

                if (param != null && param.Count > 0)
                {
                    ArrayList attrList = new ArrayList();
                    foreach (string key in param.Keys)
                    {
                        attrList.Add(new NameValue(key, param[key]));
                    }
                    NameValue[] attributes = (NameValue[])attrList.ToArray(typeof(NameValue));
                    api.SetCustomAttrs(Woid, attributes);
                }

                return(PiID);
            } catch (Exception e) {
                throw new Exception(errorMSGPrefix + e.Message, e);
            }
        }