Projects
Projects are used to organize entities within ThingWorx. Entities that are collected in projects can be exported and imported together. An entity can belong to only one project. All entities must be assigned to a project. When creating entities in Composer, the Project field is mandatory, and the entity cannot be saved until a project has been set.
Default Project: PTCDefaultProject
The PTCDefaultProject is included as an out of the box project, although it is recommended to create custom projects. PTCDefaultProject has the following behaviors:
• If an entity is created via APIs and a project is not defined, the entity is added to PTCDefaultProject.
• PTCDefaultProject is a system object that cannot be added as a dependency on a project entity.
• If entities are created via a service, imported, or migrated into 9.1 and later, and a project name is not provided, PTCDefaultProject is assigned as the project.
• If an entity is duplicated and it contains a project and then the project is removed, PTCDefaultProject is assigned by default after the entity is saved.
• The SetProjectName service can be used to set projects for editable extension entities. The UI is still read-only and this service must be called to set the projects. Both user-created projects and projects that are part of the same extension can be set to these entities.
• Namespace can be assigned to a PTCDefaultProject by editing the project if it is a component or building block type of project.
Creating Projects
1. From
Composer, browse
Projects, and then click the
icon to create a new project.
2. Enter a name and description for the project.
3. Select a Project Type. The following options are available:
◦ A Component type project represents a part of a solution/application that are reusable, such as templates, shapes, or services. They may be user experience, models, and/or logic combined, but together do not solve a problem or produce an outcome until leveraged by an application. Component is the default type.
◦ A Building Block type project is a ThingWorx Project entity with entities that break down tightly coupled, bulky implementations into reusable, standardized, self-contained components with well-defined external interfaces and hiding internal implementations.
| Project Type Building Block is available in ThingWorx 9.5.0 and later. |
◦ A Solution type project represents a complete solution/application. A solution/application is made up of component type projects, and typically solves a problem or delivers an outcome.
While creating a project via CreateProject service in entity services the user cannot assign namespace, accessModifier, or deprecate an object, while executing the service. It can be assigned from the composer or via REST call once the project is created via CreateProject service in entity services.
4. For Component and Building Block project types, you can add a Namespace from an existing list or create a new namespace.
In ThingWorx, namespaces are used to organize projects into logical groups and to prevent name collisions. For more information on namespaces, review the
Namespaces topic.
| The Namespace is mandatory for project type Building Block and optional for project type Component. Namespace is not supported on Project type Solution. |
5. For the
Building Block project type, you need to specify a
Default Scope for your project. The
Default Scope can be
None(Public),
Restricted, or
Private. If you select
None, your project is public. For more information on scopes, review the
Access Modifiers topic.
6. Optionally, add appropriate Tags and select a Home Mashup.
7. Specify a list of other projects that the project depends on using the Project Dependencies field.
| It is not recommended to assign an empty project (a project without any entities) to another project using the Project Dependencies field. If the empty project is deleted after it has been assigned to a project, errors may occur when importing or exporting the existing project. |
8. Specify any extensions that the project depends in order to be deployed and function as intended by using the
Extension Dependencies field. Extensions can be published to or deployed from
Solution Central.
9. To add entities to a project, in the Entities area, select or search for entities from the Available Entities list, and then drag and drop them to the Project Entities area.
For a new project, in the Available Entities list, a list of entities that have already been assigned to another project are displayed. If you add them to a new project, then they are re-assigned and removed from the previous project.
| Using the filter ( ) icon, you may also filter the entities based on the type, project, tags, Thing Template, Thing Shape, descriptions, or scope. |
| • A maximum of 5000 entities can be added. Project is read-only if there are more than 5000 entities. More than 5000 entities can not be added to a project through the Project Entity Editor. • Save button is disabled when the limit is reached. Save button is disabled in the Project Entity Editor. • Removing and adding entities is disabled from the project entity editor when the limit is reached. |
10. Optionally, click the sort (
) icon to sort the entities or click the timer (
) icon to view recent entities.
| To remove an entity from the project entities, select an entity and then click Remove. You may select and remove multiple entities at a time. The removed entity again appears in the available entities list. |
You can delete or export a project by clicking the More button. From the More menu, you can also select to Open in Project View.
11. Click Save.
Project Context
All entities must have a project assigned. To save time when creating entities, you can use the Set Project Context option. After this is set, any subsequent entities created will be assigned to that project.
Project context can be set in two places in Composer.
• At the top left of Composer:
• Within the General Information section for any new entity created in Composer:
◦ To change the project context, select Remove as project context on any entity. An entity created without a project context set must have a project set to save the entity.