Exemple #1
0
        public HistoryItemEmployee Assemble(ClarifyDataRow actEntryRecord)
        {
            var proxy = actEntryRecord.AsString("proxy");

            if (proxy.IsEmpty())
            {
                return(null);
            }

            var ds      = _session.CreateDataSet();
            var generic = ds.CreateGeneric("empl_user");

            generic.Filter(_ => _.Equals("login_name", proxy));
            generic.Query();

            if (generic.Rows.Count == 0)
            {
                return(null);
            }

            var employeeRecord = generic.Rows[0];
            var name           = "{0} {1}".ToFormat(employeeRecord.AsString("first_name"), employeeRecord.AsString("last_name"));
            var id             = employeeRecord.AsInt("employee");

            return(new HistoryItemEmployee
            {
                Name = name,
                Firstname = employeeRecord.AsString("first_name"),
                Lastname = employeeRecord.AsString("last_name"),
                Id = id,
                Login = proxy
            });
        }
        public void SessionStarted(IClarifySession session)
        {
            if (!_schemaCache.IsValidTable("fc_login_monitor"))
            {
                _logger.LogDebug("Unable to log user authentication. No fc_login_monitor table is present.");
                return;
            }

            var host = GetLocalhostFqdn();

            _logger.LogDebug("Logging application {0} authentication for user {1} on host {2} with session id {3}.", _settings.ApplicationName, session.UserName, host, session.Id);

            var dataSet = session.CreateDataSet();

            var monitorGeneric = dataSet.CreateGeneric("fc_login_monitor");
            var monitorRow     = monitorGeneric.AddNew();

            monitorRow["application"]  = _settings.ApplicationName;
            monitorRow["login_time"]   = FCGeneric.NOW_DATE;
            monitorRow["logout_time"]  = FCGeneric.MIN_DATE;
            monitorRow["login_name"]   = session.UserName;
            monitorRow["fcsessionid"]  = session.Id.ToString();
            monitorRow["num_sessions"] = _sessionUsageReporter.GetActiveSessionCount();

            if (_schemaCache.IsValidField("fc_login_monitor", "server"))
            {
                monitorRow["server"] = host;
            }

            monitorRow["comments"] = _applicationUrl.Url;

            monitorRow.RelateByID(session.SessionUserID, "fc_login_monitor2user");
            monitorRow.Update();
        }
        private IEnumerable <HistoryItem> Build(HistoryRequest request, Action <ClarifyGeneric, WorkflowObjectInfo> genericAction)
        {
            var clarifyDataSet = _session.CreateDataSet();

            var workflowObjectInfo = WorkflowObjectInfo.GetObjectInfo(request.WorkflowObject.Type);
            var workflowGeneric    = clarifyDataSet.CreateGenericWithFields(workflowObjectInfo.ObjectName);

            if (workflowObjectInfo.HasIDFieldName)
            {
                workflowGeneric.DataFields.Add(workflowObjectInfo.IDFieldName);
            }

            genericAction(workflowGeneric, workflowObjectInfo);

            var inverseActivityRelation = workflowObjectInfo.ActivityRelation;
            var activityRelation        = _schemaCache.GetRelation("act_entry", inverseActivityRelation).InverseRelation;

            var actEntryGeneric = workflowGeneric.Traverse(activityRelation.Name);

            actEntryGeneric.AppendSort("entry_time", false);
            actEntryGeneric.AppendSort("objid", false);

            if (request.Since.HasValue)
            {
                var filter = new FilterExpression().MoreThan("entry_time", request.Since.Value);
                actEntryGeneric.Filter.AddFilter(filter);
            }

            var templateDictionary = _templatePolicyConfiguration.RenderPolicies(request.WorkflowObject);

            //query generic hierarchy and while using act entry templates transform the results into HistoryItems
            return(_historyItemAssembler.Assemble(actEntryGeneric, templateDictionary, request));
        }
        public void SessionStarted(IClarifySession session)
        {
            if (!_schemaCache.IsValidTable("fc_login_monitor"))
            {
                _logger.LogDebug("Unable to log user authentication. No fc_login_monitor table is present.");
                return;
            }

            var host = GetLocalhostFqdn();

            _logger.LogDebug("Logging application {0} authentication for user {1} on host {2} with session id {3}.", _settings.ApplicationName, session.UserName, host, session.Id);

            var dataSet = session.CreateDataSet();

            var monitorGeneric = dataSet.CreateGeneric("fc_login_monitor");
            var monitorRow = monitorGeneric.AddNew();
            monitorRow["application"] = _settings.ApplicationName;
            monitorRow["login_time"] = FCGeneric.NOW_DATE;
            monitorRow["logout_time"] = FCGeneric.MIN_DATE;
            monitorRow["login_name"] = session.UserName;
            monitorRow["fcsessionid"] = session.Id.ToString();
            monitorRow["num_sessions"] = _sessionUsageReporter.GetActiveSessionCount();

            if(_schemaCache.IsValidField("fc_login_monitor", "server"))
            {
                monitorRow["server"] = host;
            }

            monitorRow["comments"] = _applicationUrl.Url;

            monitorRow.RelateByID(session.SessionUserID, "fc_login_monitor2user");
            monitorRow.Update();
        }
        public void Visit(BeginModelMap instruction)
        {
            DataSet = _session.CreateDataSet();

            _modelStack.Push(new ModelInformation {
                ModelName = instruction.Name
            });
        }
        public void Visit(BeginModelMap beginModelMap)
        {
            DataSet = _session.CreateDataSet();

            _modelStack.Push(new ModelInformation {
                ModelType = beginModelMap.ModelType
            });
        }
        private IEnumerable <string> GetSubcaseIds(WorkflowObject workflowObject)
        {
            var clarifyDataSet = _session.CreateDataSet();
            var caseGeneric    = clarifyDataSet.CreateGenericWithFields("case");

            caseGeneric.AppendFilter("id_number", StringOps.Equals, workflowObject.Id);

            var subcaseGeneric = caseGeneric.TraverseWithFields("case2subcase", "id_number");

            caseGeneric.Query();

            return(subcaseGeneric.Count > 0 ? subcaseGeneric.DataRows().Select(s => s.AsString("id_number")) : new string[0]);
        }