SlideShare uma empresa Scribd logo
1 de 58
Introducing
  AlloyUI
  Diagram
  Builder
Eduardo Lundgren
   Liferay Inc.
  @eduardolundgren
Main points

1. What we needed
2. What we wanted to create
3. How we started
4. Architecture
5. Events
6. Serializing visual data (demo)
7. Real world applications (demo)
What’s AlloyUI?

• Provide a set of UI Widgets and
  Utilities on top of YUI3
What we needed
Liferay Portal
What we needed




•   How to explain complex ideas more effectively?
•   Build definitions visually for Liferay Workflow Engine
What we needed
What we wanted to create
The Goal: Diagram Builder
The Goal: Diagram Builder


• Intuitive drag-and-drop interface
• HTML5 and web standards (no flash)
• Support modern browsers and devices
• Balance between HTML v Graphic API
• Flexible and extensible API
How we started
How we started
      new A.DiagramBuilder(
      
 {
      
 
 availableFields: [ {...}, ... ],
      
 
 boundingBox: '#bbId',
      
 
 fields: [
      
 
 
 {
      
 
 
 
 name: 'Start',
      
 
 
 
 transitions: [ 'Task' ],
      
 
 
 
 type: 'start'
      
 
 
 },
      
 
 
 {
      
 
 
 
 name: 'Task',
      
 
 
 
 transitions: [ 'End' ],
      
 
 
 
 type: 'task'
      
 
 
 },
      
 
 
 {
      
 
 
 
 name: 'End',
      
 
 
 
 type: 'end'
      
 
 
 }
      
 
 ],
      
 
 render: true
      
 }
      );
How we started
      new A.DiagramBuilder(
      
 {
      
 
 availableFields: [ {...}, ... ],
      
 
 boundingBox: '#bbId',
      
 
 fields: [
      
 
 
 {
      
 
 
 
 name: 'Start',
      
 
 
 
 transitions: [ 'Task' ],
      
 
 
 
 type: 'start'
      
 
 
 },
      
 
 
 {
      
 
 
 
 name: 'Task',
      
 
 
 
 transitions: [ 'End' ],
      
 
 
 
 type: 'task'
      
 
 
 },
      
 
 
 {
      
 
 
 
 name: 'End',
      
 
 
 
 type: 'end'
      
 
 
 }
      
 
 ],
      
 
 render: true
      
 }
      );
How we started

   var availableFields = [
   
 {
   
 
 type: 'task',
   
 
 label: 'Task',
   
 
 iconClass: 'aui-diagram-node-task-icon'
   
 },
   
 {
   
 
 type: 'state',
   
 
 label: 'State',
   
 
 iconClass: 'aui-diagram-node-state-icon'
   
 },
      ...
   ];
Y.DiagramBuilder
How we started
How we started
          div.aui-diagram-builder-canvas
           svg/vml




                       new Y.Graphic(...)
How we started



          Available Fields
How we started



    Y.AvailableField
How we started


          Y.DiagramNode
How we started




            Inspector
How we started   Y.Connector
How we started




                 12KB
Architecture
Diagram Builder Architecture



     aui-diagram-builder
       aui-diagram-builder-base
       aui-diagram-builder-impl
Diagram Builder Architecture

      Y.Widget


Y.DiagramBuilderBase   Y.FieldSupport
                       ‣ addField(field, index);
                       ‣ removeField(field);
  Y.DiagramBuilder
Diagram Builder Architecture

      Y.Widget


Y.DiagramBuilderBase   Y.FieldSupport
                       ‣ addField(field, index);
                       ‣ removeField(field);
  Y.DiagramBuilder
Diagram Builder Architecture

      Y.Widget


Y.DiagramBuilderBase   Y.FieldSupport
                       ‣ addField(field, index);
                       ‣ removeField(field);
  Y.DiagramBuilder
Diagram Builder Architecture
                      Y.DiagramBuilder




                          Y.FormBuilder
