Пример #1
0
        private static void AddSummaryRowInfoToExcelTable(BpmnInfo bpmn, DmnInfo dmnInfo, VariablesInfo variableInfo, int rowIndex, ExcelWorksheet wsSheet, string[] dmnFields, string variableUseType = null)
        {
            var startTableCellAddress = wsSheet.Tables.FirstOrDefault()?.Address.Start.Address;

            for (int i = 0; i < dmnFields.Length; i++)
            {
                var propertyName = dmnFields[i];
                var value        = (GetPropertyStringValue(dmnInfo, propertyName) ??
                                    GetPropertyStringValue(variableInfo, propertyName)) ??
                                   GetPropertyStringValue(bpmn, propertyName);
                if (dmnFields[i] == "VariablesUseType" && !string.IsNullOrEmpty(variableUseType))
                {
                    value = variableUseType;
                }
                var cellAdress = AddRowAndColumnToCellAddress(startTableCellAddress, rowIndex + 1, i);
                wsSheet.Cells[cellAdress].Value = value;
            }
        }
Пример #2
0
        public static void GetDmnInfoFromBpmnModel(XDocument xmlBpmn, List <DmnInfo> dmns, ref List <BpmnInfo> bpmnDataList)
        {
            var businessRuleTasks = xmlBpmn.Descendants()
                                    .Where(x => x.Name.ToString().Contains("businessRuleTask"));
            var process = xmlBpmn.Descendants()
                          .Single(x => x.Name.ToString().Contains("process"));

            var ruleTasks = businessRuleTasks as XElement[] ?? businessRuleTasks.ToArray();

            if (ruleTasks.Any())
            {
                foreach (XElement element in ruleTasks)
                {
                    var bpmnId = process.Attribute("id")?.Value;
                    var dmnId  = element.Attributes().Single(a => a.Name.ToString().Contains("decisionRef"))?.Value;
                    var dmn    = dmns.First(d => d.DmnId == dmnId);

                    BpmnInfo bpmnInfo;
                    if (bpmnDataList.Any(bp => bp.BpmnId == bpmnId))
                    {
                        bpmnInfo = bpmnDataList.First(bp => bp.BpmnId == bpmnId);
                        bpmnInfo.DmnInfos.Add(dmn);
                    }
                    else
                    {
                        bpmnInfo = new BpmnInfo()
                        {
                            BpmnId              = process.Attribute("id")?.Value,
                            BpmnNavn            = process.Attribute("name")?.Value,
                            DmnResultatvariabel = element.Attributes().Single(a => a.Name.ToString().Contains("resultVariable"))?.Value
                        };
                        bpmnInfo.DmnInfos = new List <DmnInfo>()
                        {
                            dmn
                        };
                        bpmnDataList.Add(bpmnInfo);
                    }
                }
            }
        }
Пример #3
0
        public void Test1()
        {
            var file      = "dmnTest1.dmn";
            var file2     = "dmnTest2.dmn";
            var file3     = "BpmnTest01.bpmn";
            var dmns      = new List <tDefinitions>();
            var filePath1 = Path.Combine(Directory.GetCurrentDirectory() + @"..\..\..\..\Data\", file);
            var filePath2 = Path.Combine(Directory.GetCurrentDirectory() + @"..\..\..\..\Data\", file2);
            var bpmn      = Path.Combine(Directory.GetCurrentDirectory() + @"..\..\..\..\Data\", file3);

            XDocument bpmnXml = XDocument.Load(bpmn);

            using (Stream dmnStream = File.Open(filePath1, FileMode.Open))
            {
                dmns.Add(DmnConverter.DeserializeStreamDmnFile(dmnStream));
            }
            using (Stream dmnStream = File.Open(filePath2, FileMode.Open))
            {
                dmns.Add(DmnConverter.DeserializeStreamDmnFile(dmnStream));
            }

            var dmnDataDictionaryModels = new List <DmnInfo>();


            var excelPkg = new ExcelPackage();

            foreach (var tdefinitions in dmns)
            {
                var Items    = tdefinitions.Items;
                var decision = Items.Where(t => t.GetType() == typeof(tDecision));

                foreach (tDecision tdecision in decision)
                {
                    tDecisionTable decisionTable = null;
                    try
                    {
                        DmnConverter.GetDecisionsVariables(tdecision, Path.GetFileNameWithoutExtension(filePath1),
                                                           ref dmnDataDictionaryModels);
                    }
                    catch
                    {
                        //
                    }
                }
            }

            var bpmnDataDictionary = new List <BpmnInfo>();

            DmnConverter.GetDmnInfoFromBpmnModel(bpmnXml, dmnDataDictionaryModels, ref bpmnDataDictionary);

            //List<DataDictionaryModel> dataDictionaryModels = new List<DataDictionaryModel>();
            foreach (var dmnData in dmnDataDictionaryModels)
            {
                var submodel = new BpmnInfo();
                try
                {
                    var    value    = dmnData.GetType();
                    var    property = value.GetProperty("DmnId");
                    String name     = (String)(property.GetValue(dmnData, null));
                }
                catch
                {
                }

                //dataDictionaryModels.Add(new DataDictionaryModel()
                //{
                //    BpmnData = submodel,
                //    DmnData = dmnData
                //});
            }

            ExcelWorksheet wsSheet = excelPkg.Workbook.Worksheets.Add("DmnTEK");
            //Filter all dmn by Id
            var dmnIds = dmnDataDictionaryModels.GroupBy(x => x.DmnId).Select(y => y.First());
            var objectPropertyNames = new[] { "DmnId", "DmnName", "TekKapitel", "TekLedd", "TekTabell", "TekForskriften", "TekWebLink" };

            ExcelConverter.CreateDmnExcelTableDataDictionary(dmnIds, wsSheet, "dmnTek", objectPropertyNames);

            ExcelWorksheet wsSheet1        = excelPkg.Workbook.Worksheets.Add("Variables");
            var            dmnVariablesIds = DmnConverter.GetVariablesFormDmns(dmnDataDictionaryModels);
            var            dmnVariablesIdstPropertyNames = new[] { "VariabelId", "VariabelNavn", "VariabelBeskrivelse", "IFC4", "IfcUrl" };

            ExcelConverter.CreateVariablesExcelTableDataDictionary(dmnVariablesIds, wsSheet1, "Variables", dmnVariablesIdstPropertyNames);

            ExcelWorksheet wsSheet2             = excelPkg.Workbook.Worksheets.Add("Dmn+Variables");
            var            objectPropertyNames1 = new[] { "DmnId", "VariabelId", "VariabelType" };

            ExcelConverter.CreateDMNAndVariablesExcelTableDataDictionary(dmnIds, wsSheet2, "Dmn+Variables", objectPropertyNames1);



            ExcelWorksheet wsSheet3             = excelPkg.Workbook.Worksheets.Add("summary");
            var            summaryPropertyNames = new[] { "FileName", "BpmnId", "DmnId", "VariabelId", "VariabelType", "VariablesUseType", "Kilde" };

            ExcelConverter.CreateSummaryExcelTableDataDictionary(bpmnDataDictionary, wsSheet3, "summary", summaryPropertyNames);

            var path = string.Concat(@"c:\temp\");

            Directory.CreateDirectory(path);
            var filePath = Path.Combine(path, string.Concat("dataDictionary", ".xlsx"));

            excelPkg?.SaveAs(new FileInfo(filePath));

            File.Exists(filePath).Should().BeTrue();
        }