FAST SharePoint integrazioa: Sample Código erabilgarri guztiak FAST Views Erakutsi

Hemen kode batzuk erakusten batetik ikusia dago eskuragarri FAST zerbitzaria izeneko oinarritutako QRServer (zerbitzari prozesu dugu komunikatzeko). I offer this up to give you all a taste of what it’s like to use the provided FAST API.

erabiliz Sistema;
erabiliz System.Collections.Generic;
erabiliz System.Linq;
erabiliz System.Text;
erabiliz Com.FastSearch.Esp.Search;
erabiliz Com.FastSearch.Esp.Search.Http;
erabiliz Com.FastSearch.Esp.Search.Navigation;
erabiliz Com.FastSearch.Esp.Search.Query;
erabiliz Com.FastSearch.Esp.Search.Result;
erabiliz Com.FastSearch.Esp.Search.View;
erabiliz System.Collections.Specialized;
erabiliz System.Collections;


namespace Conchango
{
    klasean EnumerateFASTViews
    {
        estatiko gal Nagusia(katea[] argumentuak)
        {

            ISearchFactory searchFactory;

            NameValueCollection nameValueCollection = berria NameValueCollection();

            nameValueCollection.Add("fastsearchengine", "Com.FastSearch.Esp.Search.Http.HttpSearchFactory");
            nameValueCollection.Add("Com.FastSearch.Esp.Search.Http.QRServers", "fastdemoback:15100");
            nameValueCollection.Add("Com.FastSearch.Esp.Search.Http.RequestMethod", "GET");

            searchFactory = SearchFactory.NewInstance(nameValueCollection);

            Kontsolara.WriteLine("Total Views: [" + searchFactory.GetSearchViewList().Diruz + "].");

            int i = 0;

            foreach (objektu o urtean searchFactory.GetSearchViewList())
            {
                Kontsolara.WriteLine("View [" + i     + "]: [" + o.ToString() + "].");

            }

            Kontsolara.ReadLine();

        }
    }
}

Kontuan uste nuen neure burua bat ozta-ozta eskudunak C # programatzaile eta azal daukat, beraz, ez bidali mugurdi edozein nire bidea, batez ere, berriro: the "foreach (objektuaren eta …)" construct 🙂

</amaiera>

Technorati Tags: ,

Nire blog Harpidetu.

Azkar eta SharePoint integrazioa First Look

Izan dut zortea aukera bat azkar batean lan egiteko <–> SharePoint integration project and thought I’d continue to share my limited experience with the community.

Microsoft is in the process of purchasing FAST. I don’t know anything about the schedule except that it should be finished in the "2nd quarter" which I assume means by 06/30/08.

My project’s design, at a very high level, calls for creating a few web parts that have roughly the same look, feel and functionality as the standard MOSS search box and core results web part, but pulling from FAST. I’ve made some baby steps in that direction.

FAST is a dedicated search engine. It’s not based on Microsoft technology, though it’s obvious to me that some of the FAST engineers clearly understand MS tech (or they’ve made use of contractors).

FAST:

FAST is a big monster server product (and I don’t mean that in a bad sense; MOSS is a big monster product to me as well). It appears to be based on Java and I noticed some apache stuff and maybe some PHP. I wouldn’t be surprised if there were other bits of tech mixed in here and there. It definitely runs on windows server and is working fine in the virtual environment which I’ve been using.

It makes use of a facade web service that crawls SharePoint content for indexing in its special FAST way.

A SharePoint end user would be pretty much at home with FAST’s user interface. It has simple/advance search, shows results, is big on relevancy (though I don’t see how it handles social relevancy). Hala eta guztiz ere, it does go further. Its stemming seems better. I really can’t articulate it well but I’ll just say "it’s better." You can take my word for it, or not 🙂 I may elaborate on this point in the future, as I learn more.

Moss:

FAST provides a .NET-friendly DLL that provides an interface to the FAST engine. This makes it possible for us to create web parts or application pages or whatever we want to query FAST and present the results.

There seems to be a web service interface as well.

I also have access to a FAST-provided web part that does integrate MOSS and FAST. I don’t know if this is a POC, something that was whipped up as a demo or what. It’s definitely a good learning tool, not so sure if it’s production-ready.

That’s it for now. As I progress through the project, I’ll post more.

</amaiera>

Technorati Tags: , ,

Nire blog Harpidetu.

Zehazteko FAST QRServer Portua

Ahal izateko, bere API bidez bilatu FAST komunikatu, portuan duen QRServer abian dagoen jakin behar dugu.

