private static void ExportMatrixPart(Package package, WfProcessDescriptor processDesp, WfExportProcessDescriptorContext context)
		{
			var matrix = WfMatrixAdapter.Instance.LoadByProcessKey(processDesp.Key, false);

			if (matrix == null)
				return;

			matrix.Loaded = true;

			Uri partUri = CreatePartUri(context.MatrixCounter.ToString(), WfProcessDescriptorPackagePartType.MatrixPart);

			if (context.ExistingParts.Contains(partUri.ToString()))
				return;

			context.MappingInfo.Add(new WfPackageRelationMapping()
			{
				MatrixPath = partUri.ToString(),
				MatrixDefID = matrix.Definition.Key,
				ProcessDescriptionID = processDesp.Key
			});

			ExportMatrixDefPart(package, matrix.Definition, context);

			PackagePart part = package.CreatePart(partUri, MediaTypeNames.Application.Octet, CompressionOption.Normal);
			using (MemoryStream bytes = matrix.ExportToExcel2007(context.ExportParams.MatrixRoleAsPerson))
			{
				using (Stream stream = part.GetStream())
				{
					bytes.CopyTo(stream);
				}
			}

			context.ExistingParts.Add(partUri.ToString());
			context.MatrixCounter++;
		}
예제 #2
0
        private static void ExportMappingPart(Package package, WfExportProcessDescriptorContext context)
        {
            if (context.MappingInfo.Count == 0)
            {
                return;
            }

            Uri partUri = CreatePartUri(string.Empty, WfProcessDescriptorPackagePartType.MappingPart);

            XElement mappingsXml = new XElement("Mappings");

            foreach (var mapItem in context.MappingInfo)
            {
                mappingsXml.Add(new XElement("Item",
                                             new XAttribute("matrixID", mapItem.MatrixPath),
                                             new XAttribute("matrixDefID", mapItem.MatrixDefID),
                                             new XAttribute("processDescID", mapItem.ProcessDescriptionID))
                                );
            }

            XDocument xDoc = new XDocument(new XDeclaration("1.0", "utf-8", "true"), mappingsXml);

            PackagePart part = package.CreatePart(partUri, MediaTypeNames.Text.Xml);

            using (Stream stream = part.GetStream())
            {
                xDoc.Save(stream);
            }
        }
		private static void ExportProcessPart(Package package, WfProcessDescriptor processDesc, WfExportProcessDescriptorContext context)
		{
			Uri partUri = CreatePartUri(processDesc.Key, WfProcessDescriptorPackagePartType.ProcessPart);

			if (context.ExistingParts.Contains(partUri.ToString()))
				return;

			XElement xeWfProcess = context.Formatter.Serialize(processDesc);
			XDocument xDoc = new XDocument(new XDeclaration("1.0", "utf-8", "true"), xeWfProcess);

			PackagePart part = package.CreatePart(partUri, MediaTypeNames.Text.Xml, CompressionOption.Normal);

			using (Stream stream = part.GetStream())
				xDoc.Save(stream);

			context.ExistingParts.Add(partUri.ToString());
		}
		public static void ExportProcessDescriptors(WfExportProcessDescriptorParams exportParams, Stream outputStream, params string[] processDespKeys)
		{
			exportParams.NullCheck("exportParams");
			processDespKeys.NullCheck("processDespKeys");

			WfExportProcessDescriptorContext context = new WfExportProcessDescriptorContext(exportParams);

			using (Package package = ZipPackage.Open(outputStream, FileMode.Create))
			{
				foreach (string key in processDespKeys)
				{
					WfProcessDescriptor processDesp = (WfProcessDescriptor)WfProcessDescriptorManager.LoadDescriptor(key);

					ExportProcessPart(package, processDesp, context);
					ExportMatrixPart(package, processDesp, context);
				}

				ExportMappingPart(package, context);
			}
		}