Diagram Builder Architecture
                      Y.DiagramBuilder




                          Y.FormBuilder
Diagram Builder Architecture
                      Y.DiagramBuilder
Available Fields Architecture

              Y.Base


    Y.AvailableField
‣ draggable
‣ label                Y.AvailableField
‣ iconClass
‣ type
Available Fields Architecture

    var availableFields = [
    
 {
    
 
 type: 'task',
    
 
 label: 'Task',
    
 
 iconClass: 'aui-diagram-node-task-icon'
    
 },
    
 {
    
 
 type: 'state',
    
 
 label: 'State',
    
 
 iconClass: 'aui-diagram-node-state-icon'
    
 },
       ...
    ];
Node Architecture


           Y.DiagramNode
Node Architecture                    Y.Overlay

var availableFields = [

 {

 
 type: 'start',
                                  Y.DiagramNode

 
 label: 'Start',

 
 ...

 },

                               Y.DiagramNodeState

 {

 
 type: 'end',

 
 label: 'End',

 
 ...

 },
   ...
];                                   Y.DiagramStart

                                     Y.DiagramEnd
A.DiagramBuilder.types = {

 start: A.DiagramNodeStart,

 end: A.DiagramNodeEnd,             Y.DiagramJoin

 join: A.DiagramNodeJoin,

 ...                                Y.DiagramFork
};
                                     Y.DiagramTask

                                   Y.DiagramCondition
Node Architecture


   .yui3-widget .aui-diagram-node

    .aui-diagram-node-content


                  <svg:svg />
Node Architecture




A.DiagramNode.CIRCLE_POINTS: [ [35, 20], [28, 33], [14, 34], ...]
A.DiagramNode.DIAMOND_POINTS: [ [30,5], [35,10], [40,15], ...]
A.DiagramNode.SQUARE_POINTS: [ [5,5], [10,5], [15,5], ... ]
Connector Architecture   Y.Connector
Connector Architecture



                      Y.Base


                 Y.Connector
          ‣ p1
          ‣ p2
          ‣ draw();
Connector Architecture

                                                                            x

     p1 (x1, y1)




                                                       p2 (x2, y2)


                            Cubic Bézier
            <path d="M x1,y1 C x1,y1 x2,y2 c1x,c1y" stroke="lightblue" />

 y                            curveTo(...);
Connector Architecture

• Problem1: Position some element
  over the curve.
• Is there a way to get the curve points
  from SVG/VML path?
                    (x, y)?
                 Connector Name


   p1 (x1, y1)




                                  p2 (x2, y2)
Connector Architecture


• Solution: JavaScript Impl of Cubic
Bézier.
Connector Architecture

                    Bézier


Bernstein basis polynomial


     • The points “Pi” are called control points for the Bézier curve.
     • “t” varies from 0 to 1.




                              (Image from Wikipedia)
Connector Architecture
Cubic Bézier JavaScript Implementation:
  B1   =   function(t)   {   return   (t*t*t); },
  B2   =   function(t)   {   return   (3*t*t*(1-t)); },
  B3   =   function(t)   {   return   (3*t*(1-t)*(1-t)); },
  B4   =   function(t)   {   return   ((1-t)*(1-t)*(1-t)); }

  getCubicBezier = function(t, startPos, endPos, cp1, cp2) {
  
 var x = ...;
  
 var y = ...;
  
 return [x, y];
  }

  var centerXY = getCubicBezier(0.5, [x1, y1], [x2, y2], [cpx1, cpy1], [cpx2, cpy2]);


                                                               centerXY (50%)
                                                                Connector Name


                                      p1 (x1, y1)




                                                                                 p2 (x2, y2)
