示例#1
0
        static void Main(string[] args)
        {
            string smoConnectionString = "Integrated=True;IsPrimaryLogin=True;Authenticate=True;EncryptedPassword=False;Host=development.k2software.cn;Port=5555;SecurityLabelName=K2;UserID=Administrator;Password=K2pass!;WindowsDomain=DENALLIX";
            //Integrated=True; IsPrimaryLogin=True; Authenticate=True; EncryptedPassword=False; CachePassword=True;Host=DLX; Port=5555
            //Create a SO Server Client Object
            SmartObjectClientServer soServer = new SmartObjectClientServer();
            try
            {
                //Open the connection to the K2 Server
                soServer.CreateConnection();
                soServer.Connection.Open(smoConnectionString);

                //Get a handle to the 'Employee' SO
                SmartObject soUMUser = soServer.GetSmartObject("ProjectData");

                //Call the GetList Method
                //soUMUser.MethodToExecute = "Get_Role_Users";
                //soUMUser.MethodToExecute = "Get_Users";
                soUMUser.MethodToExecute = "GetList";
                //Input Properties setting:
                //soUMUser.ListMethods["Get_Role_Users"].InputProperties["Role_Name"].Value = "tester";
                //soUMUser.ListMethods["Get_Group_Users"].InputProperties["Group_Name"].Value = "Domain Admins";
                //soUMUser.ListMethods["Get_Group_Users"].InputProperties["LabelName"].Value = "K2";
                //Execute GetList Method, and put the result to a SmartObjectList

                SmartObjectList smoList = soServer.ExecuteList(soUMUser);

                //Iterate the SmartObject List
                foreach (SmartObject soDetail in smoList.SmartObjectsList)
                {
                    Console.WriteLine("ID:" + soDetail.Properties["ID"].Value.ToString());
                }


                soServer.Connection.Close();

                Console.ReadKey();
            }
            catch (Exception ex)
            {

                throw ex;
            }


        }
