DŮLEŽITÉ: Kroky po aktualizaci
Při přechodu ze starší než bezprostředně předcházející verze Alvao, nejprve proveďte kroky po upgradu pro všechny verze, které byly přeskočeny v chronologickém pořadí.
SQL skripty
Ukládání hodnot vlastnosti objektu a jejich dědičnosti se změnila.
Tabulka tblProperty
již v databázi neexistuje, ani neprovádí vProperty
a vPropertyInherited
.
Místo toho jsou k dispozici následující tabulky:
NodeCust
- uložení vlastních a zděděných hodnot vlastnosti. Sloupce tabulky mají stejný typ jako definice vlastnosti.ClassKind
- vlastnosti definované pro každý typ objektu.NodeColumnInheritance
- zděděné (InheritedFromNodeId = NULL) a zděděné (InheritedFromNodeId != NULL) vlastnosti objektů.
K dispozici je také užitečné zobrazení vNodeProperty
a uložené procedury spNodeProperty
.
Musíte aktualizovat své dotazy podle nového schématu databáze.
Příklad 1
Vyberte název hostitele (nezděděný) konkrétního objektu.
ALVAO 11.2:
select pk.txtValue [Hostname] from vPropertyKind pk where pk.lintNodeId = 10 and pk.intKindCode = 3 --HostName
ALVAO 25.1:
select nc.HostName from vNodeProperty np join NodeCust nc on nc.NodeId = np.NodeId where np.NodeId = 10 and np.InheritedFromNodeId is null and np.KindCode = 3 --HostName
Příklad 2
Vyberte název organizace konkrétního objektu. Vlastnost může být zděděna
ALVAO 11.2:
select pk.txtValue [Název organizace] from vPropertyKindInherited pk where pk.lintNodeId = 20 and pk.txtKind = N'Název organizace'
ALVAO 25.1:
select nc.OrganizationName from NodeCust nc where nc.NodeId = 20
Příklad 3
Vyberte všechny vlastnosti (včetně dědičné) s hodnotami konkrétního objektu.
ALVAO 11.2:
select pk.txtKind [Název vlastnosti], pk.txtValue [Hodnota vlastnosti] from vPropertyKindInherited pk where pk.lintNodeId = 30
ALVAO 25.1:
declare @nodes Node insert into @nodes select 30
declare @props NodeProperty insert into @props exec [dbo].[spNodeProperty] @nodes
select k.txtName [Název vlastnosti], p.TextValue [Hodnota vlastnosti] from @props p join tblKind k on k.intKindId = p.KindId where p.NodeId = 30
Vlastní aplikace
Při upgradu z ALVAO 11.2 je třeba upravit stávající vlastní rozšíření, viz ALVAO Asset Management Custom Apps nebo ALVAO Service Desk Custom Apps. Upravit zdrojové soubory a skripty popsané na této stránce. Pokud přecházíte z verze ALVAO 11.1 nebo starší, nejprve převeďte vlastní rozšíření na verzi ALVAO 11.2.
- Alvao.API – Common.Database.ReadColumn – hodnoty Bit – vrací "0"/"1" místo lokalizovaného "Ano"/"Ne". Vrátili jsme se k jeho předchozímu stavu z SD WS. Pokud chcete vrátit lokalizovanou hodnotu namísto logické hodnoty (0/1), použijte Common.CustomColumn.GetValue a volitelný parametr returnBitAsNumber nastavený jako false. (T155790ALVAO).
- IObjectPropertyAutoAction skripty – Metoda OnObjectPropertyModifying nyní vrací objekt ObjectPropertyModifyResult místo Tuple. Je třeba změnit definici této metody na veřejnou ObjectPropertyModifyVýsledek OnObjectPropertyModifying(ObjectPropertyEventArgs e). Potom musíte vrátit objekt tohoto typu z popsané metody (ObjectPropertyModifyResult má parametry bool a řetězec, podobně jako v předchozí verzi.
- IObjectPropertyAutoAction skripty - Metody OnObjectPropertyModifying a OnObjectPropertyAutified nyní jako parametr přijímají objekt typu ObjectPropertyEventArgs. Definici těchto metod je třeba změnit na public ObjectPropertyModifyResult OnObjectPropertyModifying(ObjectPropertyEventArgs e) a public void OnObjectPropertyModified(ObjectPropertyEventArgs e). Tento objekt obsahuje všechny parametry z předchozí verze, takže namísto parametru personId, nyní použijete e.PersonId.
String.GetHashCode byste neměli používat k identifikaci vlastních aplikací, protože metoda není stabilní a může vracet různé hash kódy v různých . ET verze a implementace.
Vlastní ikony
Způsob určení ikon příkazů byl změněn. Postupujte podle instrukcí pro IEntityCommand.Show metoda - Ikon člena.
Vlastní formuláře
Při aktualizaci z verze ALVAO 11.2 je třeba upravit stávající vlastní formuláře, viz Vlastní formulář pro odeslání nového tiketu nebo Vlastní formulář pro schválení tiketu. Upravte .cs a .cshtml soubory popsané na této stránce. Pokud přejdete z ALVAO 11.1 nebo dříve, nejprve konvertujte vlastní rozšíření na ALVAO 11.2.
Musíte přepsat alespoň následující části kódu:
- Nahraďte použití Alvao.ServiceDesk.ServiceDeskWebApp... Alvao.WebApp... ve všech zdrojových souborech.
ALVAO 11.2:
pomocí společnosti Alvao.ServiceDesk.ServiceDeskWebApp.Infrastructure.Custom;
ALVAO 25.1:
pomocí společnosti Alvao.WebApp.Infrastructure.Custom;
- Nahraďte pomocí System.Web.Mvc s Microsoft.AspNetCore.Mvc.
ALVAO 11.2:
používání System.Web.Mvc;
ALVAO 25.1:
pomocí Microsoft.AspNetCore.Mvc;
- Pokud používáte CustomPageController jako základní třídu pro vaši třídu ovladačů, přidejte konstruktor, který má parametry IHttpContextAccessor:
ALVAO 11.2:
public class MyCustomController : CustomPageController
{
...
}
ALVAO 25.1:
using Microsoft.AspNetCore.Http;
...
public class MyCustomController : CustomPageController
{
...
public MyCustomController(IHttpContextAccessor httpContextAccessor)
: base(httpContextAccessor)
{
}
...
}
- Přidejte použití ke standardním prostředkům, pokud je používáte, a přistupujte k nim pouze prostřednictvím třídy Localization.
ALVAO 11.2:
hodit novou CustomHttpException(
HttpStatusCode.Forbidden, Resources.Localization.AccessDenied);
ALVAO 25.1:
pomocí Alvao.WebApp.Resoures;
...
hodí novou CustomHttpException(
HttpStatusCode.Forbidden, Localization.AccessDenied);
- Změňte svůj jmenný prostor z Alvao.ServiceDesk.ServiceDeskWebApp.Custom... na Alvao.WebApp.Custom... ve všech vašich třídách.
ALVAO 11.2:
name espace Alvao.ServiceDesk.ServiceDeskWebApp.Custom.MyFormController
ALVAO 25.1:
jmenný prostor Alvao.WebApp.Custom.MyFormController
- Odstraňte parametr ControllerContext z konstruktorů a metod ve třídách dědících třídu SelectCallbackResponse.
ALVAO 11.2:
veřejná MyGridSelectse(MyGridGrid mřížka, ControllerContext ctx)
: base(grid, ctx)
ALVAO 25.1:
veřejná MyGridSelectse(MyGridGrid mřížka)
: base(mřížka)
- Namísto vytvoření nové instance UrlHelper, volejte její statické metody přímo.
ALVAO 11.2:
UrlHelper helper = new UrlHelper(ctx.RequestContext); Dictionary<string, object> result = new Dictionary<string, object>(); result.Add("link", helper.DefaultAction(
"Index", "Ticket", new { Id = rowData["iHdTicketId"] }));
ALVAO 25.1:
Dictionary<string, object> result = new Dictionary<string, object>(); result.Add("link", UrlHelper.DefaultAction(
"Index", "Ticket", new { Id = rowData["iHdTicketId"] }));
- Změňte způsob čtení parametrů dotazu.
ALVAO 11.2:
Request.Params["TicketId"]
ALVAO 25.1:
- V řadiči:
HttpContext.GetParam ("TicketId")
- Zobrazení:
ViewContext.HttpContext.GetParam("ReturnUrl")
- Získejte IP adresu volající z připojení.
ALVAO 11.2:
IPAddress HostIp = IPAddress.Parse(Request.UserHostAddress);
ALVAO 25.1:
var HostIp = HttpContext.Connection.RemoteIpAdresa
- Změňte typ vhozených HTTP výjimek.
ALVAO 11.2:
hodit novou HttpException();
ALVAO 25.1:
hodí novou CustomHttpException(HttpStatusCode.InternalServerError);
- Změňte způsob práce s relací.
ALVAO 11.2:
UserContactsModel ContactDetails =
Session["UserContactDetails"] as UserContactsModel;
ALVAO 25.1:
var userContactDetails =
HttpContext.Session.GetString("UserContactDetails");
UserContactsModel ContactDetails =
string.IsNullOrEmpty(userContactDetails) ?
null :
JsonConvert.DeserializeObject<UserContactsModel>(userContactDetails);
ALVAO 25.2:
Session je z této verze odstraněna. Místo toho je třeba použít CacheUtil.
CacheUtil.UpdateOrCreateItem($"UserContactDetails_{currentPersonId}", contactDetails, 120);
bool isInCache =
CacheUtil.TryGetFromCache($"UserContactDetails_{currentPersonId}", out UserContactsModel contactDetails);
- Přístup k hlavičkám odpovědi jinak.
ALVAO 11.2:
Response.AddHeader("Content-Disposition", ...);
ALVAO 25.1:
Response.Headers.Append("Content-Disposition", ...);
- Použít statickou metodu StatusCode pro vrácení určitého stavu z řídící metody.
ALVAO 11.2:
vrátit nový HttpStatusCodeResult(
System.Net.HttpStatusCode.NoContent);
ALVAO 25.1:
statusCode(StatusCodes.Status204NoContent);
- Přidejte rozložení do .cshtml pokud není přítomen:
@{
Rozložení = "~/Views/Shared/_Layout.cshtml";
}
- Používáte-li helpery v souborech cshtml, přepište je na funkce.
ALVAO 11.2:
- Prohlášení o funkci:
@helper HelperTest(<T> model)
{
<h1>@Model.Text</h1>
}
- Volání funkcí:
@HelperTest(Model)
ALVAO 25.1:
- Deklarace funkce:
@functions
{
public void HelperTest(<T> model)
{
<h1>@Model.Text</h1>
}
}
- Volání funkcí:
@{
HelperTest(Model);
}
- Ke generování adres URL použijte statické metody UrlHelper.
ALVAO 11.2:
string editTicketUrl =
VirtualPathUtility.ToAbsolute("~/Ticket/Edit/" + Model.TicketId);
ALVAO 25.1:
string editTicketUrl =
UrlHelper.Content("~/Ticket/Edit/" + Model.TicketId);
Užitečné metody nástroje UrlHelper:
public static string Action(string action, string controller) public static string Action(string action, string controller,
RouteValueDictionary routeValues)
public static string Content(string contentPath) public static string Content(string contentPath,
RouteValueDictionary routeValues)
- Pro kódování textů použijte místo HttpUtility nástroj WebUtility.
ALVAO 11.2:
HttpUtility.UrlEncode(Model.RelatedAccountName)
ALVAO 25.1:
WebUtility.UrlEncode(Model.RelatedAccountName)
Chcete-li použít WebUtility, musíte na začátek souboru přidat následující řádek:
@použití System.Net;
- Změňte cestu k systémovým prostředkům.
ALVAO 11.2:
<img src="~/Content/img/favicon.ico" />
ALVAO 25.1:
<img src="~/wwwroot/img/favicon.ico" />