Inheriting Windchill Capabilities
Windchill provides a capability called Workable for its business objects. Windchill persistables which implement this capability have certain attributes such as CheckoutState. Further, persistables which implement Workable can be checked out and checked in.
The framework supports the Workable capability of Windchill and allows entities being configured to inherit this capability. An entity that inherits Workable automatically inherits the structural property CheckoutState without having to explicitly configure it in the <Entity JSON> file. Also, the entity inheriting Workable automatically gets bound actions such as, CheckIn, CheckOut, and UndoCheckOut without having to explicitly define them.
Workable is one of the capabilities supported by the framework. The complete list of Windchill capabilities supported by the framework is shown in the following table:
Windchill Capability
Inheriting Entity Behavior
versioned
Entity properties are automatically available in the EDM:
VersionID—Version identifier of the entity
Revision—Revision of the entity
Version—Version of the entity
Latest—Checks if the entity is the latest version
Entity navigation properties are automatically available in the EDM:
Versions—Collection of all entity versions
Revisions—Collection of latest iteration of each entity revision
Bound actions are automatically available in the EDM:
Revise—Revises the entity when called
contextManaged
Entity navigation properties are automatically available in the EDM:
Context—Supports navigation to a Container
lifecycleManaged
Entity properties are automatically available in the EDM:
LifeCycleTemplateName
State
viewManageable
Entity properties are automatically available in the EDM:
View
workable
Bound actions are automatically available in the EDM:
CheckOut—Checks out the entity
CheckIn—Checks in the entity
UndoCheckOut—Undo an entity checkout
IsCheckoutAllowed—Checks if checkout is allowed on an entity
representable
Entity navigation properties are automatically available in the EDM:
Representations—Supports navigation to a viewable representation from the entity
organizationOwned
Entity navigation properties are automatically available in the EDM:
Organization—Supports navigation to the organization principal of the entity
Entities which are created within an organization context are automatically owned by the organization participant associated with the organization context.
From Windchill REST Services 1.2 and later, if the preference Expose Organization in the Preference Management utility is set to Yes in Windchill, you can specify a different organization when you create parts or documents. Organization is access-controlled. A minimum access level of read is required to specify a different organization.
In the request body of the URL, specify the OID of the organization or CAGE code in the Organization@odata.bind annotation.
If the preference Expose Organization is set to No, you cannot specify a different organization. If you try to specify a different organization, an error message appears.
foldered
Entity properties are automatically available in the EDM:
FolderName—Folder where the entity is located
CabinetName—The cabinet where the folder lives
FolderLocation—The path to the folder
Entity navigation properties are automatically available in the EDM:
Folder—Supports navigation to the folder of the entity
subtypeable
Entity subtypes are automatically available in the EDM of the domain.
If you add new subtypes in Windchill, the subtypes are available in the entity. The attributes available in the subtype are also available as structural properties of the entity in the EDM of the domain.
* 
The subtypes that are excluded in the <Entity JSON> file under wcExcludedTypes, are not available as subtypes. If you define a subtype in the <Entity JSON> file and exclude it in wcExcludedTypes, the subtype is still available in the EDM. See Excluding Subtypes of Enabled Windchill TypesExcluding Subtypes of Enabled Windchill Types for more information.
When the subtypes are available in Windchill REST Services, they follow a standard naming convention. See Naming Convention for Subtypes, for more information.
In the following domains provided by PTC, subtypeable is available for the following entity types:
PTC Document Management domain—Document entity.
PTC Product Management domain—Part entity.
PTC Change Management domain—ProblemReport, ChangeNotice, ChangeRequest, and Variance entities.
PTC CAD Document Management domain—CADDocument entity.
PTC Manufacturing Process Management domain—Entities, such as, Operation, OperationUsageLink, and so on. See the section subtypeable and softattributable Attributes, for more information.
PTC Regulatory Master domain—RegulatorySubmission entity.
softattributable
Attributes of entity types and its subtypes are automatically available in the EDM of the domain.
If you add new attributes in a type or subtype in Windchill, the attributes are available as structural properties of an entity in the EDM of the domain. If a reference attribute (global, alias, or local) is unassigned or inaccessible, then the property displays a null value.
* 
Property names generated automatically from a Windchill type should not conflict with the property names in the <Entity JSON> file. Windchill REST Services ignores the soft attributes added in Windchill if it finds a conflicting property name in the <Entity JSON> file.
For version 2 and later of the softattributable delegate, attributes that are backed by a Windchill enumeration are generated as the type PTC.EnumType where they were previously of the type Edm.String.
In the following domains provided by PTC, softattributable is available for the following entity types:
PTC Document Management domain—Document entity.
PTC Product Management domain—Part entity.
PTC Change Management domain—ProblemReport, ChangeNotice, ChangeRequest, and Variance entities.
PTC CAD Document Management domain—CADDocument, CADDocumentUse and CADDocumentReference entities.
PTC Manufacturing Process Management domain—Entities, such as, Operation, OperationUsageLink, and so on. See the section subtypeable and softattributable Attributes, for more information.
PTC Regulatory Master domain—RegulatorySubmission entity.
classifiable
Entities that inherit classifiable, automatically get the property of type ClassificationInfo. This property is used to classify the entity.
securityLabeled
All security labels are added as properties of the entity. These properties are annotated with PTC.SecurityLabel, PTC.MultiValueSecurityLabel, or PTC.CustomSecurityLabel. See the section PTC Annotations, for more information on annotations.
The unbound action Edit<EntitySetName>SecurityLabels to edit security labels on multiple objects is automatically available in the EDM of the entity.
For example, EditDocumentsSecurityLabels — The action sets or updates the security label attributes of the Document entity.
Windchill 11.2.0.0 and later support multiple values for a security label. The securityLabeled capability also supports multiple values for security labels. If a security label has multiple values, the response returns a comma-separated string of values.
In the following domains provided by PTC, securityLabeled is available for the following entity types:
PTC Document Management domain—Document entity.
PTC Dynamic Document Management domain—DynamicDocument entity.
PTC Product Management domain—Part entity.
PTC Change Management domain—ProblemReport, ChangeNotice, ChangeRequest, and Variance entities.
PTC CAD Document Management domain—CADDocument entity.
PTC BOM Transformation domain—Coproduce and MadeFromSet entities.
PTC Manufacturing Process Management domain—ProcessPlan, Operation, Sequence, ProcessMaterial, Skill, StandardCC, Tooling, and WorkCenter entities.
PTC CAPA domain
CAPA entity.
PTC Customer Experience Management domain
CustomerExperience entity.
PTC Nonconformance domain
Nonconformance entity.
optionSetAssignable
Enables the navigation property AssignedOptionSet in the inheriting entity. The property retrieves the option set assigned to containers and parts.
expressionAssignable
Enables the following in the relevant domains:
GetAssignedExpression function that retrieves assigned expressions.
The navigation property AssignedExpression is available in the inheriting entity. The navigation property is available only if your system is configured for independent expressions.
effectivityManaged
Entity navigation properties are automatically available in the EDM.
Effectivities—Collection of all effectivities on the parent entity.
sourcingRelationship
Enables the AXLEntries navigation property in the Part entity. This capability is available only if Supplier Management module is installed in Windchill.
eventSubscribable
Enables clients to subscribe to events available for the inheriting entity. The list of events available for subscription for the entity can be retrieved by using the GetApplicableEvents function in the PTC Event Management domain.
contentHolder
The navigation properties PrimaryContent, Attachments, Thumbnails, and SmallThumbnails that are used to upload, download, update and delete primary, secondary, and thumbnail contents are available in the inheriting entity.
ContentHolder supports UploadStage1Action and UploadStage3Action. for ContentHolder version 2 or later. This functionality is not available on version 1 (default version). For a domain to use this functionality, it has to inherit version 2 or later of the ContentHolder delegate.
PartDocAssociations
Enables the PartDocAssociations navigation property for the inheriting entity. The navigation property retrieves the association links between a part and CAD document.
variantSpecs
Enables the GetAllVariantSpecifications() function in the inheriting entity. The function retrieves all the variant specifications related to the configurable module.
serviceStructure
Enables the GetStructure action in the inheriting entity. The action retrieves all the children associated with the entity.
For an entity to inherit one of these capabilities, edit the <Entity JSON> file and add the following entry in the collection for inherits property:
{“name”: “<Windchill Capability>”}
The following example shows how an entity inherits versioned and workable capabilities:
{

“inherits”: [
{
“name”: “versioned”
}, {
“name”: “workable”
}
]

}