Urrats hauek jarraitu nuen hura aurkitu ahal izateko:

  1. Admin FAST gune sartu (http://server:port/admin).
  2. Sistema Orokorra nabigatu.
  3. Locate "Search Dispatcher" eta klik spyglass ikonoa:

    image

  4. Zuzen erabili dut balioa, 15100 for "Info Name" = "http":

    image

Oharrak:

1. Portu 15100 appears to be the default out-of-the-box port number for the QRServer.

2. Erabili kode hau ondorengo antzeko konexio bat instantziatu to FAST:

     ISearchFactory searchFactory;
    
        NameValueCollection nameValueCollection = berria NameValueCollection();
    
        nameValueCollection.Add("fastsearchengine", "Com.FastSearch.Esp.Search.Http.HttpSearchFactory");
        nameValueCollection.Add("Com.FastSearch.Esp.Search.Http.QRServers", "fastdemoback:15102");
        nameValueCollection.Add("Com.FastSearch.Esp.Search.Http.RequestMethod", "GET");
    
        searchFactory = SearchFactory.NewInstance(nameValueCollection);

3. Hautatzen erabateko okerra portu bat bada, bat lagungarria errore mezua lortuko duzu:

image

4. Hala eta guztiz ere, hautatzen Orokorra zerrendatzen ataka zenbakia bada (15102) you don’t get that helpful error message. Horren ordez, geroago bilaketa baten bidez datuak sartzeko edo FAST ikuspegi erreferentzia saiatu duzu, you get an error. Debugging shows that the searchFactory’s view count is zero. You’ll be given the message "Failed to fetch Search View List".

</amaiera>

Technorati Tags:

Nire blog Harpidetu.

SharePoint Design Patterns teknikoa Hacia: SharePoint Designer Workflow + Gertaera hargailuen = Handia potentzia koktela

Ereduak sortzen ari diren konponbideak aurkituko SharePoint crafting dut bat SharePoint Designer workflow eta gertaera hargailu bat baliatzen du.

Hona hemen enpresa eszenatoki jarri behar da testuinguru:

  • Dokumentu bat igo dut doc lib bat.
  • Off alboratzen dut anitzeko urratsa workflow sortu SharePoint Designer erabiliz.
  • Prozesu horretan zehar uneren, workflow Zeregin bat esleitzen norbait (biltzeko bitartez erabiltzailearen datuak edo Zeregin bat).
  • We want to use a KPI to track how long that task is awaiting completion. The KPI shows green for tasks that are completed or due more than 3 days from now. It shows yellow if the task is due tomorrow or today. It shows red if the task is past due.
  • Hemen jaurtitzailearen da: Data hori KPI gidatzen duten opor-jakitun izan nahi dut.

I can’t calculate a holiday-aware due date in SharePoint Designer workflow very easily. I would have to create a custom action or use a 3rd party tool. Hala eta guztiz ere, it’s easy enough to calculate such a date in an event receiver. Merge those two together and we get a pattern like this:

  • Define a hidden yes/no site column on the document library labeled "DoCalcualteDueDate".
  • Hasieratu da faltsua.
  • Eu dagokion momentuan (e.g. just before the "collect data" Ekintza), esleitzeko balioa duten True.
  • ItemUpdate bat() event receiver looks to see if "DoCalculateDueDate" is true. Since the event receiver runs on every update, "DoCalculateDueDate" normalean faltsuak.
  • Noiz workflow ematean egia DoCalculateDueDate, gertaera hartzailea jai-jakitun epemuga kalkulatzen.
  • Noiz gertaera hartzailea kalkulua, hau da,, DoCalculateDueDate bandera ezartzen du faltsua.

Azkenean, SPD workflow is communicated with an event receiver via the DoCalculateDueDate semaphore and we have holiday-aware due dates that are assigned at the exactly correct moment in the workflow’s life. SharePoint Designer controls when the due date is assigned but the event receiver performs the actual calculation and assignment.

</amaiera>

Nire blog Harpidetu.

Ikusitako portaera: SPD fluxuak mugitzen Web bilduma baten barruan

UPDATE: I’ve been researching how to embed a SPD workflow into a site definition. This MSDN forum chain has some interesting information. It’s not conclusive, baina bide puntutatik oihanean.

I’m giving this post a slightly oddball "Observed Behavior" lead since I’m a little leery of drawing conclusions from it. SPD workflows are … temperamental.

People are often asking / wondering / fretting over moving SPD workflows from one place to another. Gaur egun, I followed these steps and made these observations:

  • I created a workflow using SharePoint Designer in a site attached to a document library.
  • The associated document library already housed several documents.
  • I saved the site as a template.
  • When I saved the site as a template, I saved the content as well.
  • I created a new site in the same site collection using that template.

Puntu honetan, I tried to run the workflow. It promptly terminated itself with the log message, "Failed on start".

I expected this. I have low expectations when it comes to moving SPD workflows around.

I continued:

  • Opened the site in SharePoint Designer.
  • Had a peek at the workflow. It seemed fine.
  • I clicked "Finish".
  • I ran the workflow.

Oraingo honetan, fina lan egin ezazu.

I’ll add that this workflow used the "collect data from user" action which is a relatively complex action under the hood.

I tentatively conclude that the process of "finishing" the workflow caused SPD to properly associate the SPD workflow with the new document library. I also conclude the XOML and other XML artifacts are reasonably "loose". They are not super tightly coupled to the document library.

What does this mean? Assuming it’s a reliable and reproducible process, there’s at least one rough method we can use to move them around. I don’t know if this would work if we crossed site collection boundaries or even more drastically, entire new farms (e.g. dev to stage to prod).

If you’re reading this and inclined, please post a comment or email me your SharePoint Designer migration story. I’ll gladly update this posting with any insights thus offered.

</amaiera>

Nire blog Harpidetu.

Technorati Tags:

Azkarra eta sinplea: Workflow-bakarrik Update Eremua

It’s often useful to store status information in a custom list such as an approval code which should never be directly manipulated by end users. This is a common business scenario. I have been working on a project this year that generates various status and reminder dates via SharePoint Designer workflows that then drive KPIs and generally support time-critical business processes.

Erabili gune eduki mota / zutabea efektu hori lortzeko.

Sortu gune eduki egoera zutabean mota erakusten:

image

Note the "Status (Demo for)" Azpiko eremuan.

Hurrengoa, click on the column name to access the column’s properties. Select "Hidden (Ezin izango da, forma agertzen)" Zutabearen Ezarpenak erakutsi atalean:

image

This removes the field from the standard edit/update forms. Hala eta guztiz ere, oraindik ez da ikusia eskuragarri, KPIs, objektu eredua eta beste inon erabili nahi duzun, including SPD workflow.

</amaiera>

Nire blog Harpidetu.

Igandea Funny: “Hau zen ustezko Rich Town behar duela uste dut,”

Apur bat, hiru urte baino gehiago, nire emaztea eta biok sinatu nire semea sortu udako jarduera bat, The Midland Park Players. This is a drama group that spends about three or four weeks preparing for a play and then showing it to the parents, friends and relatives. It’s always been done very well.

I don’t know if everyone’s child is like this, but my son is extremely reluctant to try new things. Knowing this, we signed him up for the program. We’ve found that it’s best to alert him to these kinds of things early and often. Beraz,, in order to overcome his natural reluctance, we told him early and did our best to make it sound like fun, etc. Even with a multi-month advertising campaign, he still wasn’t convinced. We forced him to do, nahiz, and as is often the case, he had a great time.

By the time the second year rolled around, he had once again convinced himself that he didn’t want to participate. Baina, we had signed him up and on zero-day, I dropped him off one morning at the high school where they practice. When I went to pick him up after lunch, he was very excited, all smiles and announced, "The play is the Velveteen Rabbit and I want to be the Rabbit". He had spent literally months carrying on (sometimes hysterically) about how he didn’t want to have anything to do with Park Players and after the first day, he wants to be the lead role in the play. We’ve seen this pattern before.

(Much to our surprise, he did get the Rabbit role and he was amazing.)

Fast forward a few years. He’s been in Park Players three times now, so he’s something of a veteran. This summer (2008), Players starts up again. Batez besteko denbora, he’s finally convinced us he benetan doesn’t want to play soccer and he never liked basketball. That left him with no extra-curricular activities for late Winter / early Spring. A client with whom I was working mentioned that his daughter was in a program called Stage Right. Stage right is a slightly more expensive version of Park Players and it’s not in my town, but adjacent to it. Perfect.

The thing to know about that town is that it’s practically another country in terms of wealth. It has a high-frequency train right to Wall Street and NYC in general. It’s just a wealthy place. One of the on-going family discussion themes is whether we should have moved to that town instead of where we live now. It’s a bigger town, its schools offer more programs for the kids, etc. My wife grew up in that town and her parents live there, so we are "hooked in" despite not living there. I personally grew up in different circumstances in Massachusetts, so I don’t have a lot to say about this during family dinner conversation. This isn’t to say that we aren’t very happy where we live. We just know that that town is a level above our town economically.

Stage Right’s next program started too soon for us to launch our normal advertising campaign to overcome my son’s reluctance. This is when he came up with one my personal favorite arguments against doing something: "Friday nights are prime nights for sleep overs!" Stage Right was going to interfere with his weekend socials.

The day comes, we bring him there and drop him off and as with everything else, his natural love of just being alive took over and he’s been having a good time with it.

This past weekend my wife was talking to him and for the first time, I think he’s tailoring his discussions very precisely for his audience. She had asked him how Stage Right compares to Midland Park Players. He tells her that "In Park Players, we have teenagers that help us out. There aren’t any in in Stage Right. In Park Players, teenagers make all props. In Stage Right, we have to bring our own props. We have to do everything. And then he twists the knife: "I thought this was supposed to be a rich town."

All these years, I never really thought that he was hearing or understanding anything as it related to the "rich town". Hala eta guztiz ere, it turns out he was.

</amaiera>

Nire blog Harpidetu.

Technorati Tags:

SharePoint ez du Egutegia Roll-up; Potentzial Solutions

UPDATE: An anonymous person in the comments posts this link: http://www.atidan.com/atidan-collaboration-kit.php

Foroa erabiltzaile sarritan galdetu horrelako galdera bat:

"I would like to have a calendar at the site level that is populated by events from subsite calendars. Ideally, subsites erabiltzaileen egutegi-gertaerak sortzen ditu,, and will have the option of marking them as ‘public.’ Events marked as public will dynamically appear in the shared site calendar. Thus the shared site calendar is a roll-up of all public events from all subsite calendars."

Da WSS 3.0 edo MOSS 2007, it is not possible to directly configure a "roll-up" calendar. Calendars exist on their own, beste edozein egutegi independentea.

Roll-up egutegi bat sortzeko, jarraitu bide horietako bat:

  1. Use a Content Query Web Part. This is the easiest solution for MOSS users (WSS ematen ez CQWP). CQWP, zoritxarrez, does not provide a calendar view of data out of the box. It does provide enormous rendering flexibility (Hemen adibide bat egiteko) baina lehenetsi, shows its results in simple list format. In many cases, CQWP seguruenik aukera ona.
  2. A more programming-oriented solution would be to use event receivers. Implement event receivers on the subsite calendars that keep their public events in sync with the master calendar. As a given subsite calendar is modified, reach out to the master calendar and update it as needed. This option is available in both WSS 3.0 eta MOSS.

There are probably other clever solutions to this problem. If you have one or know of one, Mesedez, utzi iruzkin bat, edo email me eta post hau eguneratu egingo dut.

</amaiera>

Nire blog Harpidetu.

Sortu guneak (SPWeb) SharePoint Designer Workflow bidez

This blog entry is more of an "in the realm of the possible" Istorio vs. hormigoizko info.

We have a technical design that calls for us to create a site in a site collection via a manually launched workflow process. Funtsean,, users enter data into a "new customer" zerrenda pertsonalizatu eta orduan amaitu dute eta balidatu datu-sarrera prozesu, bezeroari gune bat sortu behar dugu.

Workflow deklaratzaileak fan bai handi eta baita ahul bisuala estudioan workflow programatzaile naiz, beraz, baldintza SharePoint Designer erabiliz bete nahi nuen.

Honi buruz idazteko xehetasun handiagoz planifikatzeko dut (eta espero nahi Erabiltzaile talde bat edo bi datorren urtean ere presente), baina, oro har, hemen irtenbidea da:

  • Sortu Ohiko ekintza SPD integratzen.
  • Ekintza pertsonalizatu ahalbidetzen SPD web zerbitzu bat irekiaz eta pasatu da XML katea.
  • Web zerbitzu pertsonalizatua kokatzen zerrendan errenkadan eta webgune berri bat sortzen Ohiko gune definizio erabiltzen duten bezero berriak datuen arabera.
  • Web zerbitzua, ondoren, hala nola, berriak, lotura gune gisa informazio batzuk zerrenda ohitura eguneratzen.

Beste planteamendu jotzen dugu, such as event handlers and visual studio based workflow. The SPD approach gives our end users a little more control over the process. Granted, bat dago, C # kode asko irtenbide hau da, baina bat deklaratzaileak workflow barruan bilduta, beraz workflow deklaratzaileak onurak batzuk gara-gune sortzea zerbitzu sartu bitartean Pribatutasun.

All we need now is an easy tool to automatically migrate SPD workflows around as easily as we can for visual studio workflows and we’ll really be cooking with gas 🙂 I understand that some folk are out there working on this problem and I hope they have some good success with it soon.

</amaiera>

Nire blog Harpidetu.

Technorati Tags: ,