Connector Architecture
Cubic Bézier JavaScript Implementation:
  B1   =   function(t)   {   return   (t*t*t); },
  B2   =   function(t)   {   return   (3*t*t*(1-t)); },
  B3   =   function(t)   {   return   (3*t*(1-t)*(1-t)); },
  B4   =   function(t)   {   return   ((1-t)*(1-t)*(1-t)); }

  getCubicBezier = function(t, startPos, endPos, cp1, cp2) {
  
 var x = ...;
  
 var y = ...;
  
 return [x, y];
  }

  var centerXY = getCubicBezier(0.5, [x1, y1], [x2, y2], [cpx1, cpy1], [cpx2, cpy2]);


                                                               centerXY (50%)
                                 50%                            Connector Name


                                      p1 (x1, y1)




                                                                                 p2 (x2, y2)
Connector Architecture


• Problem2: Dynamic control points.




   p1 (x1, y1)




                          p2 (x2, y2)
Connector Architecture
Connector Architecture

• 8 pseudo-quadrants decides the new
               control points
                        2



                    3       1
                                    +

           4                    0




                3           1

                                    -
                        2
Connector Architecture


• Problem3: Preventing overlap.




    p1 (x1, y1)




                       p2 (x2, y2)
Connector Architecture


• Problem3: Preventing overlap.




    p1 (x1, y1)




                       p2 (x2, y2)
Connector Architecture


• Problem3: Preventing overlap.




    p1 (x1, y1)
                     d =   (x1 − x2 )2 + (y1 − y2 )2



                  d -> min           p2 (x2, y2)
Connector Architecture




              (demo)
Events
 • boundaryMouseEnter
• boundaryMouseLeave
• connectDrop
• connectEnd
• connectMove
• connectOutTarget
• connectOverTarget
• connectStart
Serializing visual data




                (demo)
Real world application




       Liferay Workflow Designer
                (demo)
Questions
Thank you!



•   Liferay Inc.
•   YUI Team
•   @natecavanaugh - nathan.cavanaugh@liferay.com
•   @jonmak - jonathan.mak@liferay.com
•   @bbasto - bruno.basto@liferay.com
References




•   Liferay Portal http://github.com/liferay/liferay-portal

•   AlloyUI http://github.com/liferay/alloy-ui

•   Wikipedia http://en.wikipedia.org/wiki/B%C3%A9zier_curve

•   Rob La Placa CSS cubic Bézier builder http://www.roblaplaca.com/examples/bezierBuilder/
Contact




•   E-Mail: eduardo.lundgren@liferay.com
•   Twitter: @eduardolundgren

Mais conteúdo relacionado

Mais procurados

I phone勉強会 (2011.11.23)
I phone勉強会 (2011.11.23)I phone勉強会 (2011.11.23)
I phone勉強会 (2011.11.23)Katsumi Kishikawa
 
How to build a html5 websites.v1
How to build a html5 websites.v1How to build a html5 websites.v1
How to build a html5 websites.v1Bitla Software
 
Exploring Canvas
Exploring CanvasExploring Canvas
Exploring CanvasKevin Hoyt
 
Functional "Life": parallel cellular automata and comonads
Functional "Life": parallel cellular automata and comonadsFunctional "Life": parallel cellular automata and comonads
Functional "Life": parallel cellular automata and comonadsAlexander Granin
 
The Ring programming language version 1.2 book - Part 35 of 84
The Ring programming language version 1.2 book - Part 35 of 84The Ring programming language version 1.2 book - Part 35 of 84
The Ring programming language version 1.2 book - Part 35 of 84Mahmoud Samir Fayed
 
20180721 code defragment
20180721 code defragment20180721 code defragment
20180721 code defragmentChiwon Song
 
Webgl para JavaScripters
Webgl para JavaScriptersWebgl para JavaScripters
Webgl para JavaScriptersgerbille
 
Core Animation
Core AnimationCore Animation
Core Animationbdudney
 
Cocos2dを使ったゲーム作成の事例
Cocos2dを使ったゲーム作成の事例Cocos2dを使ったゲーム作成の事例
Cocos2dを使ったゲーム作成の事例Yuichi Higuchi
 
