Konfiguracja sprzętu i oprogramowania

Tworzenie schematów blokowych online rysuje io. Historia pojawienia się języka Io

Witam, drogi Habrazhitelu. Przedstawiam Państwu tłumaczenie artykułu Z Draw.io do aplikacji Vue.js autorstwa Francesco Zuppichiniego.


To moja pierwsza publikacja na temat Habré i postanowiłem zacząć od przetłumaczenia artykułu o fajnym narzędziu, które pozwala wygenerować aplikację Vue.js z diagramu UML.
Zdziwiony? Byłem po prostu zdumiony, kiedy się na nią natknąłem.


Oczywiście, jak w każdej wersji beta, jest nad czym popracować. Na przykład najpierw skontaktowałem się z autorem i powiedziałem, że chcę wprowadzić poprawki w strukturze szablonu komponentów i nazewnictwa ścieżek. Autor skontaktował się w ciągu godziny, opublikował kod na GitHub i napisał mały samouczek. Po akceptacji PR uzyskano zgodę na przetłumaczenie artykułu wraz z linkiem do oryginału.


Kogo to ciekawe - pytam pod kat.

Od Draw.io do aplikacji Vue.js


Tworzenie aplikacji powinno być tak proste, jak rysowanie wykresu w draw.io
Francesco Saverio

Co jeśli powiem ci, że możesz to zmienić:






Rezultatem jest projekt Vue.js ze wszystkimi plikami i importami, których potrzebujesz, aby zacząć tworzyć swój fajny produkt. Fajnie, tak?


Zrobiłem krótki film demonstracyjny, który możecie obejrzeć tutaj:


Aplikacja internetowa to tylko wykres

Każdą aplikację internetową można przedstawić w formie wykresu
Pomyślmy trochę. Kiedy używasz frameworka takiego jak React, Angular lub Vue, zawsze masz jeden główny komponent.


W naszym przykładzie głównym komponentem jest komponent Aplikacja, wszystko inne jest tylko węzłem wykresu. Możemy zidentyfikować na pierwszym poziomie Dom oraz węzły indeksowe jako bezpośrednie dzieci Aplikacja.


Powszechnym standardem w tworzeniu aplikacji internetowych jest przechowywanie komponentów w opartej na wykresie strukturze katalogów. Dlatego dla każdego komponentu tworzony jest zwykle katalog o tej samej nazwie, w którym znajduje się sam komponent i wszystkie jego elementy podrzędne.


Na przykład, Indeks jest pierwiastkiem skomponowanego przez siebie podgrafu, użytkownik oraz Poczta. Dlatego sensowne jest naśladowanie tej abstrakcji w strukturach aplikacji.




Daje to dwie korzyści: skalowalność, ponieważ podgrafy są niezależne, oraz łatwe zrozumienie struktury i logiki aplikacji.


Co więcej, zawsze można zobaczyć ogólna struktura aplikacji po prostu patrząc na wykres.

Od wykresu do aplikacji

Powiedzieliśmy więc, że każda aplikacja internetowa jest tak naprawdę wykresem, więc możemy je z niego wygenerować.


W końcu każdy plik, który zaczyna się od wykresu, jest prosty. Wystarczy znaleźć przecięcie drzewa i utworzyć każdy plik w jego lokalnym katalogu głównym i można to zrobić rekurencyjnie.


Problem w tym, że wiemy, że we współczesnych aplikacjach webowych komponenty importują i wykorzystują inne komponenty. Dlatego musimy powiązać każdą z nich z ich zależnościami i stworzyć dynamiczny szablon oparty na aktualnym języku programowania, który zawiera poprawną składnię do ich importowania do środka.


W JavaScript pliki są importowane w następujący sposób:


importuj włochy z "włoch" // importuj cały moduł importuj ( Spaghetti) z "włoch" // importuj pojedynczą jednostkę we włoszech

Aby przejść od wykresu do aplikacji, musimy stworzyć każdy plik, umieścić go we właściwej pozycji na podstawie samego wykresu i wyświetlić poprawny szablon importu zależności

Drawio2Vuejs

Stworzyłem pakiet, który pozwala narysować aplikację w draw.io i użyć wyeksportowanego pliku xml do stworzenia aplikacji Vue.js. Nazywa się to graph2app-drawio2vuejs.


Pakiet można znaleźć tutaj:



Właściwie to nie jest nowy pomysł, opracowałem jakiś czas temu sposób na zrobienie prawie tego samego za pomocą Pythona:



Pamiętaj jednak, że to nowa wersja pakiet npm jest znacznie lepszy.


Przede wszystkim zainstaluj pakiet globalnie za pomocą npm:


$ npm i -g graph2app-drawio2vuejs

Teraz możesz go używać w terminalu za pomocą polecenia:


$drawio2vuejs

Ale oczywiście musisz przekazać wiele argumentów:


$ drawio2vuejs --help Użycie: drawio2vuejs scaffold Aplikacja Vuejs z Draw.io Opcje: -V, --version wyświetla numer wersji -d, --dist Miejsce docelowe wyjścia -x, --xml xmlPath -h, --help wyświetla informacje o użyciu

