كانبان في نصف ساعة

بادئ ذي بدء ، سأبدأ بتحديد الجمهور المستهدف للمقال. هذا المقال لا يدور حول كيفية عمل Kanban. هذه المقالة مخصصة لأولئك الذين يعرفون كيفية التعامل مع هذه التقنية ويريدون بسرعة ودون تكلفة كبيرة إنشاء أداة تسمح لك بتصور لوحة Kanban والعمل معها. نظرًا لأن ميزانيتنا في حدها الأدنى ، إن لم تكن صفرية ، فسنحاول حل كل شيء بأقل قدر ممكن من الوسائل. نحتاج إلى قاعدة بيانات لتخزين المعلومات ، وأداة لتصور السبورة ، ووظيفتين:

  • إنشاء بطاقة
  • تغيير البطاقة ونقلها على طول المسارات.

من أجل التقليل إلى أدنى حد من التطوير ، سيتم تنفيذ بدء تنفيذ المهام باستخدام طلبات http ، بعد ذلك بقليل سأقوم بإنشاء واجهة ويب يمكن عرضها في مقال آخر (طالما لا يوجد رابط).

أعتقد أنه سيكون لدي لوحة بها المسارات التالية (يمكنك تحديد التكوين الخاص بك):


كقاعدة بيانات ، يمكنك أن تأخذ كل ما لديك ، وسأخذ MS SQL وأنشئ جدولًا واحدًا فقط (في حالتي ، هناك مجموعة من قواعد البيانات هذه تدور في المؤسسة ، وبالتالي فإن وجود جهاز لوحي واحد لا يجعل الطقس)

create table tasks( ID int IDENTITY(1,1) PRIMARY KEY, Project nvarchar(250) default 'Unknown', Track nvarchar(250) default 'To Do', Worker nvarchar(250) default 'Unknown', [Description] nvarchar(1000) DEFAULT '', UpdDate datetime default GETDATE(), CrtDate datetime default GETDATE() ) 

كما ترون من التعريف ، سأقوم تلقائيًا بترقيم المهام بترتيب الأرقام 1 ، 2 ، 3 ... فصل المهام إلى مسارات - مسار. مشاريع - مشروع. اذكر الفنان - العامل. احتفظ بوصف قصير في - الوصف ، وتاريخان: CrtDate - تاريخ الإنشاء ، تاريخ التحديث - تاريخ آخر تحديث للمهمة ، على سبيل المثال ، الانتقال إلى هذا المسار.

سنقوم بتصور اللوحة باستخدام أداة إنشاء تقرير FastReport Desktop. ويرد رابط للرموز وملف التقرير في نهاية المقال. العرض التوضيحي مجاني ، لتغطية مثل هذه المهام فهي وظيفية للغاية. لذا قم بتنزيل التقرير وافتحه في المصمم



كل ما لم يعجبك ، تغير حسب تقديرك. على سبيل المثال ، أضف مسارات جديدة ، إلخ. تذكر تخصيص التقرير إلى قاعدة البيانات الخاصة بك.



المجلس جاهز. الآن قم بإنشاء المهمة الأولى



للقيام بذلك ، نقوم بتنفيذ وظيفة في Azure ستقوم بإدراج سجل جديد في الجدول

 #r "Newtonsoft.Json" using System.Net; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Primitives; using Newtonsoft.Json; using System.Data.SqlClient; public static async Task<IActionResult> Run(HttpRequest req, ILogger log) { log.LogInformation("Create task function processed a request."); string requestBody = await new StreamReader(req.Body).ReadToEndAsync(); log.LogInformation($"{requestBody}"); dynamic data = JsonConvert.DeserializeObject(requestBody); string project = data?.project; if (project==null) {return new BadRequestObjectResult($"Please pass a Project in the request body");} string worker = data?.worker; if (worker==null) {return new BadRequestObjectResult($"Please pass a Worker in the request body");} string description = data?.description??""; var your_username = "ufocombat"; var your_password = "***"; using (SqlConnection conn = new SqlConnection($"Server=tcp:fast,1433;Initial Catalog=FastReportSQL;Persist Security Info=False;User ID={your_username};Password={your_password};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;")) { conn.Open(); SqlCommand cmd = new SqlCommand($"INSERT INTO tasks(Project,Worker,Description) VALUES (@p,@w,@d)", conn); cmd.Parameters.AddWithValue("p",project); cmd.Parameters.AddWithValue("w",worker); cmd.Parameters.AddWithValue("d",description); cmd.ExecuteNonQuery(); conn.Close(); } return new OkObjectResult($"Task created {DateTime.Now}"); } 

