Biznesa scenāriju:
Metode, kas ļauj lietotājiem ātri ievadīt precīzu pirkuma pieprasījumu sniegt.
Biznesa problēmas:
Klients veic komercdarbību ar vairāki simti pārdevēji.
Pārdevēji ir "tips" īpašas. Tas nozīmē, ka pārdevējs pārdod datoru iekārtas (piem.. Dell) vai kancelejas preces (piem.. Skavas).
Kā mēs ļautu gala lietotājiem, kuri veido pirkuma pieprasījumus atlasiet derīgu piegādātāju?
Biznesa risinājumu:
Atšķirt kreditori sistēmā caur "tips".
Iespējot lietotājus atlasīt tipu"" produktu un pēc tam nodrošina filtrēto atbilstošajiem piegādātājiem.
Tehniskais risinājums:
Ir izstrādāta InfoPath veidlapa ļauj lietotājiem ievadīt tiešsaistes pirkuma pieprasījumus.
Divi InfoPath atlases sarakstus kontrolē piegādātāja izvēli. Pirmais, lietotājs atlasa "pirkšanas tips". Tas ierobežo otro izvēles sarakstu satur tikai pārdevēji, kas pārdod pirkšanas tipu. Tas ir klasisks kaskādes Nolaižamajā.
Kreditoriem tiek glabātas MOSS pielāgotu sarakstu ar pielāgotu kolonnu piegādātāja atribūtiem, piemēram, nosaukums, adresi un it īpaši "tips".
Ieviest web pakalpojums, InfoPath klientu patērēt, ka atkārtojas pa pasūtījuma piegādātāju sarakstu, atgriežas tikai kreditoriem, saskaņojot norādīto "tipa".
Lietot web pakalpojumu, izmantojot InfoPath veidlapas.
Gūtās mācības:
- Pirmais, tas šķiet vajadzīgs, lai iet šo ceļu. Es vēlētos, lai veiktu filtrēšanu tikai programmā InfoPath un nevar izveidot jebkuru web pakalpojuma funkcionalitāti. Tomēr, veidlapu serveris nenodrošina nepieciešamo filtrēšanas iespējas. Mēs varam nodot uz kārtulu "tips" izvēles saraksta veidā kārtot vēlreiz atvērt kreditora vaicājumu, bet mēs nevaram iegūt darbu pareizi. Tādēļ, tas bija nepieciešams ieviest web pakalpojums.
- Tas ir klasisks "kaskādes atlases sarakstā" problēmas InfoPath veidlapu servera pasaulē, un tur ir daudzi labi piemēri, kas tur, kas paskaidro, kā atrisināt šo.
- Kreditoru saraksta kolonnā tukša vērtība nevar atgriezt tukšu virkni, ja norādes, kā šī: initItem["Pārdevēja nosaukums"]. Tā vietā, tiek atgriezta vērtība null.
Dažas citas piezīmes:
- Es atgriezties masīvs[] pārdevēji, jo man bija dažas grūtības atgriezties ArrayList. InfoPath bija sūdzas par to, un man nav laika vai vēlēšanās cīnīties tai pāri. Tas, protams, mākslīgu ierobežojumu uzvelk kreditoru kopskaits. Tas arī bija likusi man īstenot apdares() masīva metodi, jo man riebjas doma par atgriešanos atpakaļ 100 nulle kreditoriem. InfoPath nav vienalga, bet tas nagged pie manis. (Atkal, tas bija vieglāk nekā cīnās InfoPath ArrayLists).
- Man jāīsteno GetSpecificVendorByName() funkcijas, kā arī, kas var būt pamācošs.
Kods:
izmantojot Sistēma;
izmantojot System. Web;
izmantojot System.Web.Services;
izmantojot System.Web.Services.Protocols;
izmantojot Microsoft.SharePoint;
izmantojot System.Configuration;
/// <kopsavilkums>
/// Piegādātāja pakalpojumi: Nodrošina piegādātāju saistīto pakalpojumus, kas šobrīd patērē klients infopath veidlapu.
///
/// Vēsture:
/// ——–
/// 07/24/07: Sākotnējo kodēšana, Paul J. Gavin Conchango.
///
/// </kopsavilkums>
[WebService(Namespace = "http://www.conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
valsts klase VendorService : System.Web.Services.WebService
{
/// <kopsavilkums>
/// Pārstāv kreditoru no pielāgotas sharepoint sarakstu uztur MSUSA.
/// </kopsavilkums>
valsts klase Kreditoru
{
valsts Kreditoru() { }
valsts Kreditoru(SPItem initItem)
{
Ja (! (initItem["Pārdevēja nosaukums"] == nulle)) VendorName = initItem["Pārdevēja nosaukums"].ToString();
Ja (! (initItem["Adrese 1"] == nulle)) VendorAddress1 = initItem["Adrese 1"].ToString();
Ja (! (initItem["Adrese 2"] == nulle)) VendorAddress2 = initItem["Adrese 2"].ToString();
Ja (! (initItem["Pilsēta"] == nulle)) VendorCity = initItem["Pilsēta"].ToString();
Ja (! (initItem["VendorPhone"] == nulle)) VendorPhone = initItem["VendorPhone"].ToString();
Ja (! (initItem["PurchaseType"] == nulle)) VendorType = initItem["PurchaseType"].ToString();
Ja (! (initItem["Valsts"] == nulle)) VendorState = initItem["Valsts"].ToString();
Ja (! (initItem["Zip"] == nulle)) VendorZip = initItem["Zip"].ToString();
Ja (!(initItem["Fakss"] == nulle)) VendorFax = initItem["Fakss"].ToString();
Ja (!(initItem["SalesRepName"] == nulle)) VendorSalesRepName = initItem["SalesRepName"].ToString();
VendorItemId = initItem.ID; // Unikālo ID, uzturēti caur MOSS.
}
valsts Int VendorItemId;
valsts virkne VendorName;
valsts virkne VendorAddress1;
valsts virkne VendorAddress2;
valsts virkne VendorCity;
valsts virkne VendorState;
valsts virkne VendorZip;
valsts virkne VendorPhone;
valsts virkne VendorType;
valsts virkne VendorSalesRepName;
valsts virkne VendorFax;
}
valsts VendorService () {
//Uncomment ja izmantojot sekojošu rindu izstrādātas sastāvdaļas
//InitializeComponent();
}
privāts Kreditoru[] GenerateTestVendors()
{
Kreditoru[] resultList;
resultList = jaunā Kreditoru[100];
Kreditoru v;
v = jaunā Kreditoru();
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 = jaunā Kreditoru();
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 = jaunā Kreditoru();
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;
atgriešanās resultList;
}
[Web metodi]
valsts Kreditoru GetSpecificVendorById(Int vendorId)
{
virkne SpVendorSiteName; // Nosaukums faktiskais MOSS vietnes, kas vieso kreditoru pielāgotu sarakstu.
virkne SpVendorListName; // Nosaukums faktiskais MOSS sarakstu, kurā ietilpst pārdevēji.
SpVendorSiteName = ConfigurationSettings.AppSettings["VendorListHostingSite"].ToString();
SpVendorListName = ConfigurationSettings.AppSettings["VendorList"].ToString();
izmantojot (SPSite vieta = jaunā SPSite(SpVendorSiteName))
{
izmantojot (SPWeb Web vietas =. OpenWeb())
{
SPList currentList = interneta. Saraksti[SpVendorListName];
SPItem specificItem = currentList.Items[vendorId];
atgriešanās jaunā Kreditoru(specificItem);
} // izmantojot spweb web = site.openweb()
} // izmantojot spsite site = jaunu spsite("http://localhost/Midzuho")
}
[Web metodi]
// Tiek pieņemts, ka kreditora nosaukums ir unikāls, no biznesa viedokļa
valsts Kreditoru GetSpecificVendorByVendorName(virkne būt)
{
virkne SpVendorSiteName; // Nosaukums faktiskais MOSS vietnes, kas vieso kreditoru pielāgotu sarakstu.
virkne SpVendorListName; // Nosaukums faktiskais MOSS sarakstu, kurā ietilpst pārdevēji.
SpVendorSiteName = ConfigurationSettings.AppSettings["VendorListHostingSite"].ToString();
SpVendorListName = ConfigurationSettings.AppSettings["VendorList"].ToString();
izmantojot (SPSite vieta = jaunā SPSite(SpVendorSiteName))
{
izmantojot (SPWeb Web vietas =. OpenWeb())
{
SPList currentList = interneta. Saraksti[SpVendorListName];
foreach (SPItem vendorItem programmā currentList.Items)
{
Ja (vendorItem["Pārdevēja nosaukums"] == nulle) «««;
Ja (vendorItem["Pārdevēja nosaukums"].ToString().Ir vienāds ar(būt))
atgriešanās jaunā Kreditoru(vendorItem);
}
Kreditoru v = jaunā Kreditoru();
v.VendorPhone = "nav atrasts: " + būt;
atgriešanās v;
atgriešanās nulle;
} // izmantojot spweb web = site.openweb()
} // izmantojot spsite site = jaunu spsite("http://localhost/Midzuho")
} // metode
[Web metodi]
valsts Kreditoru[] GetVendorsOfType (virkne filterType)
{
virkne SpVendorSiteName; // Nosaukums faktiskais MOSS vietnes, kas vieso t
viņš kreditoru pielāgotu sarakstu.
virkne SpVendorListName; // Nosaukums faktiskais MOSS sarakstu, kurā ietilpst pārdevēji.
SpVendorSiteName = ConfigurationSettings.AppSettings["VendorListHostingSite"].ToString();
SpVendorListName = ConfigurationSettings.AppSettings["VendorList"].ToString();
Kreditoru[] resultList;
Int vendorIndex = 0;
resultList = jaunā Kreditoru[1000];
// Inicializēt ar draudzīgu ziņojumu noklusējuma sarakstu.
Kreditoru v = jaunā Kreditoru();
v.VendorName = "Norādiet kreditora tipa, lai aizpildītu šo sarakstu.";
resultList[0] = v;
// Zemāku gadījumā vieglāk virknes salīdzinājums vēlāk pārvērst filtrs.
filterType = filterType.ToLower();
// Ja pagājis filtra tips ir "tests", dažas vienkāršas datu ģenerēšanai.
#reģions Filtra tips = "tests"
Ja (filterType. ir vienāda ar("test"))
atgriešanās GenerateTestVendors();
#endregion
Ja (patiess)
{
izmantojot (SPSite vieta = jaunā SPSite(SpVendorSiteName))
{
izmantojot (SPWeb Web vietas =. OpenWeb())
{
v = nulle;
SPList currentList = interneta. Saraksti[SpVendorListName];
// Atkārtot ar piegādātāju sarakstā esošos vienumus.
foreach (SPItem vendorItem programmā currentList.Items)
{
virkne lowerVendorType;
lowerVendorType = vendorItem["PurchaseType"].ToString().ToLower();
lowerVendorType = lowerVendorType.Substring(3);
Ja (lowerVendorType. ir vienāda ar(filterType))
{
resultList[vendorIndex ] = jaunā Kreditoru(vendorItem);
}
} // karodziņš notiek caur visu kreditoru sarakstā
atgriešanās TrimVendorArray(vendorIndex, resultList);
// resultList atgriezt;
} // izmantojot spweb web = site.openweb()
} // izmantojot spsite site = jaunu spsite("http://localhost/Midzuho")
} // Ja tā ir true
atgriešanās nulle;
}
privāts Kreditoru[] TrimVendorArray(Int newsize, Kreditoru[] originalVendorArray)
{
Kreditoru[] trimmedArray;
Ja (newsize = = 0) newsize = 1;
trimmedArray = jaunā Kreditoru[newsize];
Int currentCounter = 0;
par (currentCounter = 0; currentCounter < newsize; currentCounter )
{
trimmedArray[currentCounter] = originalVendorArray[currentCounter];
}
atgriešanās trimmedArray;
}
}