Arkivat mujore: Tetor 2007

SharePoint Designer — Aktiviteti Custom për të ekzekutuar user-defined funksione C #

UPDATE: Kjo ka qenë të lëshuara në CodePlex këtu: http://www.codeplex.com/spdwfextensions

UPDATE: Shih këtu për shënimet e lëshimit të fundit: http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!381.entry

UPDATE: Shiko këtu për mendimet e mia në komercializimin e këtij projekti: http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!569.entry

This project provides a custom activity in SharePoint Designer. Use this custom activity to invoke (dërgim) any C# function that you incorporated into the linked assembly.

Që nga fundi i tetorit, 2007, this is just an initial version of the project. I plan to expand it with a number of additional functions, përfshirë substring, indeks, zëvendësoj, invoking web services and anything that seems useful or interesting. I also plan to post this to codeplex once I have my act together on that front. This will also be deployable as a solution at some point.

Nëse keni ndonjë koment, pyetje apo sugjerime, ju lutem të lënë ato në komentet ose email mua.

Mohim:

I make absolutely no claims as to the suitability of this for any purpose. Use at your own risk.

Hapat e instalimit (për të ndjekur per secilin WFE ne fermë):

1. Shkarko dhe ekstrakt zip..

2. Install the .dll into the GAC. I usually open c:\windows kuvendi duke përdorur Windows Explorer dhe kopjoni atë atje.

3. Ndrysho web.config për të shtuar asamblenë për kontrolle të sigurta:

<System.Workflow.ComponentModel.WorkflowCompiler>
<authorizedTypes>

<authorizedType Assembly="SpdGenericInterface, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = abe076fd8125f3c4" Namespace="Nivlag" TypeName="*" Authorized="True" />

4. Copy "SpdGenericInterface.actions" për C:\Program Files Common Files Microsoft Shared extensions web server 12 MOSTRA 1033 Workflow

Vini re se lokacioni më sipër është specifik për instalimet e gjuhës angleze.

5. Mbylle SharePoint Designer (në qoftë se ajo është tashmë e hapur).

6. iisreset

7. Hapni SPD dhe të krijojë një workflow të re.

Nëse gjithçka shkon mirë, ju duhet të shpërblehet me një kategori të re të veprimit:

imazh

Shënimet:

Shoh këtu (http://blogs.msdn.com/sharepointdesigner/archive/2007/03/15/adding-activities-to-spd.aspx) për një vështrim të frikshëm të procesit për krijimin e, instalimi dhe konfigurimi i një zgjidhje si kjo.

. Zip është projektuar për nxjerrjen direkt për ju c:\ drive. If you do this, ju mund të hapur projektin dhe të gjitha rrugët do të jenë në përputhje.

Për të përdorur këtë në vizual studio, you probably need to install "Extensions for Windows WF".

The initial upload contains just one "dispatcher function", "ToLower()". To add more functionality, shtoni atë në Execute metodë siç tregohet:

 mbrojtur shkel ActivityExecutionStatus
          Kryej(ActivityExecutionContext executionContext)
        {

            varg functionToDispatch;
            functionToDispatch = kjo.DispatchFunction.ToLower();

            kaloni (functionToDispatch)
            {
                rast "tolower()":
                    {
                        kjo.OutResult1 = kjo.InParam1.ToLower();
                        pushim;
                    }

                parazgjedhur:
                    {
                        kjo.OutResult1 = "Unknown function: [" + kjo.DispatchFunction + "].";
                        pushim;
                    }
            }

            kthehem ActivityExecutionStatus.Mbyllur;
        } // ActivityExecutionStatus

    }

Pastaj, re-build the project and copy the assembly to the GAC. I expect an iisreset would be required.

SPD Workflow porosi veprim – merrni <WorkflowInfo> tag drejtën për të shmangur zhgënjimin

Part of the process for creating a custom action for SharePoint Designer involves create a ".actions" skedar.