Pamiętaj, aby przekazać ścieżkę do pliku xml draw.io.


Czas malować! Przejdź do draw.io , wybierz UML na lewym panelu i kliknij Obiekt:




Teraz możesz zacząć od utworzenia pierwszego węzła. Pamiętaj, że będzie to Twój główny komponent. W moich przypadkach składnik główny zawsze pierwszy węzeł co pokazano na schemacie.




Następnie, w zależności od aplikacji, którą chcesz utworzyć, możesz dodać kolejny węzeł.




Teraz chcemy Dom był element potomny Aplikacja. Więc kliknij Dom i użyj strzałki, aby połączyć się Aplikacja.





A jeśli my też chcemy? Aplikacja import Dom jako zależność? naciskać użyj strzałki w sekcji UML po lewej stronie i umieść go z Aplikacja v Dom.




Dobry! Utworzyłeś swój pierwszy wykres! Użyjmy go do stworzenia na jego podstawie aplikacji Vuejs.


Powiedzieliśmy, że potrzebujemy pliku xml więc wyeksportuj to bez kompresji. Kliknij Plik > Eksportuj jako > XML > Skompresowany (brak).


Teraz utwórz podstawową aplikację Vue.js za pomocą wiersza poleceń Vue:


$ vue init aplikacja webpack

Gdy to zrobisz, jesteśmy gotowi do wygenerowania aplikacji z wykresu:


$drawio2vuejs --xml= odległość=

Dla mnie polecenie to:


$ drawio2vuejs --xml=/Użytkownicy/VaeVictis/Desktop/app.xml --dist=/Użytkownicy/VaeVictis/Desktop/app/src

Jeśli wszystko działa poprawnie, powinieneś zobaczyć następujący wynik:



Plik app.vue zostanie zaktualizowany tak, jak już tam był, dodając poprawny import dla Dom. Zostanie również utworzony nowy komponent Dom. Jeśli otworzymy app.vue, powinniśmy zobaczyć:



Komponent został zaimportowany poprawnie, a folder Dom z plikiem home.vue został stworzony poprawnie!

graph2app

Pakiet drawio2vuejs opracowany przy użyciu innego opracowanego przeze mnie pakietu: graph2app.



Niedługo napiszę artykuł o tym, jak zastosować moduł za pomocą trzech części:

  • GraphBuilder

Aplikacja, gdzie jest główna logika, tworzy katalog i pliki z grafu. Wykres wykonany przy użyciu instancji GraphBuilder. W naszym przypadku stworzyłem DrawIoGraphBuilder, który rozszerza go o parsowanie pliku XML z draw.io.
graph2app-drawio-graph-builder


Deweloperzy będą mogli rozszerzyć instancję bazową do analizy grafów o inne typy interfejsów.


plik jest abstrakcją węzłów na grafie. on ma próbka Z którego generowany jest komponent. Tak więc, kiedy graph2app pobiera wykres, potrzebuje również instancji plik aby wywołać na nim metodę render i poprawnie zapisać plik.



Jak widać, pakiet ma modułowa konstrukcja. Moglibyśmy użyć tego samego DrawIoGraphBuilder z inną instancją plik na przykład do tworzenia aplikacji React z tego samego wykresu draw.io.

Wniosek

Mam nadzieję, że spodoba Ci się ten artykuł. Mocno wierzę, że wizualizacja aplikacji może poprawić wydajność. Biblioteka jest wciąż w fazie beta i wymaga pewnych ulepszeń. Myślę, że ludziom ten pomysł się spodoba i przyczynią się do rozwoju.


Daj mi znać swoją opinię. Dziękuję za zainteresowanie.


Francesco Saverio

Tagi: Dodaj tagi

Draw.io- Darmowa aplikacja, przeznaczony do modelowania diagramów i schematów blokowych procesów biznesowych. Istnieje możliwość integracji z Google Docs, Dropbox, OneDrive, JIRA, Confluence, Chrome i GitHub. Dodatek Confluence Server i JIRA Cloud są dodatkami płatnymi. Wersja online do synchronizacji z Dyskiem Google jest oferowana w 2 wersjach - z obsługą Google Apps i bez niej. Oprócz wersji internetowej dostępny jest instalator na komputery PC, który obsługuje systemy Windows, MacOS i Linux.

Aplikacja przyda się menedżerom i kadrze kierowniczej firm, którzy potrzebują narzędzia do budowania diagramów procesów biznesowych. Usługa przeznaczona dla profesjonalistów, których działalność związana jest z tworzeniem prezentacji i baz danych, budową schematów inżynierskich i sieciowych, projektowaniem oprogramowania.

