|
XML * ACTION_wftk_do (WFTK_ADAPTOR * ad, va_list args)
{
XML * action = (XML *) 0;
XML * xml1;
XML * xml2;
const char * aname;
if (args) action = va_arg (args, XML *);
if (action) {
aname = xml_attrval (action, "action");
if (!strcmp (aname, "procstart")) {
xml1 = wftk_process_new (ad->session, NULL, NULL);
wftk_process_define (ad->session, xml1, NULL, xml_attrval (action, "process"));
wftk_process_save (ad->session, xml1);
xml2 = wftk_task_retrieve (ad->session, xml1);
wftk_task_complete (ad->session, xml2);
xml_free (xml2);
} else if (!strcmp (aname, "procadhoc")) {
xml1 = wftk_process_load (ad->session, NULL, xml_attrval (action, "process"));
wftk_process_adhoc (ad->session, xml1, xml_copy (xml_firstelem (action)));
} else if (!strcmp (aname, "tasknew")) {
wftk_task_new (ad->session, xml_copy (xml_firstelem (action)));
} else if (!strcmp (aname, "tasksubproc")) {
/* Not doing this yet. */
} else if (!strcmp (aname, "request")) {
/* Wait for implementation of request. */
} else if (!strcmp (aname, "set")) {
xml1 = wftk_process_load (ad->session, NULL, xml_attrval (action, "process"));
wftk_value_set (ad->session, xml1, xml_attrval (action, "name"), xml_attrval (action, "value"));
wftk_process_save (ad->session, xml1);
} else if (!strcmp (aname, "statusset")) {
xml1 = wftk_process_load (ad->session, NULL, xml_attrval (action, "process"));
wftk_status_set (ad->session, xml1, xml_attrval (action, "status"));
} else if (!strcmp (aname, "roleassign")) {
xml1 = wftk_process_load (ad->session, NULL, xml_attrval (action, "process"));
wftk_role_assign (ad->session, xml1, xml_attrval (action, "role"), xml_attrval (action, "user"));
wftk_process_save (ad->session, xml1);
} else if (!strcmp (aname, "taskassign")) {
/* Wait. */
} else if (!strcmp (aname, "useradd")) {
xml1 = wftk_process_load (ad->session, NULL, xml_attrval (action, "process"));
wftk_user_add (ad->session, xml1, xml_copy (xml_firstelem (action)));
wftk_process_save (ad->session, xml1);
}
}
return 0;
}
|