Unë e kam gjetur dhe u përpoqën për të përdorur një template mostër e cila fillon si:

<?xml version="1.0" encoding="utf-8" ?>
<
WorkflowInfo xmlns="http://schemas.microsoft.com / SharePoint /">
<
Veprimet Vazhdues="pastaj" Paralele="dhe">

Megjithatë, that xmlns attribute prevents my environment from working. My actions don’t show up in SPD.

Zgjidhja është që të zhvesh nga The xmlns atribut, do an iisreset and close/re-open SPD.

Shpejtë dhe i thjeshtë: Konfiguro Moss për të kërkuar një bibliotekë dokument të veçantë

See UPDATE (Unë) below (11/24/07) në Si të Konfiguro Microsoft Office SharePoint Server 2007 të indeksit dhe Crawl dosje të rrjetit për kërkim

Objektiv: I want to execute a search restricted to a specific document library. Në këtë rast, Biblioteka dokument përmban dokumentet e trajnimit.

Hapat:

1. Regjistro URL e bibliotekës dokumentit.

2. Krijo një hapësirë:

Shko tek administrata qendrore.

Qasja SSP.

Go to "Search Settings".

Scroll down to the scope section and select "View Scopes".

Create a new scope. Give it a name and useful description.

3. Përcaktojnë rregulla servilosem fushëveprimi:

Shto një rregull që përcakton bibliotekë dokument për këtë qëllim.

Select "web address" for "Scope Rule Type".