Za pomocą edytora możesz tworzyć dowolne schematyczne obrazy - z diagramów obwody elektryczne do struktur modeli biznesowych. Wśród możliwości - budowa diagramów, wykresów i modeli UML. W bibliotece kształtów znajdują się dziesiątki kształtów pogrupowanych w kategorie. Obiekty można formatować poprzez zmianę czcionek, koloru, gradientu, grubości linii, poziomu przezroczystości. Dzięki możliwości synchronizacji z Dyskiem Google kilku użytkowników może jednocześnie pracować na dokumentach. Gotowe obrazy można zapisać na dysku twardym komputera lub wstawić do wiki i blogów. Dostępne formaty eksportu to PDF, GPG, SVG, XML i JPG.

Kluczowe cechy

  • Bezpłatna integracja z Usługi Google
  • Płatna integracja z Confluence i JIRA Cloud
  • Klient HTML z obsługą IE 6-8
  • Wsparcie dla smartfonów i tabletów
  • Eksportuj dokumenty do Formaty PDF, GPG, SVG, XML i JPG
  • Aplikacja offline dla systemów Windows, MacOS i Linux
  • Obsługa 27 języków

Io - kompaktowy, obiektowy język programowania

Część 1. Przegląd funkcji i składni języka Io

Seria treści:

W grupie języków opartych na paradygmacie programowania obiektowego Io wyróżnia się prostotą i zwięzłością. Nie ma idealnych programów, które byłyby całkowicie wolne od wad, zwłaszcza jeśli chodzi o implementację języka programowania. Dlatego konieczne jest dostatecznie szczegółowe zbadanie możliwości i cech dowolnego języka programowania (w tym przypadku Io), a także obszarów jego zastosowania, przed ostatecznym osądzeniem jego konieczności, wydajności, wygody dla programista itp.

Historia pojawienia się języka Io

Język Io pojawił się w 2002 roku, kiedy jego autor Steve Dekorte, próbując lepiej zrozumieć zasady funkcjonowania i implementację języków programowania, postanowił połączyć teorię z praktyką i napisać własny, prosty i zwięzły język. Decort zaprojektował Io jako czysty, oparty na prototypach, dynamicznie typowany język obiektowy, który eliminuje rozróżnienie między „klasą” a „instancją”. Wikipedia odnotowuje wpływ na Io języków takich jak Smalltalk (zasada „wszystko jest przedmiotem” i pisanie dynamiczne), Self i NewtonScript ( model obiektowy, oparty na prototypach), Lisp (równoważność instrukcji i danych w kodzie programu), a także Lua i Act1.

Informacje ogólne

Kod programu Io jest tłumaczony i wykonywany za pomocą kompaktowego, wysoce przenośnego maszyna wirtualna. Pakiety Io dla różnych platform znajdują się na jego stronie internetowej. Język Io jest rozpowszechniany na warunkach licencji BSD/MIT.

Główne właściwości podany język podkreślane przez samego autora to koncepcyjna prostota i zwięzłość, embeddowalność (umiejętność łączenia z kodem napisanym w innych językach) i rozszerzalność, zdolność do dynamicznej zmiany obiektów wewnętrznych w czasie wykonywania, introspekcji i realizacji koncepcji paralelizmu.

W Io wszystkie encje są obiektami, które mają zdolność do zmiany podczas wykonywania programu. Kod dowolnego programu składa się z wyrażeń, które można również modyfikować podczas wykonywania programu. Z kolei wyrażenia są w rzeczywistości instrukcjami przekazywania wiadomości. Zaimplementowano mechanizm zakresów kontekstowych obiektów na poziomie funkcji i bloków kodu. Aktorzy służą do zarządzania obliczeniami równoległymi.

Wykonanie programu

W programach Io obecność funkcji nie jest wymagana. Główny() lub jakiś specjalny obiekt, od którego powinno rozpocząć się wykonanie. Tak więc programy Io można do pewnego stopnia uznać za skrypty.

Uruchamianie programu od wiersz poleceń odbywa się w następujący sposób:

io projekty/io/my_first_prog.io

Możesz także pracować w trybie interaktywnym interpretera Io, jak pokazano na Listingu 1.

Listing 1. Interaktywne korzystanie z interpretera Io
$ io Io 20070410 Io> "To interpreter Io" println To interpreter Io ==> To interpreter Io Io>

W trybie interaktywnym wyświetlany jest nie tylko wynik wykonania wprowadzonego wyrażenia, ale także wartość zwracana przez to wyrażenie, oznaczona przedrostkiem „ ==> ". W tym przypadku wynik wykonania wyrażenia jest taki sam jak wartość zwracana.

Należy zauważyć, że w trybie interaktywnym wprowadzone wyrażenia są wykonywane w ogólnym kontekście najwyższego poziomu odpowiadającego obiektowi o nazwie Lobby.

Listing 2. Zawartość kontekstu najwyższego poziomu programu Io
$io Io 20070410 Io> print Object_0x9898a88: Lobby = Object_0x9898a88 Protos = Object_0x9898550 args = metoda(...) exit = metoda(...) forward = metoda(...) launchPath = "/home/alexs/projects/io " ==> Object_0x9898a88: Lobby = Object_0x9898a88 Protos = Object_0x9898550 args = metoda(...) exit = metoda(...) forward = metoda(...) launchPath = "/home/alexs/projects/io" Io>