SVCC 2013 D3.js Presentation (10/05/2013)
SVCC 2013 D3.js Presentation (10/05/2013)SVCC 2013 D3.js Presentation (10/05/2013)
SVCC 2013 D3.js Presentation (10/05/2013)Oswald Campesato
 
Idioms in swift 2016 05c
Idioms in swift 2016 05cIdioms in swift 2016 05c
Idioms in swift 2016 05cKaz Yoshikawa
 
HTML5って必要?
HTML5って必要?HTML5って必要?
HTML5って必要?GCS2013
 
Types, Operators and Primitives
Types, Operators and PrimitivesTypes, Operators and Primitives
Types, Operators and Primitivesalexisabril
 
Functional microscope - Lenses in C++
Functional microscope - Lenses in C++Functional microscope - Lenses in C++
Functional microscope - Lenses in C++Alexander Granin
 
Aho-Corasick string matching algorithm
Aho-Corasick string matching algorithmAho-Corasick string matching algorithm
Aho-Corasick string matching algorithmTakatoshi Kondo
 
The Ring programming language version 1.5.4 book - Part 30 of 185
The Ring programming language version 1.5.4 book - Part 30 of 185The Ring programming language version 1.5.4 book - Part 30 of 185
The Ring programming language version 1.5.4 book - Part 30 of 185Mahmoud Samir Fayed
 
Having fun with graphs, a short introduction to D3.js
Having fun with graphs, a short introduction to D3.jsHaving fun with graphs, a short introduction to D3.js
Having fun with graphs, a short introduction to D3.jsMichael Hackstein
 

Mais procurados (20)

I phone勉強会 (2011.11.23)
I phone勉強会 (2011.11.23)I phone勉強会 (2011.11.23)
I phone勉強会 (2011.11.23)
 
How to build a html5 websites.v1
How to build a html5 websites.v1How to build a html5 websites.v1
How to build a html5 websites.v1
 
Lenses
LensesLenses
Lenses
 
Exploring Canvas
Exploring CanvasExploring Canvas
Exploring Canvas
 
ES6(ES2015) is beautiful
ES6(ES2015) is beautifulES6(ES2015) is beautiful
ES6(ES2015) is beautiful
 
Functional "Life": parallel cellular automata and comonads
Functional "Life": parallel cellular automata and comonadsFunctional "Life": parallel cellular automata and comonads
Functional "Life": parallel cellular automata and comonads
 
The Ring programming language version 1.2 book - Part 35 of 84
The Ring programming language version 1.2 book - Part 35 of 84The Ring programming language version 1.2 book - Part 35 of 84
The Ring programming language version 1.2 book - Part 35 of 84
 
20180721 code defragment
20180721 code defragment20180721 code defragment
20180721 code defragment
 
Webgl para JavaScripters
Webgl para JavaScriptersWebgl para JavaScripters
Webgl para JavaScripters
 
Core Animation
Core AnimationCore Animation
Core Animation
 
Cocos2dを使ったゲーム作成の事例
Cocos2dを使ったゲーム作成の事例Cocos2dを使ったゲーム作成の事例
Cocos2dを使ったゲーム作成の事例
 
Scala.io
Scala.ioScala.io
Scala.io
 
SVCC 2013 D3.js Presentation (10/05/2013)
SVCC 2013 D3.js Presentation (10/05/2013)SVCC 2013 D3.js Presentation (10/05/2013)
SVCC 2013 D3.js Presentation (10/05/2013)
 
Idioms in swift 2016 05c
Idioms in swift 2016 05cIdioms in swift 2016 05c
Idioms in swift 2016 05c
 
HTML5って必要?
HTML5って必要?HTML5って必要?
HTML5って必要?
 
Types, Operators and Primitives
Types, Operators and PrimitivesTypes, Operators and Primitives
Types, Operators and Primitives
 
Functional microscope - Lenses in C++
Functional microscope - Lenses in C++Functional microscope - Lenses in C++
Functional microscope - Lenses in C++
 