Shkruani emrin e dosjes tuaj (shoh #1 sipër).

Accept the default value of "Include".

Prisni për qëllimin për të rinovuar (apo të fillojë atë me dorë).

4. Aktivizo objektin në një site collection.

Shkoni te koleksioni site ku ju doni të përdorni këtë fushë.

Shto qëllimin tuaj të re për grupin e duhur e ekranit ose të grupeve.

5. Kërko!

Në këtë pikë, you’re done. Assuming the scope is properly defined, ajo do të jetë në dispozicion në ngritje rënie SCOPE për kërkime të thjeshta dhe të avancuara dhe kur ju kërkoni duke përdorur se Fusha, ju vetëm do të merrni rezultatet që ju presin.

Shënimet:

I shkroi këtë blog entry, sepse kërkimet e mia për setup fushëveprimit të thjeshtë u kthye deri frazat thatë duke përdorur si:

  • konfiguroni qëllimeve në MOSS
  • konfiguroni fushëveprimi myshk kërkimit
  • Fushat në të SharePoint 2007
  • Fushat në të SharePoint
  • kërko një bibliotekë dokument myshk
  • Fushat abetare myshk

Ju mund të krijoni një fushë të kërkimit në një dosje, not just the entire document library.

Një Shtrirja mund të ndahet nëpër koleksione të shumta në terren (prandaj, a "shared service").

You can create the scope at the site collection level itself. Megjithatë, I prefer to go to central admin because I can start the crawl from there. You cannot start the crawl from the site collection.

UPDATE (Unë) si i 11/24/07:

Kai Shang put together a great post entitled Si të Konfiguro Microsoft Office SharePoint Server 2007 të indeksit dhe Crawl dosje të rrjetit për kërkim @ http://kaishenghoo.spaces.live.com/blog/cns!8A7458DB12CA5AC9!206.entry

Asnjë supë për ju! Cisco është nazist supë e produkteve të NLB?

Sot, I tried to access a document library via windows explorer. This doc lib is living inside a system that consists of two WFE’s load balanced by some kind of Cisco NLB solution. (Nëse / kur magjistarët rrjeti më thoni se çfarë është, Unë do update këtë post).

Windows explorer couldn’t connect. I did some research and eventually, magjistarët rrjeti tha se WebDAV është i paaftë nga / nuk mbështetet nga / beneath the dignity of the NLB.

Kështu, assuming the network wizards aren’t just telling me the network wizard equivalent of "take a long walk off a short bridge", Unë duhet të pyes veten — bën NLB, nga natyra, disable WebDAV? Do we lose our windows file explorer interface to SharePoint? Is Cisco the Soup Nazi?

Menaxhimi i Moss / Mjediset WSS — mbajtur deri me bazën e njohurive të Microsoft-it

Microsoft creates knowledge base articles day in and day out and some of those are darned important to know about if you live in the SharePoint world.

Unë mbaj deri në shpejtësinë me ta nëpërmjet një shërbimi të sigurojë nga folks të mirë në www.kbalertz.com. KBAlertz enables you to sign up for your favorite MS technology and they send you digest versions of Microsoft KB articles via email.

Web Application Policy, Sites Siguri dhe Siguri zvogëlimin — Dije konfigurimin tuaj

(UPDATED 11/29 për të shpjeguar se si për të hyrë në parametrat e aplikimit web politikave nëpërmjet UI)

I had one of those "why is MOSS doing this to me????" moments today. Në fund, kjo është e gjitha faji im.

We have an enterprise MOSS project going on and we want to secure "place holder" sites so that no user may access it or see it. That’s easy:

  1. Go to the site.
  2. Break the security inheritance.
  3. Remove every user/group from site permissions.

The above should leave just the site collection administrator with permission to see the site.

If anyone else logs in, they should no longer see the site and it should be security-trimmed from all the usual places.

Por … ajo nuk ishte. Në të njëjtën kohë, I suddenly realize that my "Joe User" standard user test account with no priv’s other than restricted read access has a "Site Actions" choice everywhere he goes. I double check one thing and double check something else. I pick up the phone to call a colleague, but put it down and check something else. I go for a walk and try everything all over again. I call a colleague and leave a message. And then, më në fund, I find that at Ethan’s blog, his opening graph makes it quite simple:

Moss 2007 has a new feature called Web Application Policies. These are security permissions that is tied to a Web Application. These security settings override any security setting that is set at the Site Collection or Site (Web) level for that user.

A quick visit to web application policies shows that "NT Authority\authenticated users" had been granted Full Read. I removed them from the list and everything finally started working as expected. I believe they were added in the first place by someone with the mistaken impression that that is best method to grant read access to everyone in the enterprise. It does, por, to strain a quote, "It does not mean what you think it means."

Access web application policies this way:

  1. Go to Central Administration
  2. Select Application Management
  3. Select "Policy for Web Application"
  4. On that screen, make sure you pick the correct web application. Për mua, it defaults to the web application of central admin which may not be the one you want.

When I had this problem, I searched for the following phrases and got surprisingly little in terms of direct help on this issue:

Site actions visible for all users

Site actions visible to all users

site actions are not security trimmed

secure a MOSS site

introduction to moss security

Technorati Tags:

Shpejtë dhe i thjeshtë: Përdorimi Query Fikse Keyword në rezultatet Core Kërkoni

Udhëzimet e shpejtë dhe të thjeshtë:

Edit një faqe dhe shtoni një Core Search Results pjesë të internetit.

Edit that web part and expand "Fixed Keyword Query".

Shto query fikse fjalen (e.g. ContentType:"Training invoice" TrainingInvoiceNumber:1111)

Expand Results Query Options and change "Cross-Web Part query ID" to a value other than "User Query" (e.g. "Query 2").

Shënimet:

Using core search results in this manner allowed me to create a page that shows information from another site collection. The client has two major site collections: Departments and Products.

The product site collection contains, naturally enough, product information. Each product in the site collection aggregates data from multiple sources.

One of the departments, codes and testing, is on such source. When users access product XYZ, they should see codes and testing data directly on the XYZ main page. Since codes and testing is hosted in another site collection, it’s a little awkward. We decided to use the core search results web part since search spans site collections. Codes and Testing manages product data via a custom list that is constrained by a specific content type. Aa keyword query that uses first the content type and then the product number narrow down the search to a single row in the custom list.

The keyword query above is an AND. It returns documents of content type "Training Invoice" and where the invoice number equals "1111".

A nice benefit from this approach: We can edit the XSL from the core search results web part and generate any format that we want.

Shiko këtu (http://devcow.com/blogs/jdattis/archive/2007/04/17/SharePoint_2007_How_to_Rollup_Content_from_multiple_Site_Collections.aspx) for another blogger’s discussion on this topic.

</fund>Abonohen në blogun tim.

Më tregoni për blogun tuaj!

Nëse ju të mbajë një blog që është të paktën minimalisht lidhur me SharePoint, please let me know in comments. I would love to add you to my Lista e blog.

Nëse ju të mbajë një ditar që nuk është e lidhur me SharePoint, por duan mua për të shtuar atë anyway, let me know. I’ll may create a separate blog list.

Ju lutem jepni:

  • URL tuaj blog (qartë)
  • Një përshkrim i shkurtër i blogun tuaj.

I want to keep the link to "active" Blogs, which I’m roughly defining as one post per week and minimum three months old. If you don’t meet that "requirement" add your name to comments anyway. It’s *my* list so I can break my own rule if I want to.

Falënderim!

Trajnimi Punonjës Orari dhe Materiale Template — Bug pakësim në shabllonin

The client noticed a bug today with the above mentioned template.

Course managers create courses. When creating a course, Menaxheri i specifikon numrin maksimal të ulëseve në dispozicion.

The template provides for self-service enrollment. I enroll and a workflow attached to the registration list decrements the "available seats" lidhur me atë kurs.

Individuals may also unregister from a course. The bug lies here. Unregistering from a course does not increment the available seats counter. Si rezultat, available seats is not accurate. This bug is compounded by the fact that when available seats decrements to zero, jo më shumë vetë-shërbimit të regjistrimit është e lejuar.

Për fat të mirë, Microsoft provides the workflow for this process. Even better, kjo është një e drejtë-përpara workflow krijuar nëpërmjet SharePoint Designer.

Ndiqni këto hapa për të nivelit të lartë për të rregulluar atë:

  1. Zjarr deri SDP.
  2. Qasja faqen bazuar off template trajnimit.
  3. Access "Attendee unregistration" workflow.
  4. Vendos këto hapa (I bëri ata para dy hapa):
    1. Llogarit Kurse:Vende të mbushura minus 1 (Output për të Variabël:Calc)
    2. (pastaj) Update send në Kurse

Kliko Finish dhe ju jeni bërë.

Screen shots:


SharePoint Designer:

imazh

Workflow Mbaroi:

imazh

Llogarit stërvitje-down:

imazh

Update artikull në Kurset:

imazh

Jepu lajme të mira shpesh; jap lajme të këqija në fillim

Unë kam qenë një konsulent për shumë vjet tani dhe si çdo konsulent me përvojë e di, good communication is one of the key pillars to the successful delivery of a project. Kjo është aq e qartë, it’s really almost boring to talk about. This isn’t a post about generic communication. Në vend të kësaj, Unë jam me shkrim në lidhje me anën e errët të komunikimit — komunikuar një lajm i keq.

Ajo shkon pa thënë se duke i dhënë lajmin e mirë për të klientit është bërë gjithë kohën, as often as possible. Who doesn’t want to give good news? Who doesn’t like to hear good news?

Në anën rrokullisje, bad news is no fun at all. I have always struggled with this. In the earlier days of my career, Unë do të di diçka ishte e shtrembër me një projekt dhe në vend të thënë klientin, I would work longer hours to try and solve the problem. I would enjoin my team to work harder. It’s a natural enough impulse to think that a super-human effort can save the day. Some times this works, some times it does not. Even when it "works" it’s often a mixed bag. Is the quality of the deliverable really up to spec when key parts have been developed over several 60 në 80 javë orë?

Cila është mënyra më e mirë për të trajtuar një lajm i keq? The answer is: tell it early. Don’t wait until one week before the project budget will be consumed. If you know six weeks out that there simply isn’t enough time to deliver some bit of promised functionality, tell the client right then and there. The client may get upset (ndoshta do), there may be incriminations and accusations and hurt feelings. Por, kur emocionet qetësohem, there’s still six weeks left on the project. Six weeks is a good chunk of time. There’s time to adjust plans, ndryshojë oraret e, të marrë topin kodrina në extensions buxhetore (fat i mirë!) and just generally come to grips with the "facts on the ground" and devise a new plan that still results in a successful project.

Rasti në pikën: Unë jam duke punuar në një projekt të karakterizuar nga:

  • T&E budget with a capped "Not to exceed" Shuma e dollar.
  • A "best efforts will be made" premtim për të ofruar X, Y dhe Z deri në fund të projektit.
  • Lack of promised key resources on the client side. These resources were not withheld on purpose, nor for any "bad" arsye, por ata u ndalur.
  • A dawning realization as the project passed the half-way point that we were not going to be able to deliver "Z" (kryesisht për shkak se burimet e premtuara nuk ishin në fakt në dispozicion).
  • Regular status reports and "CYA" Dokumentacioni që na mbështeti (Ekipi konsultuar) up.
  • Ekipi i fort thur zbatimi me anëtarët e tërhequr nga organizata konsulente (kompania ime) dhe klienti.
  • Ekipi i menaxhimit të largët, in both a metaphorical and physical sense. The management team was focused on another large enterprise project and due to space constraints, ekipi i zbatimit u strehuar në një ndërtesë të veçantë në kampus, down a hill and relatively far way from "civilization".

Me afërsisht gjashtë javëve të mbetur në buxhetin e projektit, ne (ekipi i zbatimit) knew that we were trouble. The contract said that we needed to deliver "Z". Even though the project is time & materials and even though we only promised "best efforts" për të ofruar Z dhe edhe pse kemi pasur justifikim i madh për të humbur dorëzimin … Shkarko fund është se ajo nuk ishte në kërkim të mira — ne nuk ishin duke shkuar për të ofruar Z në një formë një cilësi që do ta bënte dikush krenar.

Duke njohur këtë, shkuam për menaxhimin dhe u tha atyre se buxheti i projektit do të konsumohen nga një datë të caktuar dhe se ne ishim në telashe me Z.

Një stuhi mini shpërtheu gjatë ditëve të ardhshme.

Ditë 1: Ekipi menaxhues thërret në stafin e tij për një takim të posaçëm (ne, konsulentët nuk ftohen). Contracts are printed and handed out to everyone and a line-by-line review ensues. Management puts the staff members on the defensive. I don’t think the phrase "Stockholm Syndrome" është përdorur * në fakt *, por ju merrni foto. We’re a tight-knit group, në fund të fundit, dhe stafi ka punuar me ne konsulentët në ditë dhe jashtë për disa muaj tani.

Ditë 2: Management calls another staff meeting. They feel a little better. They want options and ideas for moving forward. They realize there’s still six weeks remaining in the current project budget, which is still a decent bit of time. One of the action items: të planifikojë një takim me ekipin zbatimi i plotë (Konsulentët e përfshirë).

Ditë 5: Ekipi i plotë i plotëson, constructive meeting ensues and a new achievable plan put into place. Even better, we’ve already begun discussing phase two and the client invites us to prepare proposals for that phase immediately.

Po të kishim pritur derisa vetëm tri javë mbetën, ose edhe më keq, një ose dy javë, it would have been much different. Instead of a constructive meeting to re-align the project, ne do të kishim qenë të tërhequr nga raportet e statusit, parsing the contract and reviewing old emails to justify this or that decision. We would have "won" but is it really "winning" në këtë rast?

Kështu, në qoftë se ju duhet të jepni lajme të këqija, give it early. Bad news given late isn’t just bad, ajo është e tmerrshme.