예제 #5
0
        public static void ExportProcessDescriptors(WfExportProcessDescriptorParams exportParams, Stream outputStream, params string[] processDespKeys)
        {
            exportParams.NullCheck("exportParams");
            processDespKeys.NullCheck("processDespKeys");

            WfExportProcessDescriptorContext context = new WfExportProcessDescriptorContext(exportParams);

            using (Package package = ZipPackage.Open(outputStream, FileMode.Create))
            {
                foreach (string key in processDespKeys)
                {
                    WfProcessDescriptor processDesp = (WfProcessDescriptor)WfProcessDescriptorManager.LoadDescriptor(key);

                    ExportProcessPart(package, processDesp, context);
                    ExportMatrixPart(package, processDesp, context);
                }

                ExportMappingPart(package, context);
            }
        }
		private static void ExportMappingPart(Package package, WfExportProcessDescriptorContext context)
		{
			if (context.MappingInfo.Count == 0)
				return;

			Uri partUri = CreatePartUri(string.Empty, WfProcessDescriptorPackagePartType.MappingPart);

			XElement mappingsXml = new XElement("Mappings");

			foreach (var mapItem in context.MappingInfo)
			{
				mappingsXml.Add(new XElement("Item",
					new XAttribute("matrixID", mapItem.MatrixPath),
					new XAttribute("matrixDefID", mapItem.MatrixDefID),
					new XAttribute("processDescID", mapItem.ProcessDescriptionID))
				);
			}

			XDocument xDoc = new XDocument(new XDeclaration("1.0", "utf-8", "true"), mappingsXml);

			PackagePart part = package.CreatePart(partUri, MediaTypeNames.Text.Xml);

			using (Stream stream = part.GetStream())
			{
				xDoc.Save(stream);
			}
		}
		private static void ExportMatrixDefPart(Package package, WfMatrixDefinition matrixDef, WfExportProcessDescriptorContext context)
		{
			Uri partUri = CreatePartUri(matrixDef.Key, WfProcessDescriptorPackagePartType.MatrixDefPart);

			if (context.ExistingParts.Contains(partUri.ToString()))
				return;

			XElement matrixDefXml = context.Formatter.Serialize(matrixDef);

			XDocument xDoc = new XDocument(new XDeclaration("1.0", "utf-8", "true"), matrixDefXml);
			PackagePart part = package.CreatePart(partUri, MediaTypeNames.Text.Xml);

			using (var stream = part.GetStream())
			{
				xDoc.Save(stream);
				stream.Flush();
			}

			context.ExistingParts.Add(partUri.ToString());
		}
예제 #8
0
        private static void ExportMatrixPart(Package package, WfProcessDescriptor processDesp, WfExportProcessDescriptorContext context)
        {
            var matrix = WfMatrixAdapter.Instance.LoadByProcessKey(processDesp.Key, false);

            if (matrix == null)
            {
                return;
            }

            matrix.Loaded = true;

            Uri partUri = CreatePartUri(context.MatrixCounter.ToString(), WfProcessDescriptorPackagePartType.MatrixPart);

            if (context.ExistingParts.Contains(partUri.ToString()))
            {
                return;
            }

            context.MappingInfo.Add(new WfPackageRelationMapping()
            {
                MatrixPath           = partUri.ToString(),
                MatrixDefID          = matrix.Definition.Key,
                ProcessDescriptionID = processDesp.Key
            });

            ExportMatrixDefPart(package, matrix.Definition, context);

            PackagePart part = package.CreatePart(partUri, MediaTypeNames.Application.Octet, CompressionOption.Normal);

            using (MemoryStream bytes = matrix.ExportToExcel2007(context.ExportParams.MatrixRoleAsPerson))
            {
                using (Stream stream = part.GetStream())
                {
                    bytes.CopyTo(stream);
                }
            }

            context.ExistingParts.Add(partUri.ToString());
            context.MatrixCounter++;
        }
예제 #9
0
        private static void ExportProcessPart(Package package, WfProcessDescriptor processDesc, WfExportProcessDescriptorContext context)
        {
            Uri partUri = CreatePartUri(processDesc.Key, WfProcessDescriptorPackagePartType.ProcessPart);

            if (context.ExistingParts.Contains(partUri.ToString()))
            {
                return;
            }

            XElement  xeWfProcess = context.Formatter.Serialize(processDesc);
            XDocument xDoc        = new XDocument(new XDeclaration("1.0", "utf-8", "true"), xeWfProcess);

            PackagePart part = package.CreatePart(partUri, MediaTypeNames.Text.Xml, CompressionOption.Normal);

            using (Stream stream = part.GetStream())
                xDoc.Save(stream);

            context.ExistingParts.Add(partUri.ToString());
        }
예제 #10
0
        private static void ExportMatrixDefPart(Package package, WfMatrixDefinition matrixDef, WfExportProcessDescriptorContext context)
        {
            Uri partUri = CreatePartUri(matrixDef.Key, WfProcessDescriptorPackagePartType.MatrixDefPart);

            if (context.ExistingParts.Contains(partUri.ToString()))
            {
                return;
            }

            XElement matrixDefXml = context.Formatter.Serialize(matrixDef);

            XDocument   xDoc = new XDocument(new XDeclaration("1.0", "utf-8", "true"), matrixDefXml);
            PackagePart part = package.CreatePart(partUri, MediaTypeNames.Text.Xml);

            using (var stream = part.GetStream())
            {
                xDoc.Save(stream);
                stream.Flush();
            }

            context.ExistingParts.Add(partUri.ToString());
        }