Aho-Corasick string matching algorithm
Aho-Corasick string matching algorithmAho-Corasick string matching algorithm
Aho-Corasick string matching algorithm
 
The Ring programming language version 1.5.4 book - Part 30 of 185
The Ring programming language version 1.5.4 book - Part 30 of 185The Ring programming language version 1.5.4 book - Part 30 of 185
The Ring programming language version 1.5.4 book - Part 30 of 185
 
Having fun with graphs, a short introduction to D3.js
Having fun with graphs, a short introduction to D3.jsHaving fun with graphs, a short introduction to D3.js
Having fun with graphs, a short introduction to D3.js
 

Semelhante a Introducing AlloyUI DiagramBuilder

Trident International Graphics Workshop 2014 1/5
Trident International Graphics Workshop 2014 1/5Trident International Graphics Workshop 2014 1/5
Trident International Graphics Workshop 2014 1/5Takao Wada
 
Functional Programming from OO perspective (Sayeret Lambda lecture)
Functional Programming from OO perspective (Sayeret Lambda lecture)Functional Programming from OO perspective (Sayeret Lambda lecture)
Functional Programming from OO perspective (Sayeret Lambda lecture)Ittay Dror
 
COMPUTER GRAPHICS LAB MANUAL
COMPUTER GRAPHICS LAB MANUALCOMPUTER GRAPHICS LAB MANUAL
COMPUTER GRAPHICS LAB MANUALVivek Kumar Sinha
 
Intro to computer vision in .net
Intro to computer vision in .netIntro to computer vision in .net
Intro to computer vision in .netStephen Lorello
 
COMPAPPABCA49085rFunrAP__Practical Number 9 & 10.docx
COMPAPPABCA49085rFunrAP__Practical Number 9 & 10.docxCOMPAPPABCA49085rFunrAP__Practical Number 9 & 10.docx
COMPAPPABCA49085rFunrAP__Practical Number 9 & 10.docxTashiBhutia12
 
Halide tutorial 2019
Halide tutorial 2019Halide tutorial 2019
Halide tutorial 2019Champ Yen
 
Computer graphics lab manual
Computer graphics lab manualComputer graphics lab manual
Computer graphics lab manualUma mohan
 
B. SC CSIT Computer Graphics Lab By Tekendra Nath Yogi
B. SC CSIT Computer Graphics Lab By Tekendra Nath YogiB. SC CSIT Computer Graphics Lab By Tekendra Nath Yogi
B. SC CSIT Computer Graphics Lab By Tekendra Nath YogiTekendra Nath Yogi
 
CS 354 Transformation, Clipping, and Culling
CS 354 Transformation, Clipping, and CullingCS 354 Transformation, Clipping, and Culling
CS 354 Transformation, Clipping, and CullingMark Kilgard
 
Quantum Computing Notes Ver1.0
Quantum Computing Notes Ver1.0Quantum Computing Notes Ver1.0
Quantum Computing Notes Ver1.0Vijayananda Mohire
 
Matlab intro
Matlab introMatlab intro
Matlab introfvijayami
 
Lec 7 28_aug [compatibility mode]
Lec 7 28_aug [compatibility mode]Lec 7 28_aug [compatibility mode]
Lec 7 28_aug [compatibility mode]Palak Sanghani
 
Hidden Gems in Swift
Hidden Gems in SwiftHidden Gems in Swift
Hidden Gems in SwiftNetguru
 
Computer Graphics in Java and Scala - Part 1b
Computer Graphics in Java and Scala - Part 1bComputer Graphics in Java and Scala - Part 1b
Computer Graphics in Java and Scala - Part 1bPhilip Schwarz
 
openFrameworks 007 - 3D
openFrameworks 007 - 3DopenFrameworks 007 - 3D
openFrameworks 007 - 3Droxlu
 

Semelhante a Introducing AlloyUI DiagramBuilder (20)

