コード例 #1
0
            public ListOperators()
            {
                var oper = new OperatorConfig("Copy", "复制", OperatorPosition.Row, "AjaxUrl",
                                              new MarcoConfigItem(true, false, "~/Library/WebModuleContentPage.tkx?Source=CXCS/CopyDocument&DocId=*DocId*"));

                fOperators = new List <OperatorConfig> {
                    oper
                };
            }
コード例 #2
0
ファイル: SubFuncClass.cs プロジェクト: madiantech/tkdemo
        public OperatorConfig ConvertToOperatorConfig()
        {
            OperatorConfig config = new OperatorConfig(NameId, Name, Position, Info, ConfirmData,
                                                       Icon, CreateMarco(UseMarco == 1, Content))
            {
                DialogTitle = CreateMarco(false, DialogTitle),
                UseKey      = UseKey == 1
            };

            return(config);
        }
コード例 #3
0
        protected override void Execute(CodeActivityContext context)
        {
            // Get the current data structures
            ActivityConfig a = ActivityData.Get(context);
            OperatorConfig o = OperatorData.Get(context);

            if (Review.Get(context))
            {
                a.ResetEval();
                o.ResetEval();
            }
            else
            {
                a.IncrementEvalCount();
                o.IncrementEvalCount();
            }

            // Return the updated data
            ActivityData.Set(context, a);
            OperatorData.Set(context, o);
        }
コード例 #4
0
        protected override void Execute(CodeActivityContext context)
        {
            // Get the connection string
            DBConnection ext = context.GetExtension <DBConnection>();

            if (ext == null)
            {
                throw new InvalidProgramException("No connection string available");
            }

            // Lookup the operator
            UserTasksDataContext dc = new UserTasksDataContext(ext.ConnectionString);
            OperatorConfig       oc = dc.OperatorConfigs.SingleOrDefault(x => x.OperatorKey == OperatorKey.Get(context));

            if (oc == null)
            {
                throw new InvalidProgramException("The specified operator (" + OperatorKey.Get(context).ToString() + ") was not found");
            }

            // Lookup the QueueInstance
            dc.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues, dc.QueueInstances);
            QueueInstance qi = dc.QueueInstances.SingleOrDefault(x => x.QueueInstanceKey == QueueInstanceKey.Get(context));

            if (qi == null)
            {
                throw new InvalidProgramException("The specified request (" + QueueInstanceKey.Get(context) + ") was not found");
            }

            if (qi.AssignedOperatorID != null)
            {
                if (qi.AssignedOperatorID != oc.OperatorConfigID)
                {
                    Result.Set(context, -1);
                    return;
                }
            }

            qi.AssignedOperatorID = oc.OperatorConfigID;
            qi.AssignedDate       = DateTime.UtcNow;

            // Update the QueueInstance record
            PersistQueueInstance persist = context.GetExtension <PersistQueueInstance>();

            persist.AddQueueInstance(qi);

            Result.Set(context, 0);

            // Add a custom track record
            CustomTrackingRecord userRecord = new CustomTrackingRecord("Assign")
            {
                Data =
                {
                    { "QueueInstanceKey", qi.QueueInstanceKey      },
                    { "OperatorKey",      OperatorKey.Get(context) },
                    { "SubQueueID",       qi.CurrentSubQueueID     },
                    { "QC",               qi.QC                    }
                }
            };

            // Emit the custom tracking record
            context.Track(userRecord);
        }
コード例 #5
0
        protected override void Execute(CodeActivityContext context)
        {
            // Get the connection string
            DBConnection ext = context.GetExtension <DBConnection>();

            if (ext == null)
            {
                throw new InvalidProgramException("No connection string available");
            }

            // Lookup the operator
            UserTasksDataContext dc = new UserTasksDataContext(ext.ConnectionString);
            OperatorConfig       oc = dc.OperatorConfigs.SingleOrDefault(x => x.OperatorKey == OperatorKey.Get(context));

            if (oc == null)
            {
                oc                     = new OperatorConfig();
                oc.OperatorKey         = OperatorKey.Get(context);
                oc.UnderEvaluation     = false;
                oc.Frequency           = 5;
                oc.NumberSinceLastEval = 0;

                dc.OperatorConfigs.InsertOnSubmit(oc);
                dc.SubmitChanges();
            }

            // Determine the Queue info
            char[]   delimiter = { '|' };
            string[] values    = QueueKey.Get(context).Split(delimiter, 3);

            // Lookup the queue and subqueue
            Queue q = dc.Queues.SingleOrDefault(x => x.QueueName == values[0]);

            if (q == null)
            {
                throw new InvalidProgramException("The specified queue (" + values[0] + ") was not found");
            }

            SubQueue sq = dc.SubQueues.SingleOrDefault(x => x.QueueID == q.QueueID &&
                                                       x.SubQueueName == values[1]);

            if (sq == null)
            {
                throw new InvalidProgramException("The specified subqueue (" +
                                                  values[0] + " - " +
                                                  values[1] + ") was not found");
            }

            bool bQC = bool.Parse(values[2]);

            if (sq.AllowSelection)
            {
                // Return all the available instances
                IEnumerable <QueueInstance> instances;

                if (bQC)
                {
                    instances = dc.QueueInstances
                                .Where(x => x.CurrentSubQueueID == sq.SubQueueID &&
                                       x.QC == bQC &&
                                       (x.AssignedOperatorID == null ||
                                        x.AssignedOperatorID == oc.OperatorConfigID))
                                .OrderBy(x => x.Priority.Value)
                                .OrderBy(x => x.CreateDate);
                }
                else
                {
                    instances = dc.QueueInstances
                                .Where(x => x.CurrentSubQueueID == sq.SubQueueID &&
                                       x.QC == bQC &&
                                       (x.AssignedOperatorID == null ||
                                        x.AssignedOperatorID == oc.OperatorConfigID))
                                .OrderBy(x => x.CreateDate);
                }

                if (instances.Count() > 0)
                {
                    QueueInstance[] qiList = new QueueInstance[instances.Count()];
                    int             i      = 0;
                    foreach (QueueInstance r in instances)
                    {
                        qiList[i++] = r;
                    }

                    QueueInstanceList.Set(context, qiList);
                }
            }
            else
            {
                // Return the oldest instance
                IEnumerable <QueueInstance> instances;
                if (bQC)
                {
                    instances = dc.QueueInstances
                                .Where(x => x.CurrentSubQueueID == sq.SubQueueID &&
                                       x.QC == bQC &&
                                       (x.AssignedOperatorID == null ||
                                        x.AssignedOperatorID == oc.OperatorConfigID))
                                .OrderBy(x => x.Priority.Value)
                                .OrderBy(x => x.CreateDate)
                                .Take(1);
                }
                else
                {
                    instances = dc.QueueInstances
                                .Where(x => x.CurrentSubQueueID == sq.SubQueueID &&
                                       x.QC == bQC &&
                                       (x.AssignedOperatorID == null ||
                                        x.AssignedOperatorID == oc.OperatorConfigID))
                                .OrderBy(x => (x.Priority.HasValue ? 1 : 0) * x.Priority.Value * (bQC ? 1 : 0))
                                .OrderBy(x => x.CreateDate)
                                .Take(1);
                }

                if (instances.Count() > 0)
                {
                    QueueInstance qi = instances.First <QueueInstance>();
                    qi.AssignedOperatorID = oc.OperatorConfigID;
                    dc.SubmitChanges();

                    QueueInstance[] qiList = new QueueInstance[1];
                    qiList[0] = qi;

                    QueueInstanceList.Set(context, qiList);
                }
            }
        }