Skip to main content
Announcements
Introducing Qlik Answers: A plug-and-play, Generative AI powered RAG solution. READ ALL ABOUT IT!
cancel
Showing results for 
Search instead for 
Did you mean: 
danielrozental
Master II
Master II

QMS API Creating a new task

I can't seem to be able to set the name on the new task, task gets created with default name.

Here's my code, any ideas are welcome.

Dim QMSClient As New QMSBackendClient()

Dim QvsId As Guid

'Gets the request Key when the page is loaded

ServiceKeyClientMessageInspector.ServiceKey = QMSClient.GetTimeLimitedServiceKey()

'Fetching the ID of the first QVS resource

Dim qvsServices As QVPublisher.QMSBackendService.ServiceInfo()

qvsServices = QMSClient.GetServices(ServiceTypes.QlikViewDistributionService)

QvsId = New Guid(qvsServices(0).ID.ToString())

Dim qvDocs As QVPublisher.QMSBackendService.DocumentNode()

qvDocs = QMSClient.GetSourceDocuments(QvsId)

Dim qvDocTasks As New QVPublisher.QMSBackendService.DocumentTask

qvDocTasks.QDSID = QvsId

qvDocTasks.Document = qvDocs(1)

qvDocTasks.DocumentInfo = New QVPublisher.QMSBackendService.DocumentTask.TaskDocumentInfo

qvDocTasks.Distribute = New QVPublisher.QMSBackendService.DocumentTask.TaskDistribute

qvDocTasks.Reduce = New QVPublisher.QMSBackendService.DocumentTask.TaskReduce

qvDocTasks.Reload = New QVPublisher.QMSBackendService.DocumentTask.TaskReload

qvDocTasks.General = New QVPublisher.QMSBackendService.DocumentTask.TaskGeneral

qvDocTasks.General.TaskName = "API TEST"

qvDocTasks.General.Enabled = False

qvDocTasks.Triggering = New QVPublisher.QMSBackendService.DocumentTask.TaskTriggering

QMSClient.SaveDocumentTask(qvDocTasks)

25 Replies
Not applicable

Hi,

I am using the api GetDocumentTask to get the list of triggers. I am using the following code -

documentTask = apiClient.GetDocumentTask(TaskID, DocumentTaskScope.All);

// Define the event trigger properties

TaskEventTrigger eventTrigger = new TaskEventTrigger();

eventTrigger.ID = Guid.NewGuid();

eventTrigger.Enabled = true;

eventTrigger.TaskID = taskID;

eventTrigger.Type = TaskTriggerType.TaskFinishedTrigger;

// Create trigger list and add event trigger

List<Trigger> listTrigger = new List<Trigger>();

listTrigger.Add(eventTrigger);

documentTask.Triggering = new DocumentTask.TaskTriggering();

documentTask.Triggering.Triggers.Add(eventTrigger);

documentTask.Triggering.TaskDependencies = new List<TaskInfo>();

documentTask.Triggering.ExecutionAttempts = 1;

documentTask.Triggering.ExecutionTimeout = 1440;

documentTask.Scope = DocumentTaskScope.Triggering;

// Create Trigger

apiClient.SaveDocumentTask(documentTask);

This code is giving error that the object reference not set to an instance of object at line - documentTask.Triggering.Triggers.Add(eventTrigger);

I have a requirement to ADD triggers to the task. My task already has some triggers so I want to append the trigger to the existing list from code. If I use the code -

documentTask.Triggering.Triggers = listTrigger;

This removes all the triggers which previously existed and just adds the eventTrigger.

Can you help me how we can do this ?

Thanks,

Samir

Not applicable

Hi,

The problem was I was instantiating a new object -

documentTask.Triggering = new DocumentTask.TaskTriggering();

I removed this code and added -

documentTask.Triggering.Triggers.Add(eventTrigger)

This is working as expected now.

Thanks,

Samir

steliosg
Partner - Contributor III
Partner - Contributor III

Hi bas,

I have a similar case,create a task and a trigger for all the available qvw.I followed the above examples but i cant create trigger.I manage to create an empty line(with the edit and delete sign) but without attributes of the trigger(type,start time,etc).

Below is my code.

Any kind of help will be appreciate!

System;


