예제 #1
0
        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");
                }
            }
        }
예제 #2
0
        /// <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");
        }