W trybie interaktywnym możesz także uruchamiać programy, które są przechowywane w oddzielne pliki jak poniżej:

doFile("moj_pierwszy_prog.io")

Określony program będzie domyślnie wykonywany w kontekście tego samego obiektu lobby. Jeżeli konieczne jest wykonanie wczytanego programu w kontekście jakiegoś innego obiektu, to nazwa tego obiektu jest podawana przed wywołaniem metody doPlik(), a w języku Io do obiektu przesyłana jest wiadomość:

myMainObject doFile("moj_pierwszy_prog.io")

Składnia języka Io

Pierwszą rzeczą, która przykuwa Twoją uwagę, gdy zapoznasz się ze składnią języka Io, jest brak zastrzeżonych słów kluczowych i operatorów znanych z innych języków. Źródło Każdy program jest napisany wyłącznie za pomocą wyrażeń składających się z komunikatów, z których każdy jest obiektem dostępnym (i modyfikowalnym) w dowolnym momencie wykonywania programu.

Dla większej przejrzystości można użyć nieścisłej notacji Backus-Naur (litery są pisane w cudzysłowie), pokazanej na Listingu 3.

Listing 3. Notacja języka Io
wyrażenie::= ( wiadomość | terminator ) terminator::= "\n" | ";" komunikat::= symbol [ argumenty ] symbol::= identyfikator | numer | argumenty ciągów::= "(" [wyrażenie [ ( "," wyrażenie ) ] ] ")"

Io obsługuje trzy najczęściej używane formaty komentarzy: //, /* */ oraz # . Sposoby ich praktycznego zastosowania są oczywiste.

Komunikat może zawierać listę argumentów, które są przekazywane jako wyrażenia zwykłe i są oceniane przez obiekt odbierający komunikat.

Listing 4. Używanie wiadomości do pętli
Io> for(i, 1, 5, i println) 1 2 3 4 5 ==> 5 Io>

Wyrażenia warunkowe można również umieszczać na liście argumentów, jak pokazano na listingu 5.

Listing 5. Używanie warunków warunkowych w wiadomości
Io> beta:= 7 ==> 7 Io> alfa:= if(beta > 5, beta, 5) ==> 7 Io>

Należy jeszcze raz zauważyć, że w pierwszym przypadku dosłowne dla aw drugim przypadku dosłowne Jeśli nie są specjalnymi formularzami ani zarezerwowanymi słowami kluczowymi, ale po prostu wiadomościami.

Operatory dostępne w języku Io

Operator to wiadomość, której nazwa nie zawiera znaków alfanumerycznych (z wyjątkiem znaków interpunkcyjnych i podkreślenia). Operatory obejmują również literały: i, lub, powrót. Przykład użycia operatora:

1 + 2

Zgodnie z koncepcją języka Io wyrażenie to kompiluje się w komunikat:

1 +(2)

To znaczy wartość liczbowa 1 wiadomość została wysłana” + " z argumentem 2 .

W wyrażeniach złożonych pierwszeństwo standardowych operatorów arytmetycznych odpowiada pierwszeństwu analogicznych operatorów arytmetycznych.

Zdefiniowane przez użytkownika instrukcje są wykonywane od lewej do prawej.

W Io istnieją trzy operatory przypisania:

  • ::= tworzy slot, tworzy setter dla tego slotu i przypisuje wartość do tego slotu;
  • := tworzy gniazdo i przypisuje mu wartość;
  • = jeśli slot istnieje, to jest mu przypisywana wartość, in Inaczej zgłaszany jest wyjątek.

Operatory przypisania są konwertowane na odpowiednie komunikaty podczas kompilacji, jak pokazano poniżej:

beta::= 7 kompiluje do newSlot("beta", 7) beta:= 7 kompiluje do setSlot("beta", 7) beta = 7 kompiluje do updateSlot("beta", 7)

Wymienione powyżej metody komunikatów można przesłonić (to znaczy zastąpić własnymi metodami). W szczególności dla obiektów lokalnych metody aktualizacjaSlot() są przepisywane w taki sposób, że nie są zgłaszane żadne wyjątki, gdy wartości są przypisane do slotów tych obiektów lokalnych, które są wyraźnie określone.

Praca ze strunami

Łańcuchy w Io są reprezentowane jako sekwencje znaków ujęte w podwójne cudzysłowy. Jeśli sam znak podwójnego cudzysłowu jest zawarty w łańcuchu, musi być poprzedzony ukośnikiem odwrotnym, na przykład:

string:= "Io nie ma pojęcia \" słowo kluczowe\", takie jak."

Linia może zawierać standardowe znaki Esc (\n, \t, \a itd.):

string:= "To jest pierwsza linia.\nTo jest druga linia.\nTo jest trzecia linia."

Aby uniknąć znaków uciekających i pisać wielowierszowe bloki tekstu w ich naturalnej formie, musisz zaczynać i kończyć taki blok trzema podwójnymi cudzysłowami, jak pokazano poniżej:

longstring:= """Język Io opiera się na koncepcji "wszystko jest obiektem". Kod źródłowy to wyrażenia złożone z komunikatów. Operatory to także komunikaty."""