System.Collections.Generic;


System.Linq;


System.Text;


QMSAPIStarter.QMSAPIService;


QMSAPIStarter.ServiceSupport;




QMSAPIStarter



class Program



static void Main(string[] args)



QMSClient Client;


string DocName = System.String.Empty;


string NewList = System.String.Empty;


int i = 0;



string QMS = "http://localhost:4799/QMS/Service";


new QMSClient("BasicHttpBinding_IQMS", QMS);


string key = Client.GetTimeLimitedServiceKey();


ServiceKeyClientMessageInspector.ServiceKey = key;



ServiceInfo[] myServices = Client.GetServices(ServiceTypes.All);


Guid qdsGuid = myServices[1].ID;



//QMSClient qmsClient =Client;


DocumentTask documentTask = new DocumentTask();



//Get source documents


DocumentNode[] sourceDocuments =Client.GetSourceDocuments (qdsGuid);




foreach ( DocumentNode Documents in sourceDocuments)






//}





//documentTask.Document = sourceDocuments[0]; //Get first source document for this example



//Console.WriteLine(sourceDocuments[0]);


new DocumentTask.TaskGeneral();


true;



//documentTask.General.DocumentInfo = DocName;


// documentTask.Reload.Enabled=true;




"Creating a task via QMS API";


new DocumentTask.TaskDocumentInfo();



"Parallel_Test";



"Task created using QMS API";



DocumentAttribute _da = new DocumentAttribute();


"a";


"a";


new DocumentAttribute[1];




Guid triggerID = new Guid("5b219800-ad7d-477e-83da-3357f84133ff");



DocumentTaskScope.General | DocumentTaskScope.DocumentInfo;// | DocumentTaskScope.Triggering;






//Create task           









//triggerID = Guid.NewGuid();


ScheduleTrigger st = new ScheduleTrigger();


// triggerID;


TaskTriggerType.OnceTrigger;


true;


DateTime.Now;




// Create a list of trigger and add the scheduled trigger


//List<Trigger> List_Trigger = new List<Trigger>();


//List_Trigger.Add(st);



// Create a list of trigger and add the scheduled trigger


Trigger[] List_Trigger = new Trigger[1];



//List_Trigger[1] = st;



new DocumentTask.TaskTriggering();


//List_Trigger.ToList();


//retval = entityRegistry.Values.OfType<T>().ToList(); 



TaskInfo[] _TaskInfoList = new TaskInfo[1];



TaskInfo tf = new TaskInfo();


false;


//tf.QDSID = qdsGuid;


Guid.NewGuid();


TaskType.DocumentTask;


//taskdep.Add(tf);


DocumentTaskScope.General | DocumentTaskScope.Triggering;


Client.SaveDocumentTask(documentTask);







amien
Specialist
Specialist

Thanks for this threat

Just to be sure:

TDE.Recipients = List_Dir;


This one is used for settings up the User Type and Recipients? Or just Recipients and i need to set User Type somewhere else?

Not applicable

Thanks for all the info!

I have created a task successfully and ran it but while distributing it is not replacing the existing file. Instead it has created a new file. for ex: filename_1.

Can you please help.

Not applicable

Hi srythideva,

Make sure your DocumentTask.scope object is completely set. For example:

docTask.Scope = DocumentTaskScope.General | DocumentTaskScope.Reload | DocumentTaskScope.DocumentInfo | DocumentTaskScope.Triggering | DocumentTaskScope.Distribute | DocumentTaskScope.Reduce | DocumentTaskScope.Server;

All of the properties need to be set as well. I think you are running into the issue with reducing. Looking into DocumenTaskScope.Reduce...

docTask.Reduce = new DocumentTask.TaskReduce();

                docTask.Reduce.Static = new DocumentTask.TaskReduce.TaskReduceStatic();

                List<TaskReduction> TaskReductionList = new List<TaskReduction>();

                docTask.Reduce.Static.Reductions = TaskReductionList;

                docTask.Reduce.Dynamic = new DocumentTask.TaskReduce.TaskReduceDynamic();  

                docTask.Reduce.Dynamic.Type = TaskReductionType.ByField;

                docTask.Reduce.DocumentNameTemplate = "%SourceDocumentName%";

Hope this helps!