I am using Java classes as process variables. Rather than use the default java serialization/deserialization mechanism, I wish to instead store the process variables as JSON. To achieve JSON serialization of Java classes, is extending the org.activiti.engine.impl.variable.JsonType class the only requirement?
No, the JsonType class is used for saving process variable values that are instances of com.fasterxml.jackson.databind.JsonNode. What you want to do instead is create a custom VariableType and register it to the engine.
See how the CustomType can be used as a a process variable using the CustomVariableType class which is registered to the engine in the beginning. In that example the variable is created/saved using a byte array and the ValueFields.getBytes and valueFields.setBytes methods.
In your example you will of course have to take the instance that shall be saved and create some json from it first (using the jackson library) and then take that json and store it using valueFields.setBytes (or valueFields.setTextValue) and then do the opposite when the variable shall be brought back to life. You can take a look at the JsonType class for inspiration on how: https://github.com/Activiti/Activiti/blob/master/modules/activiti-engine/src/main/java/org/activiti/...