Crea servizio preriempimento
Per precompilare il modulo con i dati e gli allegati inviati, è stato scritto il seguente servizio di precompilazione
package com.azuredemo.core;
import com.adobe.forms.common.service.*;
import com.azuredemo.core.SaveAndFetchFromAzure.*;
import org.apache.commons.lang3.StringUtils;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
@Component(
service = {
DataProvider.class,
PrefillFromAzure.class
},
immediate = true
)
public class PrefillFromAzure implements DataProvider {
@Reference
// custom component to store and fetch data from azure portal
private StoreAndFetchDataFromAzureStorage saveAndFetchFromAzure;
private transient Logger logger = LoggerFactory.getLogger(PrefillFromAzure.class);
@Override
public PrefillData getPrefillData(DataOptions dataOptions) throws FormsException {
// get the guid parameter from the url
String guid = (String) dataOptions.getExtras().get("guid");
// get the data associated with the guid
String data = saveAndFetchFromAzure.getBlobData(guid);
InputStream dataInputStream = null;
ContentType contentType = dataOptions.getContentType();
PrefillData prefillData = null;
if (StringUtils.isNotBlank(data)) {
System.out.println("Returning prefill data");
dataInputStream = getDataInputStream(data);
prefillData = new PrefillData(dataInputStream, contentType);
}
return prefillData;
}
@Override
public String getServiceName() {
return "Prefill from azure portal";
}
@Override
public String getServiceDescription() {
return "Service to fetch data from azure portal storage";
}
private InputStream getDataInputStream(String data) {
InputStream dataInputStream = null;
System.out.println("got data " + data);
try {
dataInputStream = new ByteArrayInputStream(data.getBytes("UTF-8"));
} catch (UnsupportedEncodingException e) {
logger.error("[Custom AF Prefill] Exception in custom af prefill service", e);
}
return dataInputStream;
}
}
Codice per recuperare i dati da Azure
// Fetch the blob from Azure using the Blob Id
public String getBlobData(String blobID) {
String sasToken = azurePortalConfigurationService.getSASToken();
String storageURI = azurePortalConfigurationService.getStorageURI();
logger.debug("The SAS Token is " + sasToken);
logger.debug("The Storage URL is " + storageURI);
int timeout = 5;
RequestConfig config = RequestConfig.custom()
.setConnectTimeout(timeout * 1000)
.setConnectionRequestTimeout(timeout)
.setSocketTimeout(timeout * 1000).build();
org.apache.http.impl.client.CloseableHttpClient httpClient = HttpClientBuilder.create().setDefaultRequestConfig(config).build();
String getRequestURL = storageURI + blobID;
HttpGet httpGet = new HttpGet(getRequestURL + sasToken);
logger.debug("The url is: " + getRequestURL + sasToken);
try {
CloseableHttpResponse response = httpClient.execute(httpGet);
HttpEntity httpEntity = response.getEntity();
String rawResponse = EntityUtils.toString(httpEntity);
logger.debug("The Form Data is " + rawResponse);
return rawResponse;
} catch (IOException e) {
throw new RuntimeException(e);
}
}
Associa il servizio di precompilazione al modulo
Associa il servizio di precompilazione personalizzato al modulo adattivo come mostrato di seguito
Visualizza l’anteprima del modulo includendo il parametro guid nell’URL, come illustrato di seguito
http://localhost:4502/content/dam/formsanddocuments/azureportal/benefitsenrollment/jcr:content?wcmmode=disabled&guid=411b2f29-f0d0-468c-875b-4562dcc546fe
recommendation-more-help
8de24117-1378-413c-a581-01e660b7163e