Concepts

Asset ID

An Asset ID is a serialization of an asset’s fields. In a simple case, using the default File Asset plug-in, the Asset ID is the file path, but in more complex systems it could be an SQL query, a URL, a GUID or a direct string representation of the asset's fields, such as the PyMockAsset Asset ID shown below.

mock:///show/shot/name/version

As it’s a single string, an Asset ID can be passed as part of an argument string to a sub-process, such as a shell command or a procedural. It is important therefore that the format of an Asset ID is such that it can be easily found in a larger string and parsed.

Asset Fields

The fields of an asset are the key components needed to retrieve an asset from an asset management system. Katana assumes that an asset has a name field and - if provided - also uses a version field.

Asset Attributes

An asset can optionally have attributes where additional metadata is stored, such as comments, or information about the type of asset.

Katana does not rely on particular attributes to exist, but it presumes that there is a mechanism in place for this additional data to be read from and written to.

Note:  It is fine to leave these methods unimplemented if your asset management system has no use for them.

Asset Publishing

Assets are published by users. When an asset is published it is in a finalized state, accessible to other users. Publishing can involve incrementing the asset version.

Note:  Any change that alters the project's katanaSceneName whilst saving a scene triggers a call to SyncAllOutputPorts(). This ensures render outputs affected by this change are correct.

Transactions

A Transaction is a container for submitting multiple publish operations at once. Rather than submit one publish operation per asset, operations can be grouped. This means that if an error occurs whilst publishing many assets, the whole operation may be aborted.

beginTransaction (createTransaction) publish asset A publish asset B publish asset C endTransaction (commit)

The transaction is final only after the endTransaction( commit ) operation.

A transaction must have a commit method and a cancel method. The cancel method can be used to rollback.

Note:  Implementing plug-in support for Transactions is optional.