المخططات التنظيمية ضرورية لتصوير هيكل الفرق والأقسام وعلاقات التقارير داخل الشركة. تساعد الإدارة والموظفين على فهم الهرمية والعلاقات بين الأدوار في المؤسسة. يتيح أتمتة إنشاء هذه المخططات في C# للمطورين توليد الرسومات بصريًا بشكل ديناميكي من قواعد بيانات الموارد البشرية أو فرق المشاريع أو أدلة الشركة دون الحاجة إلى جهد تصميم يدوي في Visio أو أدوات رسم أخرى.
هذا البرنامج التعليمي يوضح كيفية إنشاء مخطط تنظيمي في C# برمجيًا باستخدام مكتبة رسم المخططات. ستتعلم إضافة العقد الهرمية، وربط الأشكال باستخدام الموصلات، وتنسيق المخطط تلقائيًا باستخدام خوارزمية CompactTree للحصول على مظهر نظيف واحترافي.
لماذا إنشاء مخطط تنظيمي برمجيًا؟
- أتمتة سير عمل الموارد البشرية لإنشاء وتحديث المخططات عندما تحدث تغييرات في الموظفين أو الهيكل.
- إنتاج مخططات هرمية واضحة وموحدة دون الحاجة إلى رسمها يدويًا في Visio.
- توفير الوقت من خلال دمج إنشاء المخططات في الأنظمة الحالية مثل إدارة الموظفين أو لوحات التقارير.
- ضمان تصميم متسق عن طريق تطبيق أنماط الأشكال والموصلات وقواعد التخطيط برمجيًا.
- تصدير المخططات مباشرةً إلى تنسيق Visio (VSDX) للمشاركة والتحرير الإضافي إذا لزم الأمر.
إنشاء مخطط تنظيمي في C#
- أضف مكتبة التخطيط إلى مشروع C# الخاص بك للوصول إلى واجهات برمجة تطبيقات إنشاء وتخطيط Visio.
- أنشئ كائن
Diagramجديد وحمّل الأشكال الأساسية والموصلات من ملف قالب Visio. - عرّف هيكلًا هرميًا أو مجموعة بيانات تمثل العلاقات التنظيمية.
- أضف الأشكال ديناميكيًا لكل عقدة في الهرم وخزن معرّفاتها لتخطيط الاتصالات.
- استخدم الموصلات لربط الأشكال الفرعية بعقدها الأصلية، مكوّنًا الشجرة الهرمية.
- طبّق خوارزمية تخطيط تلقائية (مثل CompactTree) لتنظيم العقد بشكل مرتب.
- احفظ المخطط الناتج بصيغة Visio VSDX.
// Load masters from any existing diagram, stencil or template
string visioStencil = dataDir + "BasicShapes.vss";
const string rectangleMaster = "Rectangle";
const string connectorMaster = "Dynamic connector";
const int pageNumber = 0;
const double width = 1;
const double height = 1;
double pinX = 4.25;
double pinY = 9.5;
// Define values to construct the hierarchy
List<string> listPos = new List<string>(new string[] {
"0", "0:0", "0:1", "0:2", "0:3", "0:4", "0:5", "0:6",
"0:0:0", "0:0:1", "0:3:0", "0:3:1", "0:3:2", "0:6:0", "0:6:1"
});
// Define a Hashtable to map the string name to long shape id
System.Collections.Hashtable shapeIdMap = new System.Collections.Hashtable();
// Create a new diagram
Aspose.Diagram.Diagram diagram = new Aspose.Diagram.Diagram(visioStencil);
diagram.Pages[pageNumber].PageSheet.PageProps.PageWidth.Value = 11;
// Add shapes for each hierarchy node
foreach (string orgnode in listPos)
{
long rectangleId = diagram.AddShape(pinX++, pinY++, width, height, rectangleMaster, pageNumber);
Aspose.Diagram.Shape shape = diagram.Pages[pageNumber].Shapes.GetShape(rectangleId);
shape.Text.Value.Add(new Aspose.Diagram.Txt(orgnode));
shape.Name = orgnode;
shapeIdMap.Add(orgnode, rectangleId);
}
// Create connections between parent and child nodes
foreach (string orgName in listPos)
{
int lastColon = orgName.LastIndexOf(':');
if (lastColon > 0)
{
string parendName = orgName.Substring(0, lastColon);
long shapeId = (long)shapeIdMap[orgName];
long parentId = (long)shapeIdMap[parendName];
Aspose.Diagram.Shape connector1 = new Aspose.Diagram.Shape();
long connecter1Id = diagram.AddShape(connector1, connectorMaster, pageNumber);
diagram.Pages[pageNumber].ConnectShapesViaConnector(parentId,
Aspose.Diagram.Manipulation.ConnectionPointPlace.Right,
shapeId, Aspose.Diagram.Manipulation.ConnectionPointPlace.Left,
connecter1Id);
}
}
// Auto layout CompactTree chart
Aspose.Diagram.AutoLayout.LayoutOptions compactTreeOptions = new Aspose.Diagram.AutoLayout.LayoutOptions
{
LayoutStyle = Aspose.Diagram.AutoLayout.LayoutStyle.CompactTree,
Direction = Aspose.Diagram.AutoLayout.LayoutDirection.DownThenRight,
EnlargePage = false
};
diagram.Pages[pageNumber].Layout(compactTreeOptions);
// Save diagram
diagram.Save(dataDir + "ORGChart_out.vsdx", Aspose.Diagram.SaveFileFormat.Vsdx);
هذا المثال البرمجي ينشئ هيكلًا تنظيميًا، يربط العقد الأم والابن باستخدام موصلات ديناميكية، ويطبق تخطيط CompactTree تلقائي للحصول على بنية نظيفة. كل شكل يمثل عقدة تنظيمية مُعنونة وفقًا لقائمة الهرمية، ويتم حفظ الناتج النهائي كملف Visio VSDX.
الخلاصة
إنشاء مخططات تنظيمية باستخدام C# يوفر طريقة ديناميكية لتصور هياكل الفرق، وتسلسلات التقارير، والعلاقات بين الأقسام دون الحاجة إلى الرسم اليدوي في Visio. مع التخطيط التلقائي وإدارة الاتصالات، يمكنك إنشاء مخططات نظيفة وقابلة للقراءة مباشرةً من مصادر البيانات. النهج الموضح أعلاه يبسط تقارير الموارد البشرية، ويحسن الاتساق، ويمكّن من التكامل مع سير عمل أتمتة الأعمال.
