Kanban in einer halben Stunde

Zunächst definiere ich die Zielgruppe des Artikels. In diesem Artikel geht es nicht darum, wie Kanban funktioniert. Dieser Artikel richtet sich an diejenigen, die wissen, wie man mit dieser Technologie arbeitet und schnell und ohne großen Aufwand ein Tool erstellen möchten, mit dem Sie das Kanban-Board visualisieren und damit arbeiten können. Da unser Budget minimal ist, wenn nicht null, werden wir versuchen, alles mit minimalen Mitteln zu lösen. Wir benötigen eine Datenbank zum Speichern von Informationen, ein Whiteboard-Visualisierungstool und zwei Funktionen:

  • Erstellen Sie eine Karte;
  • Ändern Sie die Karte und bewegen Sie sie entlang der Spuren.

Um die Entwicklung zu minimieren, wird das Starten der Ausführung von Funktionen mithilfe von http-Anforderungen ausgeführt. Wenig später werde ich eine Weboberfläche erstellen, die in einem anderen Artikel angezeigt werden kann (sofern kein Link vorhanden ist).

Ich glaube, dass ich ein Board mit den folgenden Tracks haben werde (Sie können Ihre Konfiguration angeben):


Als Datenbank können Sie alles nehmen, was Sie zur Hand haben. Ich werde MS SQL nehmen und nur eine Tabelle erstellen (in meinem Fall drehen sich eine Reihe solcher Datenbanken im Unternehmen, sodass ein Tablet das Wetter nicht beeinflusst).

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() ) 

Wie Sie der Definition entnehmen können, nummeriere ich die Aufgaben automatisch in der Reihenfolge der Nummern 1, 2, 3 ... Trennen Sie Aufgaben in Spuren - Spur. Projekte - Projekt. Geben Sie den Künstler an - Arbeiter. Behalten Sie eine kurze Beschreibung in - Beschreibung und zwei Daten bei: CrtDate - Erstellungsdatum, UpdDate - Datum der letzten Aktualisierung der Aufgabe, z. B. Verschieben zu dieser Spur.

Wir werden die Karte mit dem FastReport Desktop-Berichtsgenerator visualisieren. Ein Link zu den Codes und der Berichtsdatei befindet sich am Ende des Artikels. Die Demo ist kostenlos, um solche Aufgaben abzudecken, ist sie sehr funktional. Laden Sie den Bericht herunter und öffnen Sie ihn im Designer



Alles, was Ihnen nicht gefallen hat, ändern Sie nach eigenem Ermessen. Fügen Sie beispielsweise neue Titel usw. hinzu. Denken Sie daran, den Bericht an Ihre Datenbank anzupassen.



Das Board ist fertig. Erstellen Sie nun die erste Aufgabe



Zu diesem Zweck implementieren wir in Azure eine Funktion, die einen neuen Datensatz in die Tabelle einfügt

 #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}"); } 

Vergessen Sie nicht, Ihren Benutzernamen und Ihr Passwort anzugeben, um eine Verbindung zur Datenbank herzustellen. Öffnen Sie ein Programm, das Webanfragen senden kann. Ich nehme Postbote. Geben Sie die Adresse des Links ein und füllen Sie die Body Card im JSON-Format aus. Die Anfrage wird bei Wiederverwendung gespeichert. Wir senden eine Anfrage. Wenn alles erfolgreich ist, erhalten wir das Datum und die Uhrzeit, zu der die Karte auf dem Server erstellt wurde.



Führen Sie den Bericht in FastReport aus:



Erstellen Sie eine Funktion in Azure, um eine Karte zu ändern oder zu verschieben

 #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}"); } 

Mit seiner Hilfe werden wir jedes Feld der Karte außer ID ändern, einschließlich Track.

Rufen Sie die http-Anfrage auf, um die Karte auf einen anderen Titel zu verschieben:



FastReport versteht mithilfe eines in den Bericht integrierten Skripts, in welcher Spalte diese Karte platziert werden soll:

  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; } 

Wenn Sie Spalten hinzufügen möchten, ändern Sie das Skript so, dass der Einzug der Karte mit dem Namen des neuen Titels übereinstimmt. Als Ergebnis erhalten wir:



Um zusammenzufassen, was zu tun ist

  1. Laden Sie die FastReport-Demo herunter
  2. Laden Sie den vorgefertigten Kanban-Bericht herunter
  3. Wir erstellen eine Platte auf dem Server
  4. Wir erstellen zwei Funktionen zum Verwalten von Karten

Nützlich für Projekte: Wenn Sie den Code verwenden, können Sie sich schnell an Ihre Aufgaben anpassen. In den folgenden Artikeln werde ich zeigen, wie Sie einen Bericht auf der Website platzieren, damit ich mich überhaupt nicht mit der Desktop-Version beschäftige. Der Bericht wird auf Tablets und Handys cooler Projektmanager verfügbar sein :), bleiben Sie dran ...

Laden Sie den Kanban-Bericht herunter

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


All Articles