Click or drag to resize

Best Practices

SDC Best Practices

Login

Login Best Practices

The token login lifetimes is 1h.

It's very important to require a new login only when it is not valid anymore and not for every operation on the Web Service.

C#
 1// 
 2//WRONG: You login every time before you deposit many documents
 3// 
 4try
 5{
 6    List<string> listDocument = new List<string>();
 7    for (int i = 0; i < 100; i++)
 8    {
 9        //WRONG USAGE OF LOGIN!!! 
10        //THIS CAN CAUSE A STOP OF THE LOGIN SERVICES!!!
11        var v = jcdiClient.Login(user, password); 
12        token = v.AccessToken;
13
14        JsdcDocument jsdcDocument = new JsdcDocument();
15        jsdcDocument.FileName = Path.GetFileName("testset_01_001.pdf");
16        jsdcDocument.FileImage = File.ReadAllBytes("testset_01_001.pdf");
17        jsdcDocument.XmlDocumentMetadata = File.ReadAllText("metadata_testset_01_001.pdf.xml");
18        jsdcDocument.XmlFlowMetadata = File.ReadAllText("jsdcflow_testset_01_001.pdf.xml");
19        //Imposto il token
20        ClientCustomHeaderContext.HeaderInformation.AccessToken = token;
21        var result = jcdiClient.Deposit(jsdcDocument);
22        listDocument.Add(result.DocumentUuid);
23    }
24}
25catch (Exception ex)
26{
27    token = string.Empty;
28    throw ex;
29}
30
31// 
32//CORRECT: you login only one time and deposit many documents
33// 
34try
35{
36    List<Tuple<string, string>> listDocument = new List<Tuple<string, string>>();
37    var v = jcdiClient.Login(user, password); //Correct
38    token = v.AccessToken;
39
40    for (int i = 0; i < 100; i++)
41    {
42        JsdcDocument jsdcDocument = new JsdcDocument();
43        jsdcDocument.FileName = Path.GetFileName("testset_01_001.pdf");
44        jsdcDocument.FileImage = File.ReadAllBytes("testset_01_001.pdf");
45        jsdcDocument.XmlDocumentMetadata = File.ReadAllText("metadata_testset_01_001.pdf.xml");
46        jsdcDocument.XmlFlowMetadata = File.ReadAllText("jsdcflow_testset_01_001.pdf.xml");
47        //Imposto il token
48        ClientCustomHeaderContext.HeaderInformation.AccessToken = token;
49        var result = jcdiClient.Deposit(jsdcDocument);
50        listDocument.Add(new Tuple<string, string>(result.DocumentUuid, result.DigitalSafeUuid));
51    }
52}
53catch (Exception ex)
54{
55    token = string.Empty;
56    throw ex;
57}
Retry

Retry

When you send a document, your document would be processed later in SDC environment. You must implement a retry method for read the status of a document when the document is in RetryLater state.

C#
 1SdcRequestInfo doc = new SdcRequestInfo();
 2doc.DocumentUuid = DocumentUuid;
 3doc.DigitalSafeUuid = DigitalSafeUuid;
 4var v = jcdiClient.ReadDocumentTechMetadata(doc);
 5if (v != null)
 6{
 7    switch (v.JsdcOperationStatus)
 8    {
 9        case JsdcOperationStatuses.Fail:
10            Console.WriteLine("Returned value is Fail");
11            break;
12        case JsdcOperationStatuses.Success:
13            DocumentStatus ds = new DocumentStatus()
14            {
15                Description = string.Empty,
16                PdvId = v.PdVId,
17                Status = (DocumentStatusCodes)v.DocumentStatus,
18            };
19            switch (ds.Status)
20            {
21                case DocumentStatusCodes.Indexed:
22                    Console.WriteLine("Document Indexed");
23                    break;
24                case DocumentStatusCodes.WaitingForProcessing:
25                    Console.WriteLine("Document in Waiting for Processing");
26                    break;
27                case DocumentStatusCodes.WaitingForDeposit:
28                case DocumentStatusCodes.DepositCompleted:
29                    Console.WriteLine("Document Deposit Completed with ID PDV: " + ds.PdvId.ToString());
30                    break;
31                case DocumentStatusCodes.Preserved:
32                    Console.WriteLine("Document Preserved with ID PDV: " + ds.PdvId.ToString());
33                    break;
34                case DocumentStatusCodes.Refused:
35                case DocumentStatusCodes.NoPdvFound:
36                case DocumentStatusCodes.Error:
37                default:
38                    Console.WriteLine("Document in Error");
39                    break;
40            }
41            break;
42        case JsdcOperationStatuses.RetryLater:
43            Console.WriteLine("Wait and try again");
44            Thread.Sleep(30000); //30 min
45            //Check again Document Status
46            break;
47    }
48}
49else
50{
51    Console.WriteLine("Returned value is null");
52}