Biznis Scénario:
Bay yon metòd sa aux utilisateurs pou antre précis acha bons rapidement.
Pwoblèm biznis:
Kliyan la fè biznis ak plizyè santèn fournisseurs.
Fournisseurs sont "jan de" espesifik. Sa vle di yon machann vann ekipman konpitè (par. Dell) ou biwo ekipman (par. Staples).
Ki jan nou pèmèt fin utilisateurs ki kreye acha bons chwazi yon machann valab?
Solisyon biznis:
Différence fournisseurs nan sistèm via "jan de".
Pèmèt moun pou yo chwazi "jan de" de pwodwi Et donk bay yon ansanm filtrage de fournisseurs apwopriye.
Solisyon teknik:
Yon fòm InfoPath ki te fèt aux utilisateurs pou antre sou liy achte demandes.
De InfoPath te chwazi lis kontwole chwazi machann. Premye, moun kap itilize li an, sélectionne yon "acha tip". Sa limites yon dezyèm lis chwazi pou genyen sèlman fournisseurs ki vann pou sa jan akizisyon de. Sa se yon klasik en ane ke yo bliye-desann.
Fournisseurs yo sere nan yon bab PANYÒL lis personnalisé ak personnalisé colonnes pou machann attributs tankou non, adrès Et sitou "jan de".
Implement, yon sèvis entènèt pou yon kliyan InfoPath an pou pran sa une à personnalisé machann lis, retounen sèlman fournisseurs asòti yon fournis "jan de".
Envoke sèvis entènèt la via fòm InfoPath.
Leson Appris:
- Premye, li sanble nesesè pou ale wout sa a. Mwen ta pwefere fè filtrage tout nan InfoPath, pa kreye yon sit sèvis fonctionnalités isit la. Sepandan, sèvè fòmilè yo pa bay kapasite filtraj mande l la. Nou kapab mete yon regleman sou yon "jan de" lis chwazi nan fòm pou asye de re-louvri la requête machann, Men, nou pa ka pran l' pou travay correctement. Se pou sa, li te fèt pou aplike pou sèvis entènèt la.
- Sa se yon klasik "en chwazi lis" pwoblèm nan InfoPath a formulaires sèvè monde Et genyen anpil bon ekzanp yo la pou kapab eksplike kijan pou rezoud sa.
- Yon valè vid pou yon kolòn machann lis nan pa retounen yon vid chaîne lè référencé kon sa: initItem["Machann non"]. Alaplas de, li retounen yon Nil.
Kèk lòt nòt:
- M retounen nan yon tableau[] de fournisseurs paske mwen te gen kèk difikilte pou retounen yon ArrayList. InfoPath te se sou zafè sa Et mwen pa t gen tan ou an pant pou batay sou li. Sa a, Men wi, mete yon fo fwontyè sou an total kantite ke ti machann kap. Li tou forcé m' bezwen aplike jiskisi yon bòdu() metòd sou etalaj a paske mwen rayi lide pou retounen nan do 100 a nan fournisseurs Nil. InfoPath pa swen, Men, li te nagged ban mwen. (Ankò, sa a te vin pi fasil pase goumen InfoPath sou ArrayLists).
- Mwen te aplike yon GetSpecificVendorByName() fonksyon osi byen, ki ka intéressant.
Kòd la:
itilize Sistèm;
itilize System.Web;
itilize System.Web.Services;
itilize System.Web.Services.Protocols;
itilize Microsoft.SharePoint;
itilize System.Configuration;
/// <rezime>
/// Sèvis machann: Bay machann ki gen rapò ak sèvis ki jòdi a consommée pa yon fòm kliyan an infopath.
///
/// Istwa:
/// ——–
/// 07/24/07: Inisyal codage, Paul J. Gavin de Conchango.
///
/// </rezime>
[WebService(Namespace = "http://www.conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
piblik klas VendorService : System.Web.Services.WebService
{
/// <rezime>
/// Repwezante yon machann nan yon lis sharepoint repòtaj ki toujou kenbe pa MSUSA.
/// </rezime>
piblik klas Machann
{
piblik Machann() { }
piblik Machann(SPItem initItem)
{
Si (! (initItem["Machann non"] == null)) VendorName = initItem["Machann non"].ToString();
Si (! (initItem["Adrese 1"] == null)) VendorAddress1 = initItem["Adrese 1"].ToString();
Si (! (initItem["Adrese 2"] == null)) VendorAddress2 = initItem["Adrese 2"].ToString();
Si (! (initItem["Vil"] == null)) VendorCity = initItem["Vil"].ToString();
Si (! (initItem["VendorPhone"] == null)) VendorPhone = initItem["VendorPhone"].ToString();
Si (! (initItem["PurchaseType"] == null)) VendorType = initItem["PurchaseType"].ToString();
Si (! (initItem["Eta"] == null)) VendorState = initItem["Eta"].ToString();
Si (! (initItem["Postal"] == null)) VendorZip = initItem["Postal"].ToString();
Si (!(initItem["Fakse"] == null)) VendorFax = initItem["Fakse"].ToString();
Si (!(initItem["SalesRepName"] == null)) VendorSalesRepName = initItem["SalesRepName"].ToString();
VendorItemId = initItem.ID; // Inik Didantite toujou kenbe via bab PANYÒL.
}
piblik int VendorItemId;
piblik filè VendorName;
piblik filè VendorAddress1;
piblik filè VendorAddress2;
piblik filè VendorCity;
piblik filè VendorState;
piblik filè VendorZip;
piblik filè VendorPhone;
piblik filè VendorType;
piblik filè VendorSalesRepName;
piblik filè VendorFax;
}
piblik VendorService () {
//Supprimez apwe liy si w ap itilize fèt konpozan
//InitializeComponent();
}
pwive Machann[] GenerateTestVendors()
{
Machann[] resultList;
resultList = nouvo Machann[100];
Machann v;
v = nouvo Machann();
v.VendorAddress1 = "v1_address1";
v.VendorAddress2 = "v1_address2";
v.VendorCity = "v1_city";
v.VendorName = "v1_vendorname";
v.VendorPhone = "v1_vendorphone";
v.VendorState = "v1_st";
v.VendorType = "v1_type";
v.VendorZip = "v1_zip";
resultList[0] = v;
v = nouvo Machann();
v.VendorAddress1 = "v2_address1";
v.VendorAddress2 = "v2_address2";
v.VendorCity = "v2_city";
v.VendorName = "v2_vendorname";
v.VendorPhone = "v2_vendorphone";
v.VendorState = "v2_st";
v.VendorType = "v2_type";
v.VendorZip = "v2_zip";
resultList[1] = v;
v = nouvo Machann();
v.VendorAddress1 = "v3_address1";
v.VendorAddress2 = "v3_address2";
v.VendorCity = "v3_city";
v.VendorName = "v3_vendorname";
v.VendorPhone = "v3_vendorphone";
v.VendorState = "v3_st";
v.VendorType = "v3_type";
v.VendorZip = "v3_zip";
resultList[2] = v;
retounen resultList;
}
[WebMethod]
piblik Machann GetSpecificVendorById(int vendorId)
{
filè SpVendorSiteName; // Non aktyèl bab PANYÒL sit la ki hôtes machann lis koutim.
filè SpVendorListName; // Non aktyèl bab PANYÒL lis ki gen fournisseurs.
SpVendorSiteName = ConfigurationSettings.AppSettings["VendorListHostingSite"].ToString();
SpVendorListName = ConfigurationSettings.AppSettings["VendorList"].ToString();
itilize (SPSite kote ki gen = nouvo SPSite(SpVendorSiteName))
{
itilize (SPWeb Web = direksyon. OpenWeb())
{
Splist.update() currentList = web. Lis[SpVendorListName];
SPItem specificItem = currentList.Items[vendorId];
retounen nouvo Machann(specificItem);
} // w ap itilize entènèt spweb = site.openweb()
} // w ap itilize kote ki gen spsite = spsite nouvo("http://localhost/mizuho")
}
[WebMethod]
// Que la rele machann inik, nan yon pèspektiv nan afè biznis
piblik Machann GetSpecificVendorByVendorName(filè être)
{
filè SpVendorSiteName; // Non aktyèl bab PANYÒL sit la ki hôtes machann lis koutim.
filè SpVendorListName; // Non aktyèl bab PANYÒL lis ki gen fournisseurs.
SpVendorSiteName = ConfigurationSettings.AppSettings["VendorListHostingSite"].ToString();
SpVendorListName = ConfigurationSettings.AppSettings["VendorList"].ToString();
itilize (SPSite kote ki gen = nouvo SPSite(SpVendorSiteName))
{
itilize (SPWeb Web = direksyon. OpenWeb())
{
Splist.update() currentList = web. Lis[SpVendorListName];
foreach (SPItem vendorItem nan currentList.Items)
{
Si (vendorItem["Machann non"] == null) «««;
Si (vendorItem["Machann non"].ToString().Fèt pou l egal(être))
retounen nouvo Machann(vendorItem);
}
Machann v = nouvo Machann();
v.VendorPhone = "pa te jwenn: " + être;
retounen v;
retounen null;
} // w ap itilize entènèt spweb = site.openweb()
} // w ap itilize kote ki gen spsite = spsite nouvo("http://localhost/mizuho")
} // metòd
[WebMethod]
piblik Machann[] GetVendorsOfType (filè filterType)
{
filè SpVendorSiteName; // Non aktyèl bab PANYÒL sit la ki hôtes t
lis repòtaj li machann.
filè SpVendorListName; // Non aktyèl bab PANYÒL lis ki gen fournisseurs.
SpVendorSiteName = ConfigurationSettings.AppSettings["VendorListHostingSite"].ToString();
SpVendorListName = ConfigurationSettings.AppSettings["VendorList"].ToString();
Machann[] resultList;
int vendorIndex = 0;
resultList = nouvo Machann[1000];
// Initialiser ansanm ak yon mesaj amikal defo.
Machann v = nouvo Machann();
v.VendorName = "Chwazi yon machann tip pou peple lis sa a.";
resultList[0] = v;
// Konvèti filtè an pou yo ka pi ba pou vin pi fasil kòd konpare pi ta.
filterType = filterType.ToLower();
// Si jan filtre de te pase se "tès", pwodui kèk done senp.
#rejyon Filtre tip = "tès"
Si (filterType. À(tès""))
retounen GenerateTestVendors();
#endregion
Si (vre)
{
itilize (SPSite kote ki gen = nouvo SPSite(SpVendorSiteName))
{
itilize (SPWeb Web = direksyon. OpenWeb())
{
v = null;
Splist.update() currentList = web. Lis[SpVendorListName];
// Une nan tout atik nan lis machann.
foreach (SPItem vendorItem nan currentList.Items)
{
filè lowerVendorType;
lowerVendorType = vendorItem["PurchaseType"].ToString().ToLower();
lowerVendorType = lowerVendorType.Substring(3);
Si (lowerVendorType. À(filterType))
{
resultList[vendorIndex ] = nouvo Machann(vendorItem);
}
} // effectuées thru tout fournisseurs nan lis la
retounen TrimVendorArray(vendorIndex, resultList);
// retounen resultList;
} // w ap itilize entènèt spweb = site.openweb()
} // w ap itilize kote ki gen spsite = spsite nouvo("http://localhost/mizuho")
} // si tout bon
retounen null;
}
pwive Machann[] TrimVendorArray(int newsize, Machann[] originalVendorArray)
{
Machann[] trimmedArray;
Si (newsize == 0) newsize = 1;
trimmedArray = nouvo Machann[newsize];
int currentCounter = 0;
Depi (currentCounter = 0; currentCounter < newsize; currentCounter )
{
trimmedArray[currentCounter] = originalVendorArray[currentCounter];
}
retounen trimmedArray;
}
}