Liferay Dynamic Data Mapping API provides comprehensive APIs for creating, managing, and processing dynamic forms and data structures within Liferay Portal.
—
Pluggable storage abstraction for form data with support for JSON storage, import/export operations, and custom storage adapters.
interface DDMStorageAdapter {
long create(DDMStorageAdapterSaveRequest ddmStorageAdapterSaveRequest) throws StorageException;
void deleteByClass(long ddmStructureId) throws StorageException;
void deleteByClassPK(long ddmStructureId, String ddmStructureKey, long classPK) throws StorageException;
DDMStorageAdapterGetResponse get(DDMStorageAdapterGetRequest ddmStorageAdapterGetRequest) throws StorageException;
void update(DDMStorageAdapterSaveRequest ddmStorageAdapterSaveRequest) throws StorageException;
}
class DDMStorageAdapterSaveRequest {
long getClassPK();
DDMFormValues getDDMFormValues();
long getDDMStructureId();
ServiceContext getServiceContext();
}
class DDMStorageAdapterGetResponse {
DDMFormValues getDDMFormValues();
}interface DDMFormInstanceRecordExporter {
byte[] export(long formInstanceId, int status) throws PortalException;
}
interface DDMFormValuesDeserializer {
DDMFormValues deserialize(String content);
}
interface DDMFormValuesSerializer {
String serialize(DDMFormValues ddmFormValues);
}@Component
public class CustomStorageExample implements DDMStorageAdapter {
@Override
public long create(DDMStorageAdapterSaveRequest request) throws StorageException {
DDMFormValues formValues = request.getDDMFormValues();
// Implement custom storage logic
return storeFormData(formValues);
}
@Override
public DDMStorageAdapterGetResponse get(DDMStorageAdapterGetRequest request) throws StorageException {
long classPK = request.getClassPK();
DDMFormValues formValues = retrieveFormData(classPK);
DDMStorageAdapterGetResponse response = new DDMStorageAdapterGetResponse();
response.setDDMFormValues(formValues);
return response;
}
private long storeFormData(DDMFormValues formValues) {
// Custom storage implementation
return System.currentTimeMillis(); // Return generated ID
}
private DDMFormValues retrieveFormData(long classPK) {
// Custom retrieval implementation
return new DDMFormValues();
}
}Install with Tessl CLI
npx tessl i tessl/maven-com-liferay--com-liferay-dynamic-data-mapping-api