Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Building an IoT Solution with ThingWorx

A multi-part flowchart which explores three paths of development: Edge Device, Data Model and Application. The flowchart is meant to help someone understand the ThingWorx platform and how they can choose what to build in different scenario.
by

Dan Mendelsohn

on 8 December 2016

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Building an IoT Solution with ThingWorx

Start
Path 3:
Application
Path 2:
Data Model

Build
Digital
Representation

Display and interact
with digital representation

So you want to build an
IoT solution
on ThingWorx?

Path 1:
Edge
Device
Connect
Physical
World

Custom
Connectivity
Solution
-Find connectivity
solution on TWX
Marketplace

-Get device
connected
Go To
Path 2:
Data Model
ThingWorx
Marketplace
Is the device
ThingWorx
Ready?
yes
no
Choose a device
for your use case
-Connectivity Type
-Sensors
-Battery Life
-Security
-Portability
-Etc.
Short Haul
or Long Hall
Connectivity?
Short Haul:
ex. Bluetooth, Zigbee, etc.
Connect
through a
gateway
Go To
Path 1:
Edge Device
to select and
connect a gateway
Long Haul:
ex. Wifi, 3G, Satellite, etc.
Can you load
custom code?
No
Build a protocol adapter
to connect the device
Go To
Path 2:
Data Model
Device is now
connected
Device is now
connected
Can the device
run the
ThingWorx EMS?
yes
yes
Does The EMS
have the functionality
you need?
yes
no
no
Load the EMS and
use it to connect
Go To
Path 2:
Data Model
Device is now
connected
What Languages/Protocols
Can The Device Run?
Build a custom
connection using
the Java SDK
Go To
Path 2:
Data Model
Device is now
connected
Go To
Path 2:
Data Model
Device is now
connected
Go To
Path 2:
Data Model
Device is now
connected
Build a custom
connection using
the C SDK
Build a custom
connection using
the .NET SDK
Java
C
.NET
IOS
Go To
Path 2:
Data Model
Device is now
connected
Build a custom
connection using
the IOS SDK
Go To
Path 2:
Data Model
Device is now
connected
Build a custom
connection using
the OPC SDK
OPC
Go To
Path 2:
Data Model
Device is now
connected
Build a custom
connection using
the ADO SDK
ADO
Connect direct
To ThingWorx
Connect through
third Party
Device Cloud
ex. Digi
Is Device Cloud
a ThingWorx Ready
Partner?
yes
no
Build an extension
to facilitate connectivity
between device cloud
and ThingWorx
Go To
Path 2:
Data Model
Device is now
connected
Is there already a
full or partial
solution for your
use case on marketplace?
yes
ThingWorx
Marketplace
Download
Extension
Is this everything
you need?
no
Build custom data
model components
no
yes
Completed
solution
Your Done!
Break Solution down
into small parts needed
to make the system work
Repeat for each part
Will multiple entities be
based on this functionality?
Does the entity require anything other than services?
ex. Properties, subscriptions, etc.
yes
no
Build a ThingWorx
"Resource"
Are you done with
creating entities?
no
Build a ThingWorx
"Thing"
Does this Entity Define the base functionality of a thing, or a sub functionality that can be applied to multiple things?
yes
Build a ThingWorx
"Thing Template"
Build a ThingWorx
"Thing Shape"
Sub
functionality
Base
functionality
Identify base Thing Shape(s) (optional)
and base Thing Template
Identify aspects
that need to be
represented in this
entity
i.e. What does this entity need to do/represent?
Does your template contain settable
parameters that rarely change?
no
Create a
configuration table
yes
Follow both paths
For each aspect
of the entity
Is the aspect data
or functionality?
data
Create a property
Are you done
adding aspects?
functionality
Create an Event
Automatically triggered internally or
directly invoked ?
Build a service
direct
Identify all required
services
For each aspect
of the entity
Create a subscription
automatic
no
Build a service
Do you need
more services?
yes
no
Entity Created
yes
no
yes
Completed
solution
Is this a one
instance solution?
yes
Your Done!
Should the solution
be editable?
no
yes
no
Export Entities
Your Done!
Load an configure
on other instances
Package into an extension
Would you like to make
this available to the
TWX community for free or for a fee?
no
Submit to ThingWorx
Marketplace for certification
yes
ThingWorx
Marketplace
You're building
business logic
Does the automatic
trigger already exist?
yes
ex. data change or
previously created event
no
Is the functionality simple
yes
no
Build a service
Invoke this service
from your subscription
ex. var result = me.serviceOne(...)
The reason for building a service here is to be able to test and tweak the functionality before including it in a subscription. This is recommended because subscriptions cannot be tested directly and the process for debugging and designing services is much quicker and easier.
What Kind of entity do I create?
What parts of an entity
do I need?

I built everything,
what now?

Are all of the required
entities created?
no
go to
Path 2:
Data Model
yes
Are you a hardcore
front end developer?
yes
Do you want to control every detail or build very fast?
Mashup
Builder
no
build fast
Custom
UI
Control every
detail
You can build any
UI you want and
use the REST API
in order to interact
with ThingWorx
What Kind of Mashup Do I Build?
Follow
both
paths
Is the mashup based on the context of a specific thing stemming from template or shape functionality
template or shape?
"page"
Type
"shape"
"template"
template
shape
Start Building
Mashup
Should resizing a
screen affect the
mashup?
yes
no
"Responsive"
"static"
Layout Options
Identify visual and functional
parts you will need
Repeat for
each part
Is the part
visual or interactive?
no
Based on a unique
"thing" or a
"template"/"shape"
Service
Dynamic Service
Unique
not unique
Must define:
-trigger to execute service
-what to do with the result
Must define:
-Entity name
-trigger to execute service
-what to do with the result
Is there more
to add?
yes
Does your application
need more than one page?
yes
no
Create a
ThingWorx
"mashup"
Create a
ThingWorx
"master"
Define a list of pages
you will need
Create a ThingWorx "menu"
to navagate between the pages
Repeat for Each Page
yes
Is this mashup
part of a master?
no
no
You Done!
yes
Set your mashup as a
"contained mashup"
in your master
Are there more pages
to add to the master?
yes
no
Your adding
a widget
Does a widget exist
in mashup builder
for your needs?
yes
Add and configure
your widget
no
Does one exist on
the ThingWorx
marketplace?
yes
ThingWorx
Marketplace
Download and install
the new widget
(Don't forget to refresh composer)
no
Build a custom
widget extension
Install your new extension
(Don't forget to refresh composer)
Do you like the
look and feel of
the widget?
yes
no
Create some combination of
ThingWorx"style definitions"
and "state definitions"
Apply style and state
definitions to the widget
Is this a set of
background
processes only?
no
yes
Cate a ThingWorx
"subsystem"
Note:
Subsystems can only
be created through
an extension
Note:
Resources can only
be created through
an extension
Is the data a
collection of values?
yes
Create a ThingWorx
"DataShape" to
define the collection
no
Services can be built in either JavaScript (on the platform) or Java (through an extension). The reasons one might choose one approach over the other are:
-JavaScript source is visible to anyone who can view the entity once created
-Java source is always hidden from the entity view
-You may wish to use a third party Java Library
-You a more comfortable in one language over the other
-One language may not have the functionality you require
Services can be built in either JavaScript (on the platform) or Java (through an extension). The reasons one might choose one approach over the other are:
-JavaScript source is visible to anyone who can view the entity once created
-Java source is always hidden from the entity view
-You may wish to use a third party Java Library
-You a more comfortable in one language over the other
-One language may not have the functionality you require
Full transcript