public void run() { IXConnFactory connFact = null; IXConnection ix = null; try { IXProperties connProps = IXConnFactory.CreateConnProperties(url); IXProperties sessOpts = IXConnFactory.CreateSessionOptions("IX-Examples", "1.0"); connFact = new IXConnFactory(connProps, sessOpts); Logger.instance().log("create IXConnFactory OK"); // Prepare ClientInfo object with language and country // ClientInfo ci = new ClientInfo(); // ci.language = "de"; // ci.country = "DE"; // LOGIN Logger.instance().log("login..."); ix = connFact.Create(userName, userPwd, "myComputer", null); // ci = ix.Login.ci Logger.instance().log("login OK"); // get constants Logger.instance().log("get const..."); IXServicePortC CONST = ix.CONST; Logger.instance().log("get const OK"); Logger.instance().log("get nodes..."); FindTasksInfo findInfo = new FindTasksInfo(); findInfo.inclWorkflows = true; FindResult findResult = ix.Ix.findFirstTasks(findInfo, 10); int idx = 0; while (true) { Logger.instance().log("#nodes=" + findResult.tasks.Length); for (int i = 0; i < findResult.tasks.Length; i++) { WFCollectNode node = findResult.tasks[i].wfNode; Logger.instance().log("name=" + node.nodeName); Logger.instance().log(" flowId=" + node.nodeId + ", nodeId=" + node.nodeId); Logger.instance().log(" objId=" + node.objId + ", userId=" + node.userId); } if (!findResult.moreResults) { break; } idx += findResult.tasks.Length; findResult = ix.Ix.findNextTasks(findResult.searchId, idx, 10); } Logger.instance().log("get nodes OK"); } catch (Exception e) { throw e; } finally { // Logout // -- if (ix != null) { Logger.instance().log("IX logout..."); ix.Logout(); Logger.instance().log("IX logout OK"); } } }
/// <summary> /// Forwards a node of a user. Logs in as user and edit the node. /// </summary> /// <param name="ix">IndexServer connection</param> /// <param name="CONST">IndexServer constants</param> /// <param name="flowId">Workflow ID</param> /// <param name="userName">Name of user that forwards it's node.</param> /// <param name="userPwd">User password</param> private void internalForwardNode(IXConnection ix, IXServicePortC CONST, int flowId, String userName, String userPwd) { Logger.instance().log("internalForwardNode(user="******"OK from " + userName; // login user Logger.instance().log(" login..."); ClientInfo ci2 = new ClientInfo(); ci2.language = "de"; ci2.country = "DE"; ci2.callId = "WF" + userName; // for debug purposes IXConnection ixUser = connFact.Create(ci2, userName, userPwd, "mypc", null); Logger.instance().log(" login OK"); // get active nodes (should be only one) Logger.instance().log(" Get active nodes..."); FindTasksInfo fti = new FindTasksInfo(); fti.inclWorkflows = true; FindResult findResult = ixUser.Ix.findFirstTasks(fti, 1000); WFCollectNode node = findResult.tasks[0].wfNode; int nodeId = node.nodeId; Logger.instance().log(" Forward node, nodeId=" + nodeId); // begin edit node -> real world: show dialog to forward Logger.instance().log(" begin edit ..."); WFEditNode en = ixUser.Ix.beginEditWorkFlowNode(flowId, nodeId, LockC.NO); Logger.instance().log(" begin edit OK"); // select successor (only one for serial flow) int[] succNodeIds = new int[en.succNodes.Length]; if (en.succNodes.Length > 0) { succNodeIds[0] = en.succNodes[0].id; } // end edit node -> real world: user clicks OK button Logger.instance().log(" end edit ..."); ixUser.Ix.endEditWorkFlowNode(flowId, node.nodeId, false, // terminate false, // cancel okMessage, // name "I don't mind " + userName, // comment succNodeIds // nodes to forward to ); Logger.instance().log(" end edit OK"); Logger.instance().log(" Forward node OK"); // logout Logger.instance().log(" logout..."); ixUser.Ix.logout(); Logger.instance().log(" logout OK"); Logger.instance().log(")internalForwardNode"); }