Přeskočit na hlavní obsah

DŮLEŽITÉ: Kroky po aktualizaci

Varování

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:

vyberte pk.txtValue [Hostname]
z vPropertyKind pk
where pk.lintNodeId = 10 a pk.intKindCode = 3 --HostName

ALVAO 25.1:

select nc.HostName
from vNodeProperty np
join NodeCust nc on nc.NodeId = np. odeId
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 [Organization name]
from vPropertyKindInherited pk
where pk.lintNodeId = 20 and pk.txtKind = N'Organization name'

ALVAO 25.1:

vyberte nc.OrganizationName
z NodeCust nc
, kde 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 [Property name], pk.txtValue [Property value]
from vPropertyKindInited pk
where pk.lintNodeId = 30

ALVAO 25.1:

deklarovat @nodes Node
vložit do @nodes select 30

deklarovat @props NodeProperty
vložit do @props
exec [dbo].[spNodeProperty] @nodes

vyberte k. xtName [Property name], p.TextValue [Property value]
from @props p
join tblKind k on k.intKindId = p.KindId
, where p.NodeId = 30

Vlastní aplikace

Při přechodu z ALVAO 11. , musíte upravit existují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 jste upgrade z ALVAO 11.1 nebo dříve, první převedte vlastní rozšíření na ALVAO 11.2.

  1. 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).
  2. 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.
  3. IObjectPropertyAutoAction skripty - Metody OnObjectPropertyModifying a OnObjectPropertyAutified nyní jako parametr přijímají objekt typu ObjectPropertyEventArgs. Je třeba změnit definici těchto metod na veřejnou vlastnost ObjectPropertyModifyVýsledek OnObjectPropertyModifying(ObjectPropertyEventArgs e) a veřejnou neplatnou OnObjectPropertyModified(ObjectPropertyEventArgs e). Tento objekt obsahuje všechny parametry z předchozí verze, takže namísto parametru personId, nyní použijete e.PersonId.
Varování

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 přechodu z ALVAO 11. , musíte upravit existující vlastní formuláře, viz Vlastní formulář pro odeslání nového tiket nebo vlastní formulář 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:

using Alvao.ServiceDesk.ServiceDeskWebApp.Infrastructure.Custom;

ALVAO 25.1:

using Alvao.WebApp.Infrastructure.Custom;
  • Nahraďte using System.Web.Mvc s Microsoft.AspNetCore.Mvc.

ALVAO 11.2:

používání System.Web.Mvc;

ALVAO 25.1:

using 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í resources, pokud je používáte a přistupujete pouze skrze třídu lokalizace.

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 = nový UrlHelper(ctx.RequestContext);
Slovník<string, object> výsledek = nový Dictionary<string, object>();
výsledek. dd("link", helper.DefaultAction(
"Index", "Tiket", nový { 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 ContactPodrobnosti = 
Session["UserContactDetails"] jako UserContactsModel;

ALVAO 25.1:

var userContactPodrobnosti = 
HttpContext.Session.GetString("UserContactDetails");
UserContactsModel ContactPodrobnosti =
string.IsNullOrEmpty(userContactDetails) ?
null :
JsonConvert.DeserializeObject<UserContactsModel>(userContactDetails);
  • 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>
}
  • Function calling:
@HelperTest(Model)

ALVAO 25.1:

  • Function declaration:
@functions 
{
public void HelperTest(<T> model)
{
<h1>@Model.Text</h1>
}
}
  • Function calling:
@{
HelperTest(Model);
}
  • Use UrlHelper static methods to generate URLs.

ALVAO 11.2:

string editTicketUrl = 
VirtualPathUtility.ToAbsolute("~/Ticket/Edit/" + Model.TicketId);

ALVAO 25.1:

string editTicketUrl = 
UrlHelper.Content("~/Ticket/Edit/" + Model.TicketId);

Useful UrlHelper methods:

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)
  • Use WebUtility instead of HttpUtility to encode texts.

ALVAO 11.2:

HttpUtility.UrlEncode(Model.RelatedAccountName)

ALVAO 25.1:

WebUtility.UrlEncode(Model.RelatedAccountName)

To use WebUtility you also need to add the following line at the beginning of the file:

@using System.Net;
  • Change the path to system resources.

ALVAO 11.2:

<img src="~/Content/img/favicon.ico" />

ALVAO 25.1:

<img src="~/wwwroot/img/favicon.ico" />