示例#2
0
        private string getTaxData()
        {
            System.Text.StringBuilder sb = new System.Text.StringBuilder();


            SmartObjectClientServer smoServer = ConnectionClass.GetSmartObjectClient();
            SmartObject             mmdSmo    = smoServer.GetSmartObject(this.SMOInternalName);
            SmartListMethod         getList   = mmdSmo.ListMethods["GetAllChildTermsInTermSet"];

            getList.InputProperties["TermStoreId"].Value = this.TermStoreGuid;
            getList.InputProperties["TermSetId"].Value   = this.TermSetGuid;
            mmdSmo.MethodToExecute = "GetAllChildTermsInTermSet";


            var             TermList = new List <Term>();
            SmartObjectList smoList  = smoServer.ExecuteList(mmdSmo);

            foreach (SmartObject smo in smoList.SmartObjectsList)
            {
                string termId    = smo.Properties["TermId"].Value;
                string termLabel = smo.Properties["Label"].Value;
                string termPath  = smo.Properties["Path"].Value;
                TermList.Add(new Term()
                {
                    TermId = termId, TermLabel = termLabel, TermPath = termPath
                });
            }
            var serializer  = new JavaScriptSerializer();
            var serialized  = serializer.Serialize(TermList);
            var fixedString = serialized.Replace("&quot;", @"""");

            sb.Append(@"{""terms"":");
            sb.Append(fixedString);
            sb.Append(@"}");
            return(HttpUtility.HtmlDecode(sb.ToString()));
        }
示例#3
0
        public void RetryWorkflow()
        {
            SmartObjectClientServer soServer = this.NewSmartObjectClientServer();

            try
            {
                using (soServer.Connection)
                {
                    SmartObject soError = soServer.GetSmartObject("com_K2_System_Workflow_SmartObject_ErrorLog");
                    //set method we want to execute.
                    soError.MethodToExecute = "GetErrorLogs";
                    soError.Properties["ErrorProfileName"].Value = "All";

                    //get the list of SmartObjects returned by the method
                    SmartObjectList soListError = soServer.ExecuteList(soError);
                    //iterate over the collection

                    List <K2ErrorLog> listK2ErrorLog = new List <K2ErrorLog>();
                    string[]          workflowNames  = this.AppConfig.WorkflowNames.Split(';');
                    foreach (SmartObject soItem in soListError.SmartObjectsList)
                    {
                        for (int i = 0; i < workflowNames.Length; i++)
                        {
                            if (soItem.Properties["ProcessName"].Value == workflowNames[i])
                            {
                                string soDescription = soItem.Properties["Description"].Value.ToString();
                                if (soDescription.Contains("was deadlocked on lock resources with another process") ||
                                    soDescription.Contains("SQL") ||
                                    soDescription.Contains("IIF"))
                                {
                                    listK2ErrorLog.Add(new K2ErrorLog(soItem));
                                }
                            }
                        }
                        //ambil hanya transaksi deadlocked saja
                    }

                    foreach (K2ErrorLog k2ErrorLog in listK2ErrorLog)
                    {
                        SmartObject errorSO = soServer.GetSmartObject("com_K2_System_Workflow_SmartObject_ErrorLog");
                        //set method we want to execute.
                        errorSO.MethodToExecute = "RetryError";

                        errorSO.Properties["Id"].Value         = k2ErrorLog.Id.ToString();
                        errorSO.Properties["ProcInstId"].Value = k2ErrorLog.ProcInstID.ToString();
                        errorSO.Properties["TypeId"].Value     = k2ErrorLog.TypeID.ToString();
                        errorSO.Properties["ObjectId"].Value   = k2ErrorLog.ObjectID.ToString();
                        errorSO.Properties["UserName"].Value   = "System";

                        this.Logger.Info("K2 Retry ProcInstId = " + k2ErrorLog.ProcInstID.ToString());

                        //get the list of SmartObjects returned by the method
                        Thread.Sleep(1000); //delay 1 detik
                        soServer.ExecuteScalar(errorSO);
                    }
                }
            }
            finally
            {
                soServer.DeleteConnection();
            }
        }
示例#4
0
 public virtual SmartObjectList ExecuteList(SmartObject smartObject, ExecuteListOptions options)
 {
     return(_serviceClientServer.ExecuteList(smartObject, options));
 }
        private void btnGenerateCRMProcess_Click(object sender, RoutedEventArgs e)
        {
            SourceCode.SmartObjects.Client.SmartObjectClientServer smoServer = new SmartObjectClientServer();
            smoServer.CreateConnection();
            smoServer.Connection.Open("Integrated=True;IsPrimaryLogin=True;Authenticate=True;EncryptedPassword=False;Host=localhost;Port=5555");

            SmartObject smoCRM = smoServer.GetSmartObject("Demo_K2_CRM_Functions");

            smoCRM.MethodToExecute = "GetAllEntities";

            SmartObjectList smoEntities = smoServer.ExecuteList(smoCRM);


            // get state status details
            CRMPicklist pl = new CRMPicklist();

//            pl.AttributeLogicalName = att.LogicalName;
            pl.EntityLogicalName = "lead";

            CRMPicklist cp = functions.CRMGetStateStatus(pl);

            int seq = 0;

            foreach (CRMPicklistOption plo in cp.Picklist.OrderBy(p => p.PicklistParentValue).OrderBy(p => p.PicklistValue))
            {
                StateStatus ss = new StateStatus();
                ss.State      = plo.PicklistParentValue;
                ss.StateName  = plo.PicklistParentLabel;
                ss.Status     = plo.PicklistValue;
                ss.StatusName = plo.PicklistLabel;
                ss.Sequence   = seq;
                seq++;
                CRMSS.Add(ss);
            }


            bool ActiveOnly = true;


            string nowish = DateTime.Now.ToString("yyyyMMddHHmmss");

            // Create new process
            process = WorkflowFactory.CreateProcess <DefaultProcess>(nowish, WizardNames.DefaultProcess);

            DataField dfEntityId   = new DataField("Entity Id", "");
            DataField dfEntityName = new DataField("Entity Name", "");

            process.DataFields.Add(dfEntityId);
            process.DataFields.Add(dfEntityName);


            var dimensions = WorkflowHelpers.GetActivityDimensions(process.StartActivity);
            int x          = Convert.ToInt32(Math.Round(dimensions.X + dimensions.Width + 40D));
            int y          = Convert.ToInt32(dimensions.Y) + 100;

            DefaultActivity PrevStatAct   = null;
            DefaultActivity PrevReviewAct = null;

            PrevStatAct = CreateStartActivity("", dfEntityId, dfEntityName, x, ref y);

            SourceCode.Workflow.Authoring.Line startLine = WorkflowFactory.CreateLine("StartLine");
            startLine.StartActivity  = process.StartActivity;
            startLine.FinishActivity = PrevStatAct;
            process.Lines.Add(startLine);

            int c = 0;

            foreach (StateStatus ss in CRMSS.OrderBy(p => p.Sequence))
            {
                DefaultActivity act = CreateStatusActivity(ss.StateName + " - " + ss.StatusName, dfEntityId, dfEntityName, x, ref y);
                if (PrevReviewAct != null)
                {
                    PrevReviewAct.FinishLines[0].FinishActivity = act;
                }

                if (c == 0)
                {
                    SourceCode.Workflow.Authoring.Line firstline = WorkflowFactory.CreateLine("Firstline");
                    firstline.StartActivity  = PrevStatAct;
                    firstline.FinishActivity = act;
                    process.Lines.Add(firstline);
                }
                c++;

                DefaultActivity act1 = null;
                if (!ActiveOnly || ActiveOnly && ss.State == 0)
                {
                    act1 = CreateCRMActivity(ss.StateName + " - " + ss.StatusName, dfEntityId, dfEntityName, x, ref y);

                    SourceCode.Workflow.Authoring.Line line = WorkflowFactory.CreateLine("Line " + ss.Sequence);
                    line.StartActivity  = act;
                    line.FinishActivity = act1;
                    process.Lines.Add(line);

                    if (PrevStatAct != null)
                    {
                        act1.FinishLines[1].FinishActivity = PrevStatAct;
                    }
                }

                if (act1 == null && PrevStatAct.FinishLines.Count == 0)
                {
                    PrevReviewAct = null;
                    SourceCode.Workflow.Authoring.Line updateLine = WorkflowFactory.CreateLine("Update Line " + ss.Sequence);
                    updateLine.StartActivity  = PrevStatAct;
                    updateLine.FinishActivity = act;
                    process.Lines.Add(updateLine);
                }


                if (act != null)
                {
                    WorkflowHelpers.AutoPositionLines(act.StartLines);
                    WorkflowHelpers.AutoPositionLines(act.FinishLines);
                }
                if (act1 != null)
                {
                    WorkflowHelpers.AutoPositionLines(act1.StartLines);
                    WorkflowHelpers.AutoPositionLines(act1.FinishLines);
                }

                PrevReviewAct = act1;
                PrevStatAct   = act;
            }



            process.FinishRule = new DesignCRMClient.CRMClientProcessFinishRule();

            process.SaveAs(txtProcessPath.Text + nowish + ".kprx");

            process = null;
        }
        private void btnGenerateCRMProcess_Click(object sender, RoutedEventArgs e)
        {
            SourceCode.SmartObjects.Client.SmartObjectClientServer smoServer = new SmartObjectClientServer();
            smoServer.CreateConnection();
            smoServer.Connection.Open("Integrated=True;IsPrimaryLogin=True;Authenticate=True;EncryptedPassword=False;Host=localhost;Port=5555");

            SmartObject smoCRM = smoServer.GetSmartObject("Demo_K2_CRM_Functions");
            smoCRM.MethodToExecute = "GetAllEntities";

            SmartObjectList smoEntities = smoServer.ExecuteList(smoCRM);


            // get state status details
            CRMPicklist pl = new CRMPicklist();
//            pl.AttributeLogicalName = att.LogicalName;
            pl.EntityLogicalName = "lead";

            CRMPicklist cp = functions.CRMGetStateStatus(pl);

            int seq = 0;
            foreach (CRMPicklistOption plo in cp.Picklist.OrderBy(p => p.PicklistParentValue).OrderBy(p => p.PicklistValue))
            {
                StateStatus ss = new StateStatus();
                ss.State = plo.PicklistParentValue;
                ss.StateName = plo.PicklistParentLabel;
                ss.Status = plo.PicklistValue;
                ss.StatusName = plo.PicklistLabel;
                ss.Sequence = seq;
                seq++;
                CRMSS.Add(ss);
            }


            bool ActiveOnly = true;


            string nowish = DateTime.Now.ToString("yyyyMMddHHmmss");
            // Create new process
            process = WorkflowFactory.CreateProcess<DefaultProcess>(nowish, WizardNames.DefaultProcess);

            DataField dfEntityId = new DataField("Entity Id", "");
            DataField dfEntityName = new DataField("Entity Name", "");
            process.DataFields.Add(dfEntityId);
            process.DataFields.Add(dfEntityName);


            var dimensions = WorkflowHelpers.GetActivityDimensions(process.StartActivity);
            int x = Convert.ToInt32(Math.Round(dimensions.X + dimensions.Width + 40D));
            int y = Convert.ToInt32(dimensions.Y) + 100;

            DefaultActivity PrevStatAct = null;
            DefaultActivity PrevReviewAct = null;

            PrevStatAct = CreateStartActivity("", dfEntityId, dfEntityName, x, ref y);

            SourceCode.Workflow.Authoring.Line startLine = WorkflowFactory.CreateLine("StartLine"); 
            startLine.StartActivity = process.StartActivity;
            startLine.FinishActivity = PrevStatAct;
            process.Lines.Add(startLine);

            int c = 0;

            foreach (StateStatus ss in CRMSS.OrderBy(p => p.Sequence))
            {
                DefaultActivity act = CreateStatusActivity(ss.StateName + " - " + ss.StatusName, dfEntityId, dfEntityName, x, ref y);
                if (PrevReviewAct != null)
                {
                    PrevReviewAct.FinishLines[0].FinishActivity = act;
                }

                if (c == 0)
                {
                    SourceCode.Workflow.Authoring.Line firstline = WorkflowFactory.CreateLine("Firstline");
                    firstline.StartActivity = PrevStatAct;
                    firstline.FinishActivity = act;
                    process.Lines.Add(firstline);
                }
                c++;

                DefaultActivity act1 = null;
                if (!ActiveOnly || ActiveOnly && ss.State == 0)
                {
                    act1 = CreateCRMActivity(ss.StateName + " - " + ss.StatusName, dfEntityId, dfEntityName, x, ref y);

                    SourceCode.Workflow.Authoring.Line line = WorkflowFactory.CreateLine("Line " + ss.Sequence);
                    line.StartActivity = act;
                    line.FinishActivity = act1;
                    process.Lines.Add(line);

                    if (PrevStatAct != null)
                    {
                        act1.FinishLines[1].FinishActivity = PrevStatAct;
                    }
                }

                if (act1 == null && PrevStatAct.FinishLines.Count == 0)
                {
                    PrevReviewAct = null;
                    SourceCode.Workflow.Authoring.Line updateLine = WorkflowFactory.CreateLine("Update Line " + ss.Sequence);
                    updateLine.StartActivity = PrevStatAct;
                    updateLine.FinishActivity = act;
                    process.Lines.Add(updateLine);
                }


                if (act != null)
                {
                    WorkflowHelpers.AutoPositionLines(act.StartLines);
                    WorkflowHelpers.AutoPositionLines(act.FinishLines);
                }
                if (act1 != null)
                {
                    WorkflowHelpers.AutoPositionLines(act1.StartLines);
                    WorkflowHelpers.AutoPositionLines(act1.FinishLines);
                }

                PrevReviewAct = act1;
                PrevStatAct = act;
            }
            


            process.FinishRule = new DesignCRMClient.CRMClientProcessFinishRule();

            process.SaveAs(txtProcessPath.Text+nowish+".kprx");

            process = null;
        }
 private List<TaskUser> GetUsers(SourceCode.KO.Destination dest)
 {
     //System.Diagnostics.EventLog.WriteEntry("K2EventListener", "K2EventListener GetUsers Started!Data:" + JsonConvert.SerializeObject(arr), System.Diagnostics.EventLogEntryType.Warning);
     //System.Diagnostics.EventLog.WriteEntry("K2EventListener", "smoConnectionString Data:" + smoConnectionString + ",K2EventReceiverUrl:" + K2EventReceiverUrl, System.Diagnostics.EventLogEntryType.Error);
     _log.Info("Start GetUsers");
     List<TaskUser> users = new List<TaskUser>();
     try
     {
         //Create a SO Server Client Object
         SmartObjectClientServer soServer = new SmartObjectClientServer();
         //Open the connection to the K2 Server
         soServer.CreateConnection();
         soServer.Connection.Open(smoConnectionString);
         //Get a handle to the 'Employee' SO
         SmartObject soUMUser = soServer.GetSmartObject("UMUser");
         if (dest.Type == DestinationType.User)
         {
             soUMUser.MethodToExecute = "Get_Users";
             string[] arr = dest.Name.Split(':');
             if (arr.Length > 1)
             {
                 soUMUser.ListMethods["Get_Users"].InputProperties["Label_Name"].Value = arr[0];
                 soUMUser.ListMethods["Get_Users"].InputProperties["Name"].Value = arr[1];
                 //Execute GetList Method, and put the result to a SmartObjectList
                 SmartObjectList smoList = soServer.ExecuteList(soUMUser);
                 //Iterate the SmartObject List
                 foreach (SmartObject soDetail in smoList.SmartObjectsList)
                 {
                     TaskUser user = new TaskUser()
                     {
                         Name = soDetail.Properties["Name"].Value.ToString(),
                         Email = soDetail.Properties["Email"].Value.ToString(),
                         Manager = soDetail.Properties["Manager"].Value.ToString()
                     };
                     users.Add(user);
                 }
                 soServer.Connection.Close();
             }
             soServer.Connection.Close();
             if (Enviroment == "Development") _log.Info("GetUsers Return DestinationType.User Data:" + JsonConvert.SerializeObject(users));
             return users;
         }
         else if (dest.Type == DestinationType.Group)
         {
             soUMUser.MethodToExecute = "Get_Group_Users";
             //Input Properties setting:
             string[] arr = dest.Name.Split(':');
             if (arr.Length > 1)
             {
                 soUMUser.ListMethods["Get_Group_Users"].InputProperties["Group_Name"].Value = arr[1];
                 soUMUser.ListMethods["Get_Group_Users"].InputProperties["LabelName"].Value = arr[0];
                 //Execute GetList Method, and put the result to a SmartObjectList
                 SmartObjectList smoList = soServer.ExecuteList(soUMUser);
                 //Iterate the SmartObject List
                 foreach (SmartObject soDetail in smoList.SmartObjectsList)
                 {
                     TaskUser user = new TaskUser()
                     {
                         Name = soDetail.Properties["Name"].Value.ToString(),
                         Email = soDetail.Properties["Email"].Value.ToString(),
                         Manager = soDetail.Properties["Manager"].Value.ToString()
                     };
                     users.Add(user);
                 }
                 soServer.Connection.Close();
             }
             if (Enviroment == "Development") _log.Info("GetUsers Return DestinationType.Group Data:" + JsonConvert.SerializeObject(users));
             return users;
         }
         else if (dest.Type == DestinationType.Queue)
         {
             //Call the GetList Method
             soUMUser.MethodToExecute = "Get_Role_Users";
             //Input Properties setting:
             soUMUser.ListMethods["Get_Role_Users"].InputProperties["Role_Name"].Value = dest.Name;
             //Execute GetList Method, and put the result to a SmartObjectList
             SmartObjectList smoList = soServer.ExecuteList(soUMUser);
             //Iterate the SmartObject List
             foreach (SmartObject soDetail in smoList.SmartObjectsList)
             {
                 TaskUser user = new TaskUser()
                 {
                     Name = soDetail.Properties["Name"].Value.ToString(),
                     Email = soDetail.Properties["Email"].Value.ToString(),
                     Manager = soDetail.Properties["Manager"].Value.ToString()
                 };
                 users.Add(user);
             }
             soServer.Connection.Close();
             if (Enviroment == "Development") _log.Info("GetUsers Return DestinationType.Queue Data:" + JsonConvert.SerializeObject(users));
             //System.Diagnostics.EventLog.WriteEntry("K2EventListener", "K2EventListener Return GetUsers Data:" + JsonConvert.SerializeObject(users), System.Diagnostics.EventLogEntryType.Error);
             return users;
         }
         else
         {
             soServer.Connection.Close();
             if (Enviroment == "Development") _log.InfoFormat("GetUsers Return null Data:" + JsonConvert.SerializeObject(users));
             return users;
         }
     }
     catch (Exception ex)
     {
         //System.Diagnostics.EventLog.WriteEntry("K2EventListener", "K2EventListener Error Data:" + JsonConvert.SerializeObject(ex), System.Diagnostics.EventLogEntryType.Error);
         _log.Error(ex);
     }
     return users;
 }