private static List <IWfProcessDescriptor> SaveProcessDescriptor(WfProcessImporterContext context) { List <IWfProcessDescriptor> result = new List <IWfProcessDescriptor>(); XElementFormatter formatter = new XElementFormatter(); formatter.OutputShortType = false; foreach (PackagePart part in context.ProcessDescParts) { XDocument xmlDoc = XDocument.Load(part.GetStream()); IWfProcessDescriptor processDesp = (IWfProcessDescriptor)formatter.Deserialize(xmlDoc.Root); WfProcessDescriptorManager.SaveDescriptor(processDesp); IUser user = null; if (DeluxePrincipal.IsAuthenticated) { user = DeluxeIdentity.CurrentUser; } WfProcessDescriptorInfoAdapter.Instance.UpdateImportTime(processDesp.Key, user); result.Add(processDesp); } return(result); }
public static List <IWfProcessDescriptor> ImportProcessDescriptors(Stream stream, Action <string> notifyEveryStep = null) { stream.NullCheck("stream"); List <IWfProcessDescriptor> result = null; using (Package package = ZipPackage.Open(stream)) { notifyEveryStep.Notify("开始导入文件...\n"); PackagePartCollection packageParts = package.GetParts(); WfProcessImporterContext context = new WfProcessImporterContext(packageParts); notifyEveryStep.Notify(string.Format(" 共发现{0}个矩阵定义,{1}个流程矩阵数据,{2}个流程模板文件...\n", context.MatrixDefParts.Count, context.MatrixParts.Count, context.ProcessDescParts.Count)); using (TransactionScope scope = TransactionScopeFactory.Create()) { SaveMatrix(context); notifyEveryStep.Notify(" 导入流程矩阵完成...\n"); result = SaveProcessDescriptor(context); notifyEveryStep.Notify(" 导入流程模板完成...\n"); scope.Complete(); } notifyEveryStep.Notify("文件导入完成!"); } return(result); }
private static void SaveMatrix(WfProcessImporterContext context) { foreach (var part in context.MatrixParts) { WfPackageRelationMapping partMapInfo = context.MappingInfo[part.Uri.ToString()]; WfMatrixDefinition matrixDef = context.MatrixDefinitions[partMapInfo.MatrixDefID]; WfMatrix.ImportNewMatrixFromExcel2007(part.GetStream(), null, partMapInfo.ProcessDescriptionID, matrixDef); } }