Trident International Graphics Workshop 2014 1/5
Trident International Graphics Workshop 2014 1/5Trident International Graphics Workshop 2014 1/5
Trident International Graphics Workshop 2014 1/5
 
Computer graphics
Computer graphics   Computer graphics
Computer graphics
 
Computer graphics
Computer graphics   Computer graphics
Computer graphics
 
Functional Programming from OO perspective (Sayeret Lambda lecture)
Functional Programming from OO perspective (Sayeret Lambda lecture)Functional Programming from OO perspective (Sayeret Lambda lecture)
Functional Programming from OO perspective (Sayeret Lambda lecture)
 
Primitives
PrimitivesPrimitives
Primitives
 
COMPUTER GRAPHICS LAB MANUAL
COMPUTER GRAPHICS LAB MANUALCOMPUTER GRAPHICS LAB MANUAL
COMPUTER GRAPHICS LAB MANUAL
 
Intro to computer vision in .net
Intro to computer vision in .netIntro to computer vision in .net
Intro to computer vision in .net
 
COMPAPPABCA49085rFunrAP__Practical Number 9 & 10.docx
COMPAPPABCA49085rFunrAP__Practical Number 9 & 10.docxCOMPAPPABCA49085rFunrAP__Practical Number 9 & 10.docx
COMPAPPABCA49085rFunrAP__Practical Number 9 & 10.docx
 
Halide tutorial 2019
Halide tutorial 2019Halide tutorial 2019
Halide tutorial 2019
 
Computer graphics lab manual
Computer graphics lab manualComputer graphics lab manual
Computer graphics lab manual
 
B. SC CSIT Computer Graphics Lab By Tekendra Nath Yogi
B. SC CSIT Computer Graphics Lab By Tekendra Nath YogiB. SC CSIT Computer Graphics Lab By Tekendra Nath Yogi
B. SC CSIT Computer Graphics Lab By Tekendra Nath Yogi
 
CS 354 Transformation, Clipping, and Culling
CS 354 Transformation, Clipping, and CullingCS 354 Transformation, Clipping, and Culling
CS 354 Transformation, Clipping, and Culling
 
Quantum Computing Notes Ver1.0
Quantum Computing Notes Ver1.0Quantum Computing Notes Ver1.0
Quantum Computing Notes Ver1.0
 
Matlab intro
Matlab introMatlab intro
Matlab intro
 
Lec 7 28_aug [compatibility mode]
Lec 7 28_aug [compatibility mode]Lec 7 28_aug [compatibility mode]
Lec 7 28_aug [compatibility mode]
 
Hidden Gems in Swift
Hidden Gems in SwiftHidden Gems in Swift
Hidden Gems in Swift
 
Dip iit workshop
Dip iit workshopDip iit workshop
Dip iit workshop
 
Advanced JavaScript
Advanced JavaScript Advanced JavaScript
Advanced JavaScript
 
Computer Graphics in Java and Scala - Part 1b
Computer Graphics in Java and Scala - Part 1bComputer Graphics in Java and Scala - Part 1b
Computer Graphics in Java and Scala - Part 1b
 
openFrameworks 007 - 3D
openFrameworks 007 - 3DopenFrameworks 007 - 3D
openFrameworks 007 - 3D
 

Último

The Evolution of Money: Digital Transformation and CBDCs in Central Banking
The Evolution of Money: Digital Transformation and CBDCs in Central BankingThe Evolution of Money: Digital Transformation and CBDCs in Central Banking
The Evolution of Money: Digital Transformation and CBDCs in Central BankingSelcen Ozturkcan
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 

Último (20)

The Evolution of Money: Digital Transformation and CBDCs in Central Banking
The Evolution of Money: Digital Transformation and CBDCs in Central BankingThe Evolution of Money: Digital Transformation and CBDCs in Central Banking
The Evolution of Money: Digital Transformation and CBDCs in Central Banking
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 

Introducing AlloyUI DiagramBuilder

Notas do Editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. \n
  57. \n