Business skenaario:
Tarjoavat tapa, jonka avulla käyttäjät voivat antaa tarkkoja ostoehdotuksia nopeasti.
Liiketoimintaan liittyvästä ongelmasta:
Asiakas toimii useita satoja myyjien.
Myyjät ovat "tyyppi" erityisiä. Tämä tarkoittaa sitä, että toimittaja myy atk-laitteet (virrankatkaisu. Dell) tai toimistotarvikkeet (virrankatkaisu. Staples).
Miten annamme häntäpää käyttäjä joka luo Ostotilauksen pakkolunastuksia Valitse kelvollinen toimittaja?
Yritysratkaisujen:
Erottaa toimittajien järjestelmän kautta "tyyppi".
Käyttäjät voivat valita "tyyppi" tuotteen ja anna suodatettavien sopiva toimittajat.
Tekninen ratkaisu:
InfoPath-lomake on suunniteltu avulla käyttäjät voivat syöttää verkossa ostoehdotukset.
InfoPath valinta luettelot hallita toimittajan valinta. Ensimmäinen, käyttäjä valitsee "oston tyyppi". Tämä rajoittaa toisen valintaluettelo sisältää vain toimittajat, jotka myyvät Ostotilaustyyppi. Tämä on klassinen CSS alentaa-heittää.
Toimittajien tallennetaan MOSS mukautetun luettelon mukautettuja sarakkeita toimittajan määritteet nimi, osoite ja erityisesti "tyyppi".
Toteuttaa web-palveluun, InfoPath-asiakkaan kuluttaa että iteroidaan mukautetun toimittajien luettelo, Palaa vain toimittajat vastaavat mukana "tyyppi".
Vedota InfoPath-lomakkeen web-palveluun.
Kokemukset:
- Ensimmäinen, tarpeen tämän reitin. Olisin halunnut tehdä suodatus täysin InfoPathissa ja luo web palvelu toiminnot täällä. Kuitenkin, Lomakkeet-palvelin ei ilmoita suodatus tarvittavien voimavarojen. Voimme yleensä päälle "tyyppi" valintaluettelossa tavallaan uudelleen Avaa toimittajan kysely-lomakkeessa, mutta emme saa sitä toimimaan kunnolla. Siksi, se oli tarpeen toteuttaa web-palveluun.
- Tämä on klassinen "CSS valintaluettelosta" ongelma InfoPath muodostaa palvelimen maailmassa ja on olemassa useita hyviä esimerkkejä siellä, että selittää miten ratkaista tämän.
- Toimittajan luettelon sarake on tyhjä arvo ei palauta tyhjä merkkijono, kun näin: initItem["Toimittajan nimi"]. Sen sijaan, palauttaa null-arvon.
Jotkin muut huomautukset:
- Palauttaa matriisin[] myyjät koska minulla oli vaikeuksia palata ArrayList. InfoPath valitti ja minulla ei ollut aikaa tai haluja tapella siitä. Tämä, Tietysti, keinotekoinen raja asetetaan toimittajien lukumäärä. Se pakotti minut toteuttaa leikata() array-menetelmä koska vihaan ajatuksesta palata takaisin 100: n null toimittajat. InfoPath ei välitä, mutta se nagged minua. (Uudelleen, Tämä oli helpompaa kuin InfoPath taistelevat ArrayLists).
- Täytäntöön GetSpecificVendorByName() toimii hyvin, joka voi olla opettavainen.
Koodi:
käyttäminen Järjestelmän;
käyttäminen System.Web;
käyttäminen System.Web.Services;
käyttäminen System.Web.Services.Protocols;
käyttäminen Microsoft.SharePoint;
käyttäminen System.Configuration;
/// <Yhteenveto>
/// Myyntipalvelun: Sisältää toimittajan liittyvät palvelut, jotka nykyään ovat kuluttamaan infopath-asiakasohjelma.
///
/// Historia:
/// ——–
/// 07/24/07: Ensimmäinen koodaus, Paul J. Gavin Conchango.
///
/// </Yhteenveto>
[WebService(Namespace = "http://www.conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
yleiset luokan VendorService : System.Web.Services.WebService
{
/// <Yhteenveto>
/// Vastaa toimittajan mukautettu sharepoint-luettelosta ylläpitämä MSUSA.
/// </Yhteenveto>
yleiset luokan Toimittajan
{
yleiset Toimittajan() { }
yleiset Toimittajan(SPItem initItem)
{
Jos (! (initItem["Toimittajan nimi"] == Null)) Toimittajan_nimi = initItem["Toimittajan nimi"].Ominaisuuden ToString();
Jos (! (initItem["Osoite 1"] == Null)) VendorAddress1 = initItem["Osoite 1"].Ominaisuuden ToString();
Jos (! (initItem["Osoite 2"] == Null)) VendorAddress2 = initItem["Osoite 2"].Ominaisuuden ToString();
Jos (! (initItem["City"] == Null)) VendorCity = initItem["City"].Ominaisuuden ToString();
Jos (! (initItem["VendorPhone"] == Null)) VendorPhone = initItem["VendorPhone"].Ominaisuuden ToString();
Jos (! (initItem["PurchaseType"] == Null)) VendorType = initItem["PurchaseType"].Ominaisuuden ToString();
Jos (! (initItem["Valtio"] == Null)) VendorState = initItem["Valtio"].Ominaisuuden ToString();
Jos (! (initItem["Zip"] == Null)) VendorZip = initItem["Zip"].Ominaisuuden ToString();
Jos (!(initItem["Faksi"] == Null)) VendorFax = initItem["Faksi"].Ominaisuuden ToString();
Jos (!(initItem["SalesRepName"] == Null)) VendorSalesRepName = initItem["SalesRepName"].Ominaisuuden ToString();
VendorItemId = initItem.ID; // Yksilöllinen tunnus säilytetään kautta MOSS.
}
yleiset int VendorItemId;
yleiset merkkijono Toimittajan_nimi;
yleiset merkkijono VendorAddress1;
yleiset merkkijono VendorAddress2;
yleiset merkkijono VendorCity;
yleiset merkkijono VendorState;
yleiset merkkijono VendorZip;
yleiset merkkijono VendorPhone;
yleiset merkkijono VendorType;
yleiset merkkijono VendorSalesRepName;
yleiset merkkijono VendorFax;
}
yleiset VendorService () {
//Kommentti, seuraava rivi, jos suunnitellut komponentit
//InitializeComponent();
}
Yksityinen Toimittajan[] GenerateTestVendors()
{
Toimittajan[] resultList;
resultList = Uusi Toimittajan[100];
Toimittajan v;
v = Uusi Toimittajan();
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 = Uusi Toimittajan();
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 = Uusi Toimittajan();
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;
paluu resultList;
}
[WebMethod]
yleiset Toimittajan GetSpecificVendorById(int soveltamista vendorId)
{
merkkijono SpVendorSiteName; // Todellinen MOSS-sivuston, joka isännöi toimittajan mukautetun luettelon nimi.
merkkijono SpVendorListName; // Nimi että todellinen MOSS luettelo myyjät.
SpVendorSiteName = ConfigurationSettings.AppSettings["VendorListHostingSite"].Ominaisuuden ToString();
SpVendorListName = ConfigurationSettings.AppSettings["VendorList"].Ominaisuuden ToString();
käyttäminen (SPSite sivusto = Uusi SPSite(SpVendorSiteName))
{
käyttäminen (SPWeb Web = sivusto. OpenWeb())
{
SPList currentList = web. Luettelot[SpVendorListName];
SPItem specificItem = currentList.Items[soveltamista vendorId];
paluu Uusi Toimittajan(specificItem);
} // käyttämällä spweb web = site.openweb()
} // spsite-sivuston = uusi spsite("http://localhost/mizuho")
}
[WebMethod]
// Oletetaan, että toimittajan nimi on ainutlaatuinen, liiketoiminnan näkökulmasta
yleiset Toimittajan GetSpecificVendorByVendorName(merkkijono olla)
{
merkkijono SpVendorSiteName; // Todellinen MOSS-sivuston, joka isännöi toimittajan mukautetun luettelon nimi.
merkkijono SpVendorListName; // Nimi että todellinen MOSS luettelo myyjät.
SpVendorSiteName = ConfigurationSettings.AppSettings["VendorListHostingSite"].Ominaisuuden ToString();
SpVendorListName = ConfigurationSettings.AppSettings["VendorList"].Ominaisuuden ToString();
käyttäminen (SPSite sivusto = Uusi SPSite(SpVendorSiteName))
{
käyttäminen (SPWeb Web = sivusto. OpenWeb())
{
SPList currentList = web. Luettelot[SpVendorListName];
foreach (SPItem vendorItem Tässä currentList.Items)
{
Jos (vendorItem["Toimittajan nimi"] == Null) Jatka;
Jos (vendorItem["Toimittajan nimi"].Ominaisuuden ToString().Vastaa(olla))
paluu Uusi Toimittajan(vendorItem);
}
Toimittajan v = Uusi Toimittajan();
v.VendorPhone = "ei löydy: " + olla;
paluu v;
paluu Null;
} // käyttämällä spweb web = site.openweb()
} // spsite-sivuston = uusi spsite("http://localhost/mizuho")
} // menetelmä
[WebMethod]
yleiset Toimittajan[] GetVendorsOfType (merkkijono kohteen FilterType-arvoa)
{
merkkijono SpVendorSiteName; // Todellinen MOSS-sivuston, joka isännöi t nimi
Hän toimittajan mukautettu luettelo.
merkkijono SpVendorListName; // Nimi että todellinen MOSS luettelo myyjät.
SpVendorSiteName = ConfigurationSettings.AppSettings["VendorListHostingSite"].Ominaisuuden ToString();
SpVendorListName = ConfigurationSettings.AppSettings["VendorList"].Ominaisuuden ToString();
Toimittajan[] resultList;
int vendorIndex = 0;
resultList = Uusi Toimittajan[1000];
// Alustaa luettelon oletus ystävällisen viestin.
Toimittajan v = Uusi Toimittajan();
v.VendorName = "Kirjoita toimittajan asuttamaan tämän luettelon.";
resultList[0] = v;
// Suodatin muuntaa merkkijonon vertailu helpottuu myöhemmin isoja.
kohteen FilterType-arvoa = filterType.ToLower();
// Jos suodattimen tyyppi on "test", Luo yksinkertaisia tietoja.
#alueen Suodattimen tyyppi = "test"
Jos (Yhtä kohteen FilterType-arvoa.("test"))
paluu GenerateTestVendors();
#endregion
Jos (tosi)
{
käyttäminen (SPSite sivusto = Uusi SPSite(SpVendorSiteName))
{
käyttäminen (SPWeb Web = sivusto. OpenWeb())
{
v = Null;
SPList currentList = web. Luettelot[SpVendorListName];
// Avaimettoman toimittajan luettelon kohteet.
foreach (SPItem vendorItem Tässä currentList.Items)
{
merkkijono lowerVendorType;
lowerVendorType = vendorItem["PurchaseType"].Ominaisuuden ToString().ToLower();
lowerVendorType = lowerVendorType.Substring(3);
Jos (sama kuin lowerVendorType.(kohteen FilterType-arvoa))
{
resultList[vendorIndex ] = Uusi Toimittajan(vendorItem);
}
} // iteroimalla läpi kaikkien toimittajien luettelosta
paluu TrimVendorArray(vendorIndex, resultList);
// Paluu resultList;
} // käyttämällä spweb web = site.openweb()
} // spsite-sivuston = uusi spsite("http://localhost/mizuho")
} // Jos arvo on tosi
paluu Null;
}
Yksityinen Toimittajan[] TrimVendorArray(int asua kuulumiset, Toimittajan[] originalVendorArray)
{
Toimittajan[] trimmedArray;
Jos (asua kuulumiset == 0) asua kuulumiset = 1;
trimmedArray = Uusi Toimittajan[asua kuulumiset];
int currentCounter = 0;
varten (currentCounter = 0; currentCounter < asua kuulumiset; currentCounter )
{
trimmedArray[currentCounter] = originalVendorArray[currentCounter];
}
paluu trimmedArray;
}
}