لا تنس تحديد اسم المستخدم وكلمة المرور للاتصال بقاعدة البيانات. افتح أي برنامج يمكنه إرسال طلبات الويب. أنا أخذ ساعي البريد. أدخل عنوان الرابط واملأ البطاقة الشخصية بتنسيق json. يتم حفظ الطلب في حالة إعادة الاستخدام. نرسل طلب إذا نجح كل شيء ، فسنحصل على تاريخ ووقت إنشاء البطاقة على الخادم.



قم بتشغيل التقرير في FastReport:



لتغيير البطاقة أو النقل ، قم بإنشاء وظيفة في Azure

 #r "Newtonsoft.Json" using System.Net; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Primitives; using Newtonsoft.Json; using System.Data.SqlClient; public static async Task<IActionResult> Run(HttpRequest req, ILogger log) { log.LogInformation("Update task function processed a request."); string requestBody = await new StreamReader(req.Body).ReadToEndAsync(); log.LogInformation($"{requestBody}"); dynamic data = JsonConvert.DeserializeObject(requestBody); string ID = data?.id; if (ID == null) {return new BadRequestObjectResult($"Please pass an ID in the request body");} string paras = "UpdDate=@u"; string description = data?.description; if (description != null) { paras += ", Description=@d"; } string track = data?.track; if (track != null) { paras += ", Track=@t"; } string worker = data?.worker; if (worker != null) { paras += ", Worker=@w"; } var your_username = "ufocombat"; var your_password = "***; if (paras!="") { using (SqlConnection conn = new SqlConnection($"Server=tcp:fast,1433;Initial Catalog=FastReportSQL;Persist Security Info=False;User ID={your_username};Password={your_password};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;")) { conn.Open(); SqlCommand cmd = new SqlCommand($"UPDATE tasks SET {paras} WHERE ID=@id", conn); cmd.Parameters.AddWithValue("id",ID); cmd.Parameters.AddWithValue("u",DateTime.Now.AddHours(3)); if (description != null) { cmd.Parameters.AddWithValue("d",description); } if (worker != null ) { cmd.Parameters.AddWithValue("w",worker); } if (track != null) { cmd.Parameters.AddWithValue("t",track); } cmd.ExecuteNonQuery(); conn.Close(); } } return new OkObjectResult($"Task created {DateTime.Now}"); } 

بمساعدتها ، سنقوم بتغيير أي مجال من مجالات البطاقة باستثناء المعرف ، بما في ذلك Track.

لنقل البطاقة إلى مسار آخر ، اتصل بطلب http:



يفهم FastReport في أي عمود لوضع هذه البطاقة باستخدام برنامج نصي مضمن في التقرير:

  if (string.Compare(track,"Doing",false)==0) { Shape1.Left = Units.Centimeters * 6.75F; } else if (string.Compare(track,"Done",false)==0) { Shape1.Left = Units.Centimeters * 13.25F; } else { Shape1.Left = 0; } 

إذا قررت إضافة أعمدة ، فقم بتغيير البرنامج النصي بحيث تتطابق المسافة البادئة للبطاقة مع اسم المسار الجديد. نتيجة لذلك ، نحصل على:



لتلخيص ما يجب القيام به

  1. تنزيل عرض FastReport التجريبي
  2. قم بتنزيل تقرير كانبان الجاهزة
  3. نخلق لوحة واحدة على الخادم
  4. نخلق وظيفتين لإدارة البطاقات

شيء مفيد في المشاريع ، إذا كنت تستخدم الكود ، يمكنك التكيف بسرعة مع المهام الخاصة بك. في المقالات التالية ، سأعرض كيفية وضع تقرير على الموقع حتى لا أزعج إصدار سطح المكتب على الإطلاق. سيكون التقرير متاحًا على الأجهزة اللوحية والهواتف المحمولة لمديري المشاريع اللطيفين :) ، ترقبوا ...

تحميل تقرير كانبان

Source: https://habr.com/ru/post/ar472012/


All Articles