Wartości liczbowe

Podczas zapisywania liczb dozwolone są prawie wszystkie standardowe formaty, a Io obsługuje również zapisywanie wartości liczbowych w notacji szesnastkowej.

Listing 6. Formaty liczb obsługiwane w Io
Io> 12 + 18 ==> 30 Io> 3.14 * 2 ==> 6.28000000000000002 Io> .987 + 11.003 ==> 11.9900000000000002 Io> 2e4 - 2e3 ==> 18000 Io> 1.655e-3 - 5.112e-4 > 0.0011438 Io> 0xFF + 0x3 ==> 258 Io> 0XE - 0xa ==> 4 Io>

Wyrażenia arytmetyczne są oceniane według metody tradycyjnej, mimo że operatory oznaczające operacje arytmetyczne są konwertowane wewnątrz interpretera na wywołania odpowiednich metod (mechanizm ten jest ukryty przed użytkownikiem):

Io> (9+5)*10-(2+3)*5 ==> 115

Do przeniesienia wyniku obliczeń na jakiś obiekt stosuje się metodę doString(), jak pokazano na liście 7.

Listing 7. Wykorzystanie metody doString()
Io> myNewObject:= Klon obiektu ==> Object_0x99336f0: Io> myNewObject doString("(18+25)*33") ==> 1419 Io>

Jeśli przed wywołaniem metody doString() nazwa obiektu nie jest określona, ​​wtedy obliczenie i wyprowadzenie wyniku jest wykonywane w bieżącym kontekście.

Przykład programu Io

W większości przypadków kod źródłowy programu, który nie jest zbyt duży i bez zbędnych zawiłości logicznych, pomaga lepiej zrozumieć składnię języka programowania. Uproszczona symulacja transakcji z osobistym kontem bankowym jest odpowiednia dla pierwszego doświadczenia. Kod źródłowy pokazano na listingu 8.

Listing 8. Transakcje na koncie osobistym
Konto:= Klon obiektu Saldo konta:= 0 Wpłata na konto:= metoda(kwota, saldo = saldo + kwota) Wypłata z konta:= metoda(kwota, saldo = saldo - 1.005 * kwota) konto:= Wpłata na konto klonowane(5000.00) wypłata z konta(250,00) saldo konta printlnIo> doFile("moje_acc.io") 4748.75 ==> 4748.75 Io>

Ten program wykorzystuje prawie wszystkie elementy składni opisane w poprzednich rozdziałach - komunikaty, operatory przypisania i arytmetyczne, wartości numeryczne. Tworzenie i wykorzystanie obiektów, slotów i metod zostanie omówione w drugim artykule z cyklu oraz w ten moment wystarczy je zrozumieć na poziomie intuicyjnym.

Struktury kontrolne

Aby zapewnić działanie logicznych struktur kontrolnych w języku Io, definiuje się specjalne singletony (singleton) prawda(prawda) i fałszywy(fałsz) oraz specjalny singleton zero, co oznacza niezdefiniowaną wartość („brak wartości”).
Operacje logicznego porównania są wykonywane przy użyciu metod: ==!=><>=<= , które wracają prawda lub fałszywy. Ponadto istnieje metoda porównywać(), który zwraca wartości -1 (mniej), 0 (równe) lub 1 (większe niż) i wykorzystywane do implementacji specjalistycznych metod porównywania wartości.

metoda Jeśli() jest używany w następującej formie:

Jeśli(<условие>, [, w przeciwnym razie ]) if(mianownik == 0, "Błąd" println)

Oto część opcjonalna w przeciwnym razie pominięty. Wyrażenie warunkowe jest uważane za prawdziwe, jeśli jego wynikiem jest prawda, a jeśli wyrażenie warunkowe daje wynik fałszywy lub zero, to jest fałszywe.

metoda Jeśli() zwraca jako wartość wiadomość obliczoną z wyniku sprawdzenia, więc poniższe wyrażenia są równoważne:

jeśli (suma< 100, x:= sum, x:= 100) x:= jeśli(suma< 100, sum, 100)

Wyrażenia warunkowe można również pisać w bardziej rozwiniętej formie:

jeśli (suma< 100) then(x:= sum) else(x:= 100)

Ponadto obsługiwana jest metoda zagnieżdżania wyrażeń warunkowych elseif():

jeśli (suma< 10) then(x:= 0) elseif(sum < 10) then(x:= 1) else (x:= sum)

Obsługiwane są również metody w stylu Smalltalk: Jeśli prawda(), jeśliFałsz(), jeśliNil() oraz jeśli NieZerowe(), pozwalający na pisanie wyrażeń w postaci:

(suma< 100) ifTrue(x:= sum) ifFalse(x:= 100)

Tutaj należy zwrócić szczególną uwagę na fakt, że początkowe wyrażenie warunkowe musi być zapisane w nawiasach.

Cykle

Najprostszym typem pętli jest bezwarunkowa pętla nieskończona, zaimplementowana metodą pętla():

loop("nieskończona pętla" println)

