Rename activity filter configuration to ticket filters
This commit is contained in:
@@ -24,7 +24,7 @@
|
|||||||
<TicketTypeProcessing Type="UnclassifiedTicket" Value="intern" />
|
<TicketTypeProcessing Type="UnclassifiedTicket" Value="intern" />
|
||||||
<TicketTypeProcessing Type="Incident" Value="intern" />
|
<TicketTypeProcessing Type="Incident" Value="intern" />
|
||||||
</TicketProcessing>
|
</TicketProcessing>
|
||||||
<ActivityFilters>
|
<TicketFilters>
|
||||||
<Filter Provider="Matrix42" Field="Queue" Enabled="false" Match="include" EmptyHandling="include">
|
<Filter Provider="Matrix42" Field="Queue" Enabled="false" Match="include" EmptyHandling="include">
|
||||||
<Value ID="2a7e8099-3d57-f011-1988-00155d320605" Name="HR" />
|
<Value ID="2a7e8099-3d57-f011-1988-00155d320605" Name="HR" />
|
||||||
<Value ID="2a7a8099-3d47-f011-1988-00155d320505" Name="FM" />
|
<Value ID="2a7a8099-3d47-f011-1988-00155d320505" Name="FM" />
|
||||||
@@ -39,7 +39,7 @@
|
|||||||
<Value ID="1676de08-27f3-550c-b410-5610e807aa02" Name="HR Service Management" />
|
<Value ID="1676de08-27f3-550c-b410-5610e807aa02" Name="HR Service Management" />
|
||||||
<Value ID="ed7dde08-199e-c27b-b410-562b64037aa1" Name="Gebäudemanagement" />
|
<Value ID="ed7dde08-199e-c27b-b410-562b64037aa1" Name="Gebäudemanagement" />
|
||||||
</Filter>
|
</Filter>
|
||||||
</ActivityFilters>
|
</TicketFilters>
|
||||||
<OverviewPollingPersonal Policy="Mandatory" Value="10" />
|
<OverviewPollingPersonal Policy="Mandatory" Value="10" />
|
||||||
<OverviewPollingRole Policy="Mandatory" Value="5" />
|
<OverviewPollingRole Policy="Mandatory" Value="5" />
|
||||||
</TicketConfiguration>
|
</TicketConfiguration>
|
||||||
|
|||||||
@@ -132,14 +132,14 @@
|
|||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
</xs:element>
|
</xs:element>
|
||||||
|
|
||||||
<xs:simpleType name="ActivityFilterMatchEnum">
|
<xs:simpleType name="TicketFilterMatchEnum">
|
||||||
<xs:restriction base="xs:string">
|
<xs:restriction base="xs:string">
|
||||||
<xs:enumeration value="include"/>
|
<xs:enumeration value="include"/>
|
||||||
<xs:enumeration value="exclude"/>
|
<xs:enumeration value="exclude"/>
|
||||||
</xs:restriction>
|
</xs:restriction>
|
||||||
</xs:simpleType>
|
</xs:simpleType>
|
||||||
|
|
||||||
<xs:simpleType name="ActivityFilterEmptyHandlingEnum">
|
<xs:simpleType name="TicketFilterEmptyHandlingEnum">
|
||||||
<xs:restriction base="xs:string">
|
<xs:restriction base="xs:string">
|
||||||
<xs:enumeration value="include"/>
|
<xs:enumeration value="include"/>
|
||||||
<xs:enumeration value="exclude"/>
|
<xs:enumeration value="exclude"/>
|
||||||
@@ -197,7 +197,7 @@
|
|||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
</xs:element>
|
</xs:element>
|
||||||
|
|
||||||
<xs:element name="ActivityFilters" minOccurs="0" maxOccurs="1">
|
<xs:element name="TicketFilters" minOccurs="0" maxOccurs="1">
|
||||||
<xs:complexType>
|
<xs:complexType>
|
||||||
<xs:sequence>
|
<xs:sequence>
|
||||||
<xs:element name="Filter" minOccurs="0" maxOccurs="unbounded">
|
<xs:element name="Filter" minOccurs="0" maxOccurs="unbounded">
|
||||||
@@ -213,8 +213,8 @@
|
|||||||
<xs:attribute name="Provider" type="xs:string" use="optional"/>
|
<xs:attribute name="Provider" type="xs:string" use="optional"/>
|
||||||
<xs:attribute name="Field" type="xs:string" use="required"/>
|
<xs:attribute name="Field" type="xs:string" use="required"/>
|
||||||
<xs:attribute name="Enabled" type="xs:boolean" use="optional" default="false"/>
|
<xs:attribute name="Enabled" type="xs:boolean" use="optional" default="false"/>
|
||||||
<xs:attribute name="Match" type="ActivityFilterMatchEnum" use="optional" default="exclude"/>
|
<xs:attribute name="Match" type="TicketFilterMatchEnum" use="optional" default="exclude"/>
|
||||||
<xs:attribute name="EmptyHandling" type="ActivityFilterEmptyHandlingEnum" use="optional" default="include"/>
|
<xs:attribute name="EmptyHandling" type="TicketFilterEmptyHandlingEnum" use="optional" default="include"/>
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
</xs:element>
|
</xs:element>
|
||||||
</xs:sequence>
|
</xs:sequence>
|
||||||
|
|||||||
@@ -413,8 +413,8 @@ namespace C4IT.DataHistoryProvider
|
|||||||
GlobalConfig = new cF4sdGlobalConfig(regPath: null);
|
GlobalConfig = new cF4sdGlobalConfig(regPath: null);
|
||||||
if (GlobalParametersConfigFile.Parameters != null)
|
if (GlobalParametersConfigFile.Parameters != null)
|
||||||
GlobalConfig.Load(CentralParameters: GlobalParametersConfigFile.Parameters);
|
GlobalConfig.Load(CentralParameters: GlobalParametersConfigFile.Parameters);
|
||||||
GlobalConfig.TicketConfiguration.ActivityFilters =
|
GlobalConfig.TicketConfiguration.TicketFilters =
|
||||||
GlobalParametersConfigFile.ActivityFilters ?? new cActivityFilterPolicy();
|
GlobalParametersConfigFile.TicketFilters ?? new cTicketFilterPolicy();
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@@ -508,7 +508,7 @@ namespace C4IT.DataHistoryProvider
|
|||||||
// load the global parameters
|
// load the global parameters
|
||||||
if (!RefreshGlobalConfigurationParameters())
|
if (!RefreshGlobalConfigurationParameters())
|
||||||
return false;
|
return false;
|
||||||
InfrastructureConfig.RemoveLegacyActivityFilterConfiguration();
|
InfrastructureConfig.RemoveLegacyTicketFilterConfiguration();
|
||||||
|
|
||||||
mainDbConnection = InfrastructureConfig.HistoryDB.Connection;
|
mainDbConnection = InfrastructureConfig.HistoryDB.Connection;
|
||||||
|
|
||||||
|
|||||||
@@ -694,18 +694,18 @@ namespace C4IT.DataHistoryProvider
|
|||||||
var objSid = new SecurityIdentifier(UserId.sid, 0);
|
var objSid = new SecurityIdentifier(UserId.sid, 0);
|
||||||
var strSid = objSid.ToString();
|
var strSid = objSid.ToString();
|
||||||
var _wc = await GetWebClient(requestInfo, Token);
|
var _wc = await GetWebClient(requestInfo, Token);
|
||||||
var request = new cTicketActivityListRequest
|
var request = new cTicketListFilterRequest
|
||||||
{
|
{
|
||||||
Sid = strSid,
|
Sid = strSid,
|
||||||
Hours = Collector.InfrastructureConfig.M42Wpm.ClosedTicketHistory,
|
Hours = Collector.InfrastructureConfig.M42Wpm.ClosedTicketHistory,
|
||||||
Filters = GetActivityFilters()
|
Filters = GetTicketFilters()
|
||||||
};
|
};
|
||||||
var res = await PostJsonAsync(_wc, constUrlGetTicketsV2, request, Token);
|
var res = await PostJsonAsync(_wc, constUrlGetTicketsV2, request, Token);
|
||||||
if (res?.StatusCode == HttpStatusCode.NotFound)
|
if (res?.StatusCode == HttpStatusCode.NotFound)
|
||||||
{
|
{
|
||||||
if (!TryGetLegacyQueueFilter(out var queueOption, out var encodedQueues))
|
if (!TryGetLegacyQueueFilter(out var queueOption, out var encodedQueues))
|
||||||
{
|
{
|
||||||
LogEntry("The activity filter policy requires the v2 ticket API; legacy fallback was rejected (fail closed).", LogLevels.Warning);
|
LogEntry("The ticket filter policy requires the v2 ticket API; legacy fallback was rejected (fail closed).", LogLevels.Warning);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
var strUrl = string.Format(
|
var strUrl = string.Format(
|
||||||
@@ -1111,17 +1111,17 @@ namespace C4IT.DataHistoryProvider
|
|||||||
return (int)Collector.InfrastructureConfig.M42Wpm.ActivityQueueFilterOption;
|
return (int)Collector.InfrastructureConfig.M42Wpm.ActivityQueueFilterOption;
|
||||||
}
|
}
|
||||||
|
|
||||||
private cActivityFilterPolicy GetActivityFilters()
|
private cTicketFilterPolicy GetTicketFilters()
|
||||||
{
|
{
|
||||||
return Collector?.GetGlobalConfig()?.TicketConfiguration?.ActivityFilters
|
return Collector?.GetGlobalConfig()?.TicketConfiguration?.TicketFilters
|
||||||
?? new cActivityFilterPolicy();
|
?? new cTicketFilterPolicy();
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool TryGetLegacyQueueFilter(out int queueOption, out string encodedQueues)
|
private bool TryGetLegacyQueueFilter(out int queueOption, out string encodedQueues)
|
||||||
{
|
{
|
||||||
queueOption = 0;
|
queueOption = 0;
|
||||||
encodedQueues = null;
|
encodedQueues = null;
|
||||||
var activeFilters = (GetActivityFilters()?.Filters ?? new List<cActivityFilter>())
|
var activeFilters = (GetTicketFilters()?.Filters ?? new List<cTicketFilter>())
|
||||||
.Where(entry => entry?.Enabled == true)
|
.Where(entry => entry?.Enabled == true)
|
||||||
.ToList();
|
.ToList();
|
||||||
if (activeFilters.Count == 0)
|
if (activeFilters.Count == 0)
|
||||||
@@ -1129,17 +1129,17 @@ namespace C4IT.DataHistoryProvider
|
|||||||
if (activeFilters.Count != 1)
|
if (activeFilters.Count != 1)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
var activityFilter = activeFilters[0];
|
var ticketFilter = activeFilters[0];
|
||||||
if (!string.Equals(activityFilter.Provider, "Matrix42", StringComparison.OrdinalIgnoreCase)
|
if (!string.Equals(ticketFilter.Provider, "Matrix42", StringComparison.OrdinalIgnoreCase)
|
||||||
|| !string.Equals(activityFilter.Field, "Queue", StringComparison.OrdinalIgnoreCase)
|
|| !string.Equals(ticketFilter.Field, "Queue", StringComparison.OrdinalIgnoreCase)
|
||||||
|| activityFilter.Match != enumActivityFilterMatch.include
|
|| ticketFilter.Match != enumTicketFilterMatch.include
|
||||||
|| activityFilter.EmptyHandling == enumActivityFilterEmptyHandling.only)
|
|| ticketFilter.EmptyHandling == enumTicketFilterEmptyHandling.only)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
queueOption = activityFilter.EmptyHandling == enumActivityFilterEmptyHandling.include ? 1 : 2;
|
queueOption = ticketFilter.EmptyHandling == enumTicketFilterEmptyHandling.include ? 1 : 2;
|
||||||
var values = (activityFilter.Values ?? new List<cActivityFilterValue>())
|
var values = (ticketFilter.Values ?? new List<cTicketFilterValue>())
|
||||||
.Where(value => value != null)
|
.Where(value => value != null)
|
||||||
.Select(value =>
|
.Select(value =>
|
||||||
{
|
{
|
||||||
@@ -1227,14 +1227,14 @@ namespace C4IT.DataHistoryProvider
|
|||||||
Sid = sid,
|
Sid = sid,
|
||||||
Scope = scope,
|
Scope = scope,
|
||||||
Keys = requestedKeys?.ToList() ?? new List<string>(),
|
Keys = requestedKeys?.ToList() ?? new List<string>(),
|
||||||
Filters = GetActivityFilters()
|
Filters = GetTicketFilters()
|
||||||
};
|
};
|
||||||
var res = await PostJsonAsync(wc, constUrlGetTicketOverviewCountsV2, request, token);
|
var res = await PostJsonAsync(wc, constUrlGetTicketOverviewCountsV2, request, token);
|
||||||
if (res?.StatusCode == HttpStatusCode.NotFound)
|
if (res?.StatusCode == HttpStatusCode.NotFound)
|
||||||
{
|
{
|
||||||
if (!TryGetLegacyQueueFilter(out var queueOption, out var encodedQueues))
|
if (!TryGetLegacyQueueFilter(out var queueOption, out var encodedQueues))
|
||||||
{
|
{
|
||||||
LogEntry("The activity filter policy requires the v2 overview API; legacy fallback was rejected (fail closed).", LogLevels.Warning);
|
LogEntry("The ticket filter policy requires the v2 overview API; legacy fallback was rejected (fail closed).", LogLevels.Warning);
|
||||||
return new Dictionary<string, int>(StringComparer.OrdinalIgnoreCase);
|
return new Dictionary<string, int>(StringComparer.OrdinalIgnoreCase);
|
||||||
}
|
}
|
||||||
var urlBuilder = new StringBuilder(constUrlGetTicketOverviewCounts);
|
var urlBuilder = new StringBuilder(constUrlGetTicketOverviewCounts);
|
||||||
@@ -1358,14 +1358,14 @@ namespace C4IT.DataHistoryProvider
|
|||||||
Scope = scope,
|
Scope = scope,
|
||||||
Key = key,
|
Key = key,
|
||||||
Count = Math.Max(0, count),
|
Count = Math.Max(0, count),
|
||||||
Filters = GetActivityFilters()
|
Filters = GetTicketFilters()
|
||||||
};
|
};
|
||||||
var res = await PostJsonAsync(wc, constUrlGetTicketOverviewRelationsV2, request, Token);
|
var res = await PostJsonAsync(wc, constUrlGetTicketOverviewRelationsV2, request, Token);
|
||||||
if (res?.StatusCode == HttpStatusCode.NotFound)
|
if (res?.StatusCode == HttpStatusCode.NotFound)
|
||||||
{
|
{
|
||||||
if (!TryGetLegacyQueueFilter(out var queueOption, out var encodedQueues))
|
if (!TryGetLegacyQueueFilter(out var queueOption, out var encodedQueues))
|
||||||
{
|
{
|
||||||
LogEntry("The activity filter policy requires the v2 relation API; legacy fallback was rejected (fail closed).", LogLevels.Warning);
|
LogEntry("The ticket filter policy requires the v2 relation API; legacy fallback was rejected (fail closed).", LogLevels.Warning);
|
||||||
return new List<cF4sdApiSearchResultRelation>();
|
return new List<cF4sdApiSearchResultRelation>();
|
||||||
}
|
}
|
||||||
var urlBuilder = new StringBuilder(constUrlGetTicketOverviewRelations);
|
var urlBuilder = new StringBuilder(constUrlGetTicketOverviewRelations);
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ namespace C4IT.DataHistoryProvider
|
|||||||
private const string constConfigRootElement = "F4SD-Global-Configuration";
|
private const string constConfigRootElement = "F4SD-Global-Configuration";
|
||||||
|
|
||||||
public cConfigHelperParameterList Parameters { get; private set; } = null;
|
public cConfigHelperParameterList Parameters { get; private set; } = null;
|
||||||
public cActivityFilterPolicy ActivityFilters { get; private set; } = new cActivityFilterPolicy();
|
public cTicketFilterPolicy TicketFilters { get; private set; } = new cTicketFilterPolicy();
|
||||||
|
|
||||||
private cDataHistoryConfigInfrastructure InfrastructureConfig = null;
|
private cDataHistoryConfigInfrastructure InfrastructureConfig = null;
|
||||||
|
|
||||||
@@ -111,8 +111,8 @@ namespace C4IT.DataHistoryProvider
|
|||||||
if (_ticketProcessingEntry != null)
|
if (_ticketProcessingEntry != null)
|
||||||
_result.Items[_ticketProcessingEntry.Name] = _ticketProcessingEntry;
|
_result.Items[_ticketProcessingEntry.Name] = _ticketProcessingEntry;
|
||||||
continue;
|
continue;
|
||||||
case "ActivityFilters":
|
case "TicketFilters":
|
||||||
ActivityFilters = getActivityFilters(_item, Parser);
|
TicketFilters = getTicketFilters(_item, Parser);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -166,20 +166,20 @@ namespace C4IT.DataHistoryProvider
|
|||||||
return _result;
|
return _result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static cActivityFilterPolicy getActivityFilters(XmlElement node, cXmlParser parser)
|
private static cTicketFilterPolicy getTicketFilters(XmlElement node, cXmlParser parser)
|
||||||
{
|
{
|
||||||
var result = new cActivityFilterPolicy();
|
var result = new cTicketFilterPolicy();
|
||||||
foreach (XmlElement filterNode in node.SelectNodes("Filter").OfType<XmlElement>())
|
foreach (XmlElement filterNode in node.SelectNodes("Filter").OfType<XmlElement>())
|
||||||
{
|
{
|
||||||
parser.EnterElement(filterNode.Name);
|
parser.EnterElement(filterNode.Name);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (!Enum.TryParse(filterNode.GetAttribute("Match"), true, out enumActivityFilterMatch match))
|
if (!Enum.TryParse(filterNode.GetAttribute("Match"), true, out enumTicketFilterMatch match))
|
||||||
match = enumActivityFilterMatch.exclude;
|
match = enumTicketFilterMatch.exclude;
|
||||||
if (!Enum.TryParse(filterNode.GetAttribute("EmptyHandling"), true, out enumActivityFilterEmptyHandling emptyHandling))
|
if (!Enum.TryParse(filterNode.GetAttribute("EmptyHandling"), true, out enumTicketFilterEmptyHandling emptyHandling))
|
||||||
emptyHandling = enumActivityFilterEmptyHandling.include;
|
emptyHandling = enumTicketFilterEmptyHandling.include;
|
||||||
|
|
||||||
var filter = new cActivityFilter
|
var filter = new cTicketFilter
|
||||||
{
|
{
|
||||||
Provider = filterNode.GetAttribute("Provider"),
|
Provider = filterNode.GetAttribute("Provider"),
|
||||||
Field = filterNode.GetAttribute("Field"),
|
Field = filterNode.GetAttribute("Field"),
|
||||||
@@ -190,7 +190,7 @@ namespace C4IT.DataHistoryProvider
|
|||||||
|
|
||||||
foreach (XmlElement valueNode in filterNode.SelectNodes("Value").OfType<XmlElement>())
|
foreach (XmlElement valueNode in filterNode.SelectNodes("Value").OfType<XmlElement>())
|
||||||
{
|
{
|
||||||
filter.Values.Add(new cActivityFilterValue
|
filter.Values.Add(new cTicketFilterValue
|
||||||
{
|
{
|
||||||
ID = valueNode.GetAttribute("ID"),
|
ID = valueNode.GetAttribute("ID"),
|
||||||
Name = valueNode.GetAttribute("Name")
|
Name = valueNode.GetAttribute("Name")
|
||||||
@@ -208,7 +208,7 @@ namespace C4IT.DataHistoryProvider
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private string getDefaultActivityFiltersXml()
|
private string getDefaultTicketFiltersXml()
|
||||||
{
|
{
|
||||||
var queueOption = InfrastructureConfig?.M42Wpm?.ActivityQueueFilterOption
|
var queueOption = InfrastructureConfig?.M42Wpm?.ActivityQueueFilterOption
|
||||||
?? enumActivityQueueFilterOptions.showAll;
|
?? enumActivityQueueFilterOptions.showAll;
|
||||||
@@ -216,11 +216,11 @@ namespace C4IT.DataHistoryProvider
|
|||||||
?? new List<cApiM42TicketQueueInfo>();
|
?? new List<cApiM42TicketQueueInfo>();
|
||||||
var enableQueueFilter = queueOption != enumActivityQueueFilterOptions.showAll && queues.Count > 0;
|
var enableQueueFilter = queueOption != enumActivityQueueFilterOptions.showAll && queues.Count > 0;
|
||||||
var emptyHandling = queueOption == enumActivityQueueFilterOptions.onlyListedQueues
|
var emptyHandling = queueOption == enumActivityQueueFilterOptions.onlyListedQueues
|
||||||
? enumActivityFilterEmptyHandling.exclude
|
? enumTicketFilterEmptyHandling.exclude
|
||||||
: enumActivityFilterEmptyHandling.include;
|
: enumTicketFilterEmptyHandling.include;
|
||||||
|
|
||||||
var xml = new StringBuilder();
|
var xml = new StringBuilder();
|
||||||
xml.Append("<ActivityFilters>");
|
xml.Append("<TicketFilters>");
|
||||||
xml.AppendFormat(
|
xml.AppendFormat(
|
||||||
"<Filter Provider=\"Matrix42\" Field=\"Queue\" Enabled=\"{0}\" Match=\"include\" EmptyHandling=\"{1}\">",
|
"<Filter Provider=\"Matrix42\" Field=\"Queue\" Enabled=\"{0}\" Match=\"include\" EmptyHandling=\"{1}\">",
|
||||||
enableQueueFilter.ToString().ToLowerInvariant(),
|
enableQueueFilter.ToString().ToLowerInvariant(),
|
||||||
@@ -243,7 +243,7 @@ namespace C4IT.DataHistoryProvider
|
|||||||
xml.Append("<Value ID=\"1676de08-27f3-550c-b410-5610e807aa02\" Name=\"HR Service Management\" />");
|
xml.Append("<Value ID=\"1676de08-27f3-550c-b410-5610e807aa02\" Name=\"HR Service Management\" />");
|
||||||
xml.Append("<Value ID=\"ed7dde08-199e-c27b-b410-562b64037aa1\" Name=\"Gebäudemanagement\" />");
|
xml.Append("<Value ID=\"ed7dde08-199e-c27b-b410-562b64037aa1\" Name=\"Gebäudemanagement\" />");
|
||||||
xml.Append("</Filter>");
|
xml.Append("</Filter>");
|
||||||
xml.Append("</ActivityFilters>");
|
xml.Append("</TicketFilters>");
|
||||||
return xml.ToString();
|
return xml.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -582,12 +582,16 @@ namespace C4IT.DataHistoryProvider
|
|||||||
);
|
);
|
||||||
RetVal |= DoXmlInsertElement(XmlRoot
|
RetVal |= DoXmlInsertElement(XmlRoot
|
||||||
, "TicketConfiguration"
|
, "TicketConfiguration"
|
||||||
, "ActivityFilters"
|
, "TicketFilters"
|
||||||
, getDefaultActivityFiltersXml()
|
, getDefaultTicketFiltersXml()
|
||||||
);
|
);
|
||||||
RetVal |= DoXmlRemoveElement(XmlRoot
|
RetVal |= DoXmlRemoveElement(XmlRoot
|
||||||
, "TicketConfiguration"
|
, "TicketConfiguration"
|
||||||
, "OpenActivitiesExternally"
|
, "ActivityFilters"
|
||||||
|
);
|
||||||
|
RetVal |= DoXmlRemoveElement(XmlRoot
|
||||||
|
, "TicketConfiguration"
|
||||||
|
, "OpenActivitiesExternally"
|
||||||
);
|
);
|
||||||
RetVal |= DoXmlInsertElement(XmlRoot
|
RetVal |= DoXmlInsertElement(XmlRoot
|
||||||
, "TicketConfiguration"
|
, "TicketConfiguration"
|
||||||
|
|||||||
@@ -121,9 +121,9 @@ namespace C4IT.DataHistoryProvider
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal bool RemoveLegacyActivityFilterConfiguration()
|
internal bool RemoveLegacyTicketFilterConfiguration()
|
||||||
{
|
{
|
||||||
// Queue filtering moved to the provider-neutral global ActivityFilters policy.
|
// Queue filtering moved to the provider-neutral global TicketFilters policy.
|
||||||
// This intentionally runs only after the global configuration was loaded:
|
// This intentionally runs only after the global configuration was loaded:
|
||||||
// DoXmlUpdates runs before InstantiateProperties and would otherwise erase
|
// DoXmlUpdates runs before InstantiateProperties and would otherwise erase
|
||||||
// the values before the one-time migration can read them.
|
// the values before the one-time migration can read them.
|
||||||
|
|||||||
@@ -24,7 +24,7 @@
|
|||||||
<TicketTypeProcessing Type="UnclassifiedTicket" Value="intern" />
|
<TicketTypeProcessing Type="UnclassifiedTicket" Value="intern" />
|
||||||
<TicketTypeProcessing Type="Incident" Value="intern" />
|
<TicketTypeProcessing Type="Incident" Value="intern" />
|
||||||
</TicketProcessing>
|
</TicketProcessing>
|
||||||
<ActivityFilters>
|
<TicketFilters>
|
||||||
<Filter Provider="Matrix42" Field="Queue" Enabled="false" Match="include" EmptyHandling="include">
|
<Filter Provider="Matrix42" Field="Queue" Enabled="false" Match="include" EmptyHandling="include">
|
||||||
<Value ID="2a7e8099-3d57-f011-1988-00155d320605" Name="HR" />
|
<Value ID="2a7e8099-3d57-f011-1988-00155d320605" Name="HR" />
|
||||||
<Value ID="2a7a8099-3d47-f011-1988-00155d320505" Name="FM" />
|
<Value ID="2a7a8099-3d47-f011-1988-00155d320505" Name="FM" />
|
||||||
@@ -39,7 +39,7 @@
|
|||||||
<Value ID="1676de08-27f3-550c-b410-5610e807aa02" Name="HR Service Management" />
|
<Value ID="1676de08-27f3-550c-b410-5610e807aa02" Name="HR Service Management" />
|
||||||
<Value ID="ed7dde08-199e-c27b-b410-562b64037aa1" Name="Gebäudemanagement" />
|
<Value ID="ed7dde08-199e-c27b-b410-562b64037aa1" Name="Gebäudemanagement" />
|
||||||
</Filter>
|
</Filter>
|
||||||
</ActivityFilters>
|
</TicketFilters>
|
||||||
<OverviewPollingPersonal Policy="Mandatory" Value="10" />
|
<OverviewPollingPersonal Policy="Mandatory" Value="10" />
|
||||||
<OverviewPollingRole Policy="Mandatory" Value="5" />
|
<OverviewPollingRole Policy="Mandatory" Value="5" />
|
||||||
</TicketConfiguration>
|
</TicketConfiguration>
|
||||||
|
|||||||
@@ -24,7 +24,7 @@
|
|||||||
<TicketTypeProcessing Type="UnclassifiedTicket" Value="intern" />
|
<TicketTypeProcessing Type="UnclassifiedTicket" Value="intern" />
|
||||||
<TicketTypeProcessing Type="Incident" Value="intern" />
|
<TicketTypeProcessing Type="Incident" Value="intern" />
|
||||||
</TicketProcessing>
|
</TicketProcessing>
|
||||||
<ActivityFilters>
|
<TicketFilters>
|
||||||
<Filter Provider="Matrix42" Field="Queue" Enabled="false" Match="include" EmptyHandling="include">
|
<Filter Provider="Matrix42" Field="Queue" Enabled="false" Match="include" EmptyHandling="include">
|
||||||
<Value ID="2a7e8099-3d57-f011-1988-00155d320605" Name="HR" />
|
<Value ID="2a7e8099-3d57-f011-1988-00155d320605" Name="HR" />
|
||||||
<Value ID="2a7a8099-3d47-f011-1988-00155d320505" Name="FM" />
|
<Value ID="2a7a8099-3d47-f011-1988-00155d320505" Name="FM" />
|
||||||
@@ -39,7 +39,7 @@
|
|||||||
<Value ID="1676de08-27f3-550c-b410-5610e807aa02" Name="HR Service Management" />
|
<Value ID="1676de08-27f3-550c-b410-5610e807aa02" Name="HR Service Management" />
|
||||||
<Value ID="ed7dde08-199e-c27b-b410-562b64037aa1" Name="Gebäudemanagement" />
|
<Value ID="ed7dde08-199e-c27b-b410-562b64037aa1" Name="Gebäudemanagement" />
|
||||||
</Filter>
|
</Filter>
|
||||||
</ActivityFilters>
|
</TicketFilters>
|
||||||
<OverviewPollingPersonal Policy="Mandatory" Value="10" />
|
<OverviewPollingPersonal Policy="Mandatory" Value="10" />
|
||||||
<OverviewPollingRole Policy="Mandatory" Value="5" />
|
<OverviewPollingRole Policy="Mandatory" Value="5" />
|
||||||
</TicketConfiguration>
|
</TicketConfiguration>
|
||||||
|
|||||||
@@ -132,14 +132,14 @@
|
|||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
</xs:element>
|
</xs:element>
|
||||||
|
|
||||||
<xs:simpleType name="ActivityFilterMatchEnum">
|
<xs:simpleType name="TicketFilterMatchEnum">
|
||||||
<xs:restriction base="xs:string">
|
<xs:restriction base="xs:string">
|
||||||
<xs:enumeration value="include"/>
|
<xs:enumeration value="include"/>
|
||||||
<xs:enumeration value="exclude"/>
|
<xs:enumeration value="exclude"/>
|
||||||
</xs:restriction>
|
</xs:restriction>
|
||||||
</xs:simpleType>
|
</xs:simpleType>
|
||||||
|
|
||||||
<xs:simpleType name="ActivityFilterEmptyHandlingEnum">
|
<xs:simpleType name="TicketFilterEmptyHandlingEnum">
|
||||||
<xs:restriction base="xs:string">
|
<xs:restriction base="xs:string">
|
||||||
<xs:enumeration value="include"/>
|
<xs:enumeration value="include"/>
|
||||||
<xs:enumeration value="exclude"/>
|
<xs:enumeration value="exclude"/>
|
||||||
@@ -197,7 +197,7 @@
|
|||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
</xs:element>
|
</xs:element>
|
||||||
|
|
||||||
<xs:element name="ActivityFilters" minOccurs="0" maxOccurs="1">
|
<xs:element name="TicketFilters" minOccurs="0" maxOccurs="1">
|
||||||
<xs:complexType>
|
<xs:complexType>
|
||||||
<xs:sequence>
|
<xs:sequence>
|
||||||
<xs:element name="Filter" minOccurs="0" maxOccurs="unbounded">
|
<xs:element name="Filter" minOccurs="0" maxOccurs="unbounded">
|
||||||
@@ -213,8 +213,8 @@
|
|||||||
<xs:attribute name="Provider" type="xs:string" use="optional"/>
|
<xs:attribute name="Provider" type="xs:string" use="optional"/>
|
||||||
<xs:attribute name="Field" type="xs:string" use="required"/>
|
<xs:attribute name="Field" type="xs:string" use="required"/>
|
||||||
<xs:attribute name="Enabled" type="xs:boolean" use="optional" default="false"/>
|
<xs:attribute name="Enabled" type="xs:boolean" use="optional" default="false"/>
|
||||||
<xs:attribute name="Match" type="ActivityFilterMatchEnum" use="optional" default="exclude"/>
|
<xs:attribute name="Match" type="TicketFilterMatchEnum" use="optional" default="exclude"/>
|
||||||
<xs:attribute name="EmptyHandling" type="ActivityFilterEmptyHandlingEnum" use="optional" default="include"/>
|
<xs:attribute name="EmptyHandling" type="TicketFilterEmptyHandlingEnum" use="optional" default="include"/>
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
</xs:element>
|
</xs:element>
|
||||||
</xs:sequence>
|
</xs:sequence>
|
||||||
|
|||||||
Reference in New Issue
Block a user