Как получить историческую информацию из КК, используя ОТА

Ниже моего кода, который получает информацию об истории ошибок от QC. У меня проблема с

AuditPropertyFactoryFilter, который не фильтрует. AuditPropertyFactory имеет более тысячи строк.

Если я прокомментирую var changesList = auditPropertyFactory.NewList(changesHistoryFilter.Text); и раскомментируйте следующую строку, audPropertyFactory имеет только несколько строк, но не фильтруется, как мне нужно.

Кто-нибудь может получить совет?

  public List<QCBugHistory> retrieveHistoryFromBug(string bugId)
    {
        List<QCBugHistory> history = new List<QCBugHistory>();
        try
        {
            TDConnection qcConnection = new TDConnection();
            qcConnection.InitConnectionEx(qcUrl);
            qcConnection.ConnectProjectEx(qcDomain, qcProject, qcLogin);
            if (qcConnection.Connected)
            {
                AuditRecordFactory auditFactory = qcConnection.AuditRecordFactory as AuditRecordFactory;
                TDFilter historyFilter = auditFactory.Filter;
                historyFilter["AU_ENTITY_TYPE"] = "BUG";
                historyFilter["AU_ENTITY_ID"] = bugId;
                historyFilter["AU_ACTION"] = "Update";
                historyFilter.Order["AU_TIME"] = 1;
                historyFilter.OrderDirection["AU_TIME"] = 1;
                var auditRecordList = auditFactory.NewList(historyFilter.Text);
                log.Info("кол-во в истории " + auditRecordList.Count);

                if (auditRecordList.Count > 0)
                {
                    foreach (AuditRecord audit in auditRecordList)
                    {
                        QCBugHistory bugHistory = new QCBugHistory();
                        bugHistory.actionType = audit["AU_ACTION"];
                        bugHistory.changeDate = audit["AU_TIME"];

                        AuditPropertyFactory auditPropertyFactory = audit.AuditPropertyFactory;

                        var changesHistoryFilter = auditPropertyFactory.Filter;
                        changesHistoryFilter["AP_PROPERTY_NAME"] = "Status";

                        var changesList = auditPropertyFactory.NewList(changesHistoryFilter.Text);
                        //var changesList = auditPropertyFactory.NewList("");
                        if (changesList.Count > 0)
                        {
                            foreach (AuditProperty prop in changesList)
                            {
                                //prop.EntityID
                                if (prop["AP_PROPERTY_NAME"] == "Status")
                                {
                                    bugHistory.oldValue = prop["AP_OLD_VALUE"];
                                    bugHistory.newValue = prop["AP_NEW_VALUE"];
                                    history.Add(bugHistory);
                                }
                            }
                        }

                    }
                }
            }
        }
        catch (Exception e)
        {
            log.Error("Проблема соединения и получения данных из QC ", e);
        }

        return history;
    }      

1 ответ

Попробуйте это (в C#):


1) Наличие только параметра BUG ID (BUGID ниже):

BugFactory bgFact = TDCONNECTION.BugFactory;
TDFilter bgFilt = bgFact.Filter;
bgFilt["BG_BUG_ID"] = BUGID; // This is a STRING

List bugs = bgFilt.NewList();

Bug bug = bugs[1]; // is 1-based
bug.History;

2) Имея сам объект Bug, просто выполните:

bug.History;
Другие вопросы по тегам