Jeżeli pętlę trzeba powtórzyć ściśle określoną ilość razy bez sprawdzania jakichkolwiek warunków, to stosuje się metodę powtarzać(), jak pokazano na listingu 9.

Listing 9. Korzystanie z metody repeat()
Io> 3 repeat("Ostrzeżenie!" println) Ostrzeżenie! Ostrzeżenie! Ostrzeżenie! ==> Ostrzeżenie! Io>

Cykl, Dokładna ilość powtórzeń, których z góry nie wiadomo, ale określony jest pewien warunek, pod jakim muszą zostać wykonane iteracje, zapisuje się metodą dopóki():

dopóki(<условное_выражение>, <сообщение>)

Cechą tego cyklu jest to, że jeśli konieczne jest zapisanie więcej niż jednej wiadomości w treści cyklu, wiadomości te powinny być oddzielone od siebie symbolem przejścia do Nowa linia, a nie przecinek, w przeciwnym razie pętla nie będzie działać poprawnie. Ponadto zaleca się pozostawienie wyrażenia warunkowego w pierwszym wierszu i zapisanie każdej wiadomości w ciele pętli w osobnym wierszu. Ten formularz, pokazany na listingu 10, będzie wyglądał bardziej znajomo.

Listing 10. Przykład pętli while
Io> a:= 10 ==> 10 Io> while(a< 20,)->a println)-> a = a + 2)->) 10 12 14 16 18 ==> 20 Io>

metoda dla() pozwala na zorganizowanie cyklu z określonymi wartościami brzegowymi oraz z zadanym krokiem licznika. Ogólna postać tej pętli wygląda tak:

dla(<счётчик>, <начальное_значение>, <конечное_значение>, [<шаг>,] <сообщение>).

Jeżeli krok zmiany licznika nie jest określony, to domyślnie przyjmowana jest wartość kroku równa 1.

Listing 11. Przykład organizacji dla pętli
//w tej pętli krok zmiany licznika nie jest określony Io> for(i, 0, 3, i println) 0 1 2 3 ==> 3 //w tej pętli jest określony krok zmiany licznika Io> for(i, 0, 10, 3, i println) 0 3 6 9 ==> 9 Io>

W treści dowolnej z powyższych pętli możesz użyć metod do zmiany kolejności wykonywania: kontyntynuj pozwala zignorować resztę ciała pętli i rozpocząć nową iterację, oraz złamać natychmiast kończy całą pętlę.

Listing 12. Sterowanie kolejnością wykonywania pętli
Io> for(i, 1, 10,)-> if(i == 2, kontynuuj))-> if(i > 7, przerwa))-> i drukuj)->) 134567==> nil Io>

Należy zauważyć, że w przypadku niestandardowego zakończenia pętli (za pomocą złamać) zwracana wartość jest uważana za niezdefiniowaną (oznaczoną jako zero).

metoda powrót pozwala wyjść z dowolnej części bloku kodu lub treści metody z wymaganą zwracaną wartością, na przykład:

Listing 13. Użycie metody return do zwrócenia wartości z metody
Io> test:= method("pierwszy" println; "drugi" println; return "wyjście"; "trzeci" println) ==> method("pierwszy" println; "drugi" println; return "wyjście"; "trzeci" println) Io> test pierwsza sekunda ==> wyjście Io>

Język Io również implementuje pętlę dla każdego, ale jego praktyczne zastosowanie różni się nieco od korzystania z tradycyjnych cykli, dlatego cykl ten zostanie omówiony w przyszłych artykułach.

Wniosek

Język Io jest czystym językiem obiektowym, to znaczy implementacją pojęcia „wszystko jest obiektem”. Jego składnia jest prosta i przejrzysta, choć na pierwszy rzut oka może wydawać się niezwykła. Io implementuje wszystkie de facto standardowe konstrukcje i operatory.

Pierwszy artykuł z opisanej serii Ogólna charakterystyka oraz składnię języka programowania Io. W drugim artykule przyjrzymy się systemowi obiektów języka, a w trzecim omówimy dodatkowe funkcje i możliwości Io.

Praca każdego inżyniera, informatyka, marketera, analityka biznesowego, menedżera wiąże się z koniecznością tworzenia różnych schematów, schematów blokowych i wykresów. Do tych celów świetnie sprawdza się usługa „losowania”, dostępna pod linkiem.

Jego główną zaletą jest to, że jest bezpłatny. Korzystanie z zasobu jest bezpłatne, co czyni go jeszcze przyjemniejszym. Ponadto, aby uzyskać pełną pracę, nie musisz się rejestrować i przechodzić żmudnego procesu autoryzacji na stronie.

Po wejściu strona główna wybierz ścieżkę do zapisania projektu. Ostateczne wyniki mogą być przechowywane w pamięci zdalnej - „chmurach” („Dysk Google”, „Dropbox”, „OneDrive”), w zasobie „GitHub”, na dysku twardym „Urządzenia” lub bezpośrednio w środowisku dla zarządzanie tworzeniem aplikacji internetowych i programów Trello.

Domyślnie pole wyboru jest zaznaczone, aby w przyszłości zapisać wybrane ustawienia.

Aby uprościć zadanie zapoznania się z możliwościami usługi online, zmieńmy język interfejsu, klikając „Język”.

Po ustawieniu wymaganego języka konieczne będzie ponowne załadowanie strony, aby zmiany zaczęły obowiązywać.

Przejdźmy teraz do tworzenia nowego projektu, dla którego klikamy przycisk „Utwórz nowy diagram”, po czym nastąpi przejście do graficznej części pracy.

Możesz otworzyć puste pole i samodzielnie stworzyć diagram lub skorzystać z biblioteki różnych szablonów graficznych. „Schematy Ishikawy” (aka „rybi ogon”), „Schematy opisu procesów biznesowych”, „Wykresy strukturalne”, „Schematy blokowe”, „ Obwody elektryczne”, „Bloki programu” - to tylko niewielka część tego, co jest już obecne jako puste miejsca.

Dużym zainteresowaniem użytkowników cieszy się możliwość opisywania procesów biznesowych za pomocą usługi draw.io.

Aby rozpocząć, wybierz „Puste wykresy” z kategorii szablonów „Podstawowe”.

Jako przykład opiszemy główne procesy biznesowe związane z pracą nowoczesnego, małego sklepu internetowego.

Do graficznej części pracy potrzebujemy sekcji „BPMN General” i „BPMN Events”.

Rozważając przykład, nie będziemy zagłębiać się w wąską specyfikę promocji sklepu, pracy dyrektora, optymalizatora wyszukiwarek, managera treści, Administrator systemu, które również są bezpośrednio zaangażowane w życie przedsiębiorstwa, a jako punkt wyjścia rozważymy otrzymanie zamówienia od klienta i kroki, jakie należy podjąć po stronie przetwarzania.

Stwórzmy na diagramie zdarzenie - odbiór wniosku do kierownika prowadzącego sklep internetowy, dla którego przeciągamy myszką ikonę koperty symbolizującą odbiór wniosku ( wiadomość przychodząca) i kontener „Zadania”, który opisuje odpowiedź na wywołanie.

Nawiążmy połączenie, umieszczając strzałkę między dwoma blokami.

Dla wygody korzystania z internetowego narzędzia draw.io istnieje: Górny panel kontrolka, zawierająca przyciski do anulowania akcji, skalowania, przewijania i zarządzania warstwami, a także najczęściej używane elementy (punkty kontrolne, strzałki łączące).

Dwukrotnym kliknięciem lewego przycisku myszy dokonamy edycji tekstu na bloku zmieniając nazwę „Zadanie” na „Sprawdzenie dostępności zamówionego towaru na magazynie”. To od tego kroku kierownik sklepu internetowego powinien rozpocząć analizę zamówienia, gdyż od tego zależą dalsze kroki w komunikacji z klientem.

Logiczne jest założenie, że kolejny blok powinien być warunkiem determinującym kolejność działań dla różnych wyników sprawdzania stanów magazynowych.

* Należy pamiętać, że procesy biznesowe są pisane nie na papierze, ale dla zwykłych ludzi, pracowników firmy. Im bardziej szczegółowe i szczegółowe badanie, tym mniej błędów pojawi się w przyszłości. 80% sukcesu jego realizacji zależy od ustalenia zadania.

Jeżeli towar jest na stanie, możesz przejść do „Sprawdzania poprawności danych wprowadzonych przez użytkownika”, jeśli nie, do „Określ dokładną datę dostawy”. Aby napisać komentarz nad dowolnym blokiem lub strzałką, należy wybrać zakładkę „Ogólne” i element „Tekst”. W tym przypadku są to wskazania kierunków „tak/nie”.

Przeanalizujmy gałąź ujemną i umieśćmy na diagramie wszystkie dalsze kroki działania.

Jeden blok pomocniczy „Skontaktuj się z dostawcą, zapytaj o dokładny czas dostawy”, dwa główne „Wybierz alternatywne opcje dla towarów, które są na stanie i mogą być oferowane jako zamiennik”, „Sprawdzenie poprawności uzupełnionych danych użytkownika” oraz blok komunikacji z klientem „Kontakt telefoniczny i omówienie szczegółów dostawy. Ważne jest, aby być przygotowanym z wyprzedzeniem na każdy wynik, a zatem wypracować alternatywy. W naszym przypadku stworzyliśmy proces biznesowy w serwisie draw.io związany z wyborem alternatyw, które pomogą zatrzymać klienta w przypadku niezgody na termin dostawy. Bloki pomocnicze są wyświetlane jako linia przerywana, dostępne w zakładce „BPMN General”.

Jeżeli sklep pracuje nad lojalnością swoich klientów, to możliwe jest dodanie jeszcze jednej blokady związanej z udzieleniem indywidualnego rabatu na alternatywny produkt, jeśli terminy ulegną opóźnieniu z winy sklepu internetowego (np. , pozostałe towary były wyświetlane niepoprawnie (na stronie "w magazynie" i faktycznie towar się skończył)).

Teraz pozostaje dodać jeszcze jeden warunek: „Klient zgadza się na zamówienie”. Na tym etapie rozstrzyga się o wyniku wszystkich czynności, bądź zamówienie przechodzi do realizacji, a następnie trafia do „Serwisu Dostaw”, lub kierownik zamyka zamówienie, proponując otrzymanie powiadomienia o przyjęciu towaru na stan magazynowy, kto opuścił aplikację.

W ten sposób spędziwszy zaledwie 5 minut czasu, opracowaliśmy procesy biznesowe w usłudze draw.io związanej z kierownikiem sprzedaży. Podobnie można sporządzić diagramy na osobnych arkuszach dla pozostałych działów zaangażowanych w działalność sklepu internetowego, a także podsumować wszystkie usługi firmy jako całość.

Aby w przyszłości otworzyć dokument wystarczy wejść na stronę serwisu i wybierając opcję „Otwórz istniejący diagram” odszukaj wcześniej zapisany projekt xml.

Oprócz wyników końcowych w określonym wcześniej formacie, istnieje możliwość eksportu diagramów i diagramów w formacie pdf i dokumenty html, a także w postaci zdjęć i Grafika wektorowa(SVG).

Ostatnio stało się możliwe pobranie draw.io jako programu na PC (działa na system operacyjny Windows, MacOs, Chrome OS, Linux), a także zainstalować jako aplikację mobilną działającą zarówno na iOS, jak i Androida.

W tym celu należy kliknąć przycisk „Zaawansowane” na panelu sterowania i wybrać „Pobierz” w otwartym menu.

Informacje przedstawione w recenzji w zupełności wystarczą, aby rozpocząć pracę nad projektem, niezależnie od tego, do jakiej branży, dziedziny działalności lub produkcji należy, czy jest to programowanie, administracja, projektowanie, zarządzanie, dystrybucja czy zaopatrzenie itp.

Jeśli napotkasz trudności, zawsze możesz zapoznać się z instrukcjami i oficjalną dokumentacją zamieszczoną na stronie internetowej serwisu.

W końcu znalazłem to, czego szukałem. Darmowe narzędzie do modelowania, które wspiera możliwości opisu procesów biznesowych - Draw.io

Draw.io to narzędzie do tworzenia diagramów i schematów blokowych online. Jednocześnie ogromna liczba szablonów, które pozwalają narysować to, czego dusza zapragnie. Narzędzia Draw.io bardzo przypomina MS Visio i prawdopodobnie do niego stworzona, jednak aplikacja z Program Microsoft płatne i serwis internetowy Draw.io- całkowicie za darmo, a co najważniejsze nie wymaga rejestracji.

Podobna funkcjonalność jest już w wersji chmurowej - to jednak system ten system płatne, choć abonament jest niedrogi, ale trudno konkurować z darmowymi.

Opinia o Draw.io

I chociaż w to narzędzie nie wszystko jest tak dobre pod względem metodycznym, że da się narysować, zwłaszcza ustalając z góry konwencję modelowania dla słuchaczy kurs treningowy. I choć narzędzie nie jest tak piękne, jak darmowe, to wdrożenie w chmurze czyni je konkurencyjnymi.

Aby stworzyć model blokowy online, wystarczy stworzyć nowy dokument w zestawie narzędzi.

W panelu obiektów, podobnie jak w MS Visio, należy wybrać kategorię i za pomocą kursora myszy przesunąć obiekt w pole modelu. Obiektów jest bardzo dużo, więc wystarczają one do stworzenia pełnoprawnego modelu procesów biznesowych (w przeciwieństwie do , w którym zestaw obiektów i modeli jest poważnie ograniczony).

Aby połączyć ze sobą obiekty modelu, musisz wybrać obiekt i przesunąć wskaźnik myszy na inny, po czym pojawi się zielona flaga, którą musisz przeciągnąć na obiekt.

Co najważniejsze, po stworzeniu modelu procesu biznesowego możliwy jest eksport na swój komputer w formacie obrazu (PNG, GIF, JPG, PDF) poprzez menu: Plik - Eksport.

No i oczywiście funkcja chmury – usługa Draw.io jest zsynchronizowana z Dyskiem Google, co umożliwia zapisanie projektu bezpośrednio na Dysku Google.

Ogólnie rzecz biorąc, narzędzie mi się podobało Draw.io całkiem odpowiedni do renderowania procesów biznesowych online. I chociaż w duże projekty na szczeblu federalnym prawie nie ma jeszcze konkurencji, dla małych firm opisujących swoje procesy biznesowe jest to całkiem odpowiednie narzędzie.

Podobał Ci się artykuł? Podziel się z przyjaciółmi!
Czy ten artykuł był pomocny?
tak
Nie
Dziekuję za odpowiedź!
Coś poszło nie tak i Twój głos nie został policzony.
Dziękuję Ci. Twoja wiadomość została wysłana
Znalazłeś błąd w tekście?
Wybierz, kliknij Ctrl+Enter a my to naprawimy!