ყოველთვიური არქივი: ოქტომბერი 2007

SharePoint Designer — საბაჟო საქმიანობაში, რათა შესრულდეს მომხმარებლის განსაზღვრული C # ფუნქციები

განახლების: ეს უკვე გაათავისუფლეს CodePlex აქ: http://www.codeplex.com/spdwfextensions

განახლების: აგრეთვე აქ უახლესი ვერსიის შენიშვნები: http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!381.entry

განახლების: აგრეთვე აქ ჩემი მოსაზრებები იმის შესახებ commercializing ამ პროექტის: 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 (გააგზავნა) any C# function that you incorporated into the linked assembly.

რაც შეეხება საქართველოში ოქტომბრის ბოლოს, 2007, this is just an initial version of the project. I plan to expand it with a number of additional functions, მათ შორის substring, ინდექსი, შეცვლის, 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.

თუ თქვენ გაქვთ რაიმე კომენტარი, შეკითხვა ან წინადადებები, გთხოვთ, დატოვონ მათ კომენტარი ან მომაწოდეთ.

პასუხისმგებლობის:

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

დაყენების ნაბიჯები (მოჰყვება თითოეული WFE ფერმაში):

1. Download. Zip და ამონაწერი.

2. Install the .dll into the GAC. I usually open c:\Windows ასამბლეის იყენებთ Windows explorer და კოპირება არსებობს.

3. შეცვლა web.config დაამატოთ ასამბლეის უსაფრთხო კონტროლი:

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

<authorizedType Assembly="SpdGenericInterface, მობილური = 1.0.0.0, კულტურის = ნეიტრალური, PublicKeyToken = abe076fd8125f3c4" Namespace="Nivlag" TypeName="*" Authorized="True" />

4. Copy "SpdGenericInterface.actions" რომ C:\Program Files Common Files Microsoft საერთო სერვერზე გაგრძელება 12 თარგი 1033 სამუშაოს

გაითვალისწინეთ, რომ ზემოთ ადგილმდებარეობა სპეციფიკური ინგლისური ენის დანადგარები.

5. დახურვა SharePoint დიზაინერი (თუ ეს უკვე გახსნა).

6. iisreset

7. გახსნა SPD და ახალი სამუშაო პროცესის.

თუ ყველაფერი კარგად, თქვენ უნდა დაჯილდოვდა ახალ კატეგორიას აქცია:

იმიჯი

შენიშვნები:

აგრეთვე აქ (http://blogs.msdn.com/sharepointdesigner/archive/2007/03/15/adding-activities-to-spd.aspx) ამისთვის შესანიშნავი მიმოხილვა პროცესი ქმნის, დაყენების და კონფიგურაციის გამოსავალი მსგავსი.

. Zip განკუთვნილია ამონაწერი უშუალოდ თქვენ გ:\ drive. If you do this, შეგიძლიათ გახსნათ პროექტი და ყველა გზები იქნება თანმიმდევრული.

რომ გამოიყენოთ ეს ვიზუალური სტუდიაში, you probably need to install "Extensions for Windows WF".

The initial upload contains just one "dispatcher function", "ToLower()". To add more functionality, დაამატეთ იგი შეასრულოს მეთოდი როგორც ნაჩვენებია:

 დაცული override ActivityExecutionStatus
          სიკვდილი(ActivityExecutionContext executionContext)
        {

            სიმებიანი functionToDispatch;
            functionToDispatch = ამ.DispatchFunction.ToLower();

            გადართვის (functionToDispatch)
            {
                შემთხვევაში "tolower()":
                    {
                        ამ.OutResult1 = ამ.InParam1.ToLower();
                        შესვენება;
                    }

                სტანდარტული:
                    {
                        ამ.OutResult1 = "Unknown function: [" + ამ.DispatchFunction + "].";
                        შესვენება;
                    }
            }

            დაბრუნდნენ ActivityExecutionStatus.დახურვის;
        } // ActivityExecutionStatus

    }

მაშინ, re-build the project and copy the assembly to the GAC. I expect an iisreset would be required.

SPD სამუშაოს საბაჟო აქცია – მიიღეთ <WorkflowInfo> tag უფლება, რათა თავიდან ავიცილოთ იმედგაცრუება

Part of the process for creating a custom action for SharePoint Designer involves create a ".actions" ფაილი.

მე ი და შეეცადა ნიმუში თარგი რომელიც იწყება off როგორც:

<?xml მობილური="1.0" კოდირების="utf-8" ?>
<
WorkflowInfo xmlns="http://schemas.microsoft.com / SharePoint /">
<
აქციები თანმიმდევრული="მაშინ" პარალელურად="და">

თუმცა, that xmlns attribute prevents my environment from working. My actions don’t show up in SPD.

გამოსავალი არის ზოლები out xmlns ატრიბუტი, do an iisreset and close/re-open SPD.

სწრაფი და მარტივი: კონფიგურაცია MOSS მოძებნოთ კონკრეტულ დოკუმენტს ბიბლიოთეკა

See UPDATE (I) below (11/24/07) წლის როგორ კონფიგურაცია Microsoft Office SharePoint Server 2007 to ინდექსი და Crawl ქსელი ფოლდერები ძებნა

მიზანი: I want to execute a search restricted to a specific document library. ამ შემთხვევაში, დოკუმენტის ბიბლიოთეკა მოიცავს სასწავლო დოკუმენტები.

ნაბიჯი:

1. ჩაწერას URL დოკუმენტის ბიბლიოთეკა.

2. შექმნა ფარგლებს:

გადასვლა ცენტრალური ადმინისტრაცია.

ხელმისაწვდომობა 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. განსაზღვრა ფარგლებს crawl წესები:

სანიშნეს წესი, რომელიც განსაზღვრავს დოკუმენტის ბიბლიოთეკა ამ მასშტაბის.

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

შეიტანეთ სახელი თქვენი ფოლდერიდან (ვხედავ #1 ზემოთ).

Accept the default value of "Include".

დაველოდოთ ფარგლებს განახლება (ან დაიწყოთ იგი).

4. ჩართვა ფარგლებს in საიტი კოლექციაში.

გადასვლა საიტი კრებული, სადაც გსურთ გამოიყენოთ ეს ფარგლები.

დამატება ახალი ფარგლებს შესაბამის ჩვენება ჯგუფს ან ჯგუფებს.

5. ძიება!

ამ ეტაპზე, you’re done. Assuming the scope is properly defined, ეს შესაძლებელი იქნება ფარგლებში წვეთი ზარალი მარტივი და გაფართოებული ძიება და როდესაც თქვენ ძებნის გამოყენებით, რომელიც ფარგლებს, თქვენ მხოლოდ მისაღებად შედეგების ველოდოთ.

შენიშვნები:

დავწერე ამ დღიურში შესვლის რადგან ჩემი ეძებს მარტივი ფარგლებს კონფიგურაცია აღმოჩნდა მშრალი გამოყენებით ფრაზები როგორიცაა:

  • კონფიგურაციის ფარგლებში წელს MOSS
  • კონფიგურაციის ძებნის ფარგლებს moss
  • ფარგლებში ამ SharePoint 2007
  • ფარგლებში ამ SharePoint
  • ძებნის დოკუმენტის ბიბლიოთეკა moss
  • ფარგლებში პირველი moss

თქვენ შეგიძლიათ შექმნათ ძებნის ფარგლებს on ფოლდერი, not just the entire document library.

ფარგლებს შეიძლება გაიზიარა მასშტაბით მრავალი საიტი კოლექციების (აქედან გამომდინარე,, a "shared service").

You can create the scope at the site collection level itself. თუმცა, I prefer to go to central admin because I can start the crawl from there. You cannot start the crawl from the site collection.

განახლების (I) როგორც 11/24/07:

Kai Shang put together a great post entitled როგორ კონფიგურაცია Microsoft Office SharePoint Server 2007 to ინდექსი და Crawl ქსელი ფოლდერები ძებნა @ http://kaishenghoo.spaces.live.com/blog/cns!8A7458DB12CA5AC9!206.entry

პროგრამები Tags: , ,

არ სუპი თქვენთვის! არის Cisco Soup ნაცისტური of NLB პროდუქცია?

დღეს, 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. (თუ / როცა ქსელის ოსტატები მეუბნებოდა, რა არის, მე განაახლებს ჩანაწერი).

Windows explorer couldn’t connect. I did some research and eventually, ქსელის ოსტატები განაცხადა, რომ WebDAV გამორთულია მიერ / არ არის მხარდაჭერილი / beneath the dignity of the NLB.

ასე რომ,, assuming the network wizards aren’t just telling me the network wizard equivalent of "take a long walk off a short bridge", მე მაქვს მაინტერესებს — აკეთებს NLB, ბუნებით, გაუქმდება WebDAV? Do we lose our windows file explorer interface to SharePoint? Is Cisco the Soup ნაცისტური?

მმართველი MOSS / WSS გარემო — შენახვა ერთად Microsoft-ის ბაზა

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.

მე შენარჩუნება მდე სიჩქარე, მათი მეშვეობით მომსახურების უზრუნველყოს მიერ კარგი ეგ ერთი 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.

ვებ პროგრამები პოლიტიკა, უსაფრთხოების ძეგლები და უშიშროების Trimming — იცოდე შენი კონფიგურაციის

(სიახლეები 11/29 ავუხსნათ, თუ როგორ წვდომის ვებ განაცხადის პოლიტიკის პარამეტრების მეშვეობით UI)

I had one of those "why is MOSS doing this to me????" moments today. და ბოლოს, ეს ყველაფერი ჩემი ბრალია.

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. გადასვლა გვერდზე.
  2. დაარღვიე უსაფრთხოების მემკვიდრეობის.
  3. ამოღება ყველა მომხმარებლის / ჯგუფი საიტის ნებართვების.

ზემოთ უნდა დატოვონ მხოლოდ საიტის კოლექციის ადმინისტრატორის ნებართვით სანახავად საიტი.

თუ ვინმე სხვას ჟურნალი in, მათ აღარ უნდა დაინახოს საიტზე და ეს უნდა იყოს უსაფრთხოების დამსხვრეული ყველა ჩვეულებრივი ადგილები.

მაგრამ … ეს არ იყო. ამავე დროს, 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, საბოლოოდ, მე რომ Ethan ს ბლოგი, his opening graph makes it quite simple:

Moss 2007 აქვს ახალი თვისება მოუწოდა ვებ პროგრამები პოლიტიკა. ეს არის უსაფრთხოების ნებართვების რომ მიბმული ვებ პროგრამები. ეს უსაფრთხოების პარამეტრების override ნებისმიერი უსაფრთხოების გარემოში, რომელიც განისაზღვრა საიტის კოლექცია ან საიტის (ვებ) დონეზე, რომელიც შესახებ.

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, მაგრამ, დაძაბვის გაცემა, "It does not mean what you think it means."

Access web application policies this way:

  1. გადასვლა ცენტრალური ადმინისტრაცია
  2. გსურთ განაცხადის მართვა
  3. Select "Policy for Web Application"
  4. იმ ეკრანზე, make sure you pick the correct web application. ჩემთვის, ეს უპირობოდ ვებ განაცხადის ცენტრალური admin რომელიც არ შეიძლება იყოს ერთი გსურთ.

როდესაც მე მქონდა ეს პრობლემა, მე ჩხრეკა ფრაზაზე და მიიღო საოცრად პატარა თვალსაზრისით პირდაპირი დახმარებით ამ საკითხზე:

საიტის ქმედებები თვალსაჩინო ყველა მომხმარებლისთვის

საიტის ქმედებები ჩანს ყველა მომხმარებელი

საიტი ქმედებები არ იყოს უსაფრთხოების დამსხვრეული

უზრუნველყოს MOSS საიტი

შესავალი moss უსაფრთხოების

პროგრამები Tags:

სწრაფი და მარტივი: გამოყენება ფიქსირებული საკვანძო მოთხოვნას ძებნა Core შედეგები

სწრაფი და მარტივი ინსტრუქციები:

შესწორება გვერდზე და დამატება ძებნა Core შედეგები ვებ ნაწილი.

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

დამატება ფიქსირებული სიტყვით შეკითხვის (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").

შენიშვნები:

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: დეპარტამენტები და პროდუქტები.

პროდუქტის ადგილზე კოლექცია შეიცავს, ბუნებრივია, საკმარისი, product information. Each product in the site collection aggregates data from multiple sources.

ერთი დეპარტამენტები, კოდები და ტესტირება, 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".

ლამაზი სარგებელი ამ მიდგომის: We can edit the XSL from the core search results web part and generate any format that we want.

აქ (http://devcow.com/blogs/jdattis/archive/2007/04/17/SharePoint_2007_How_to_Rollup_Content_from_multiple_Site_Collections.aspx) კიდევ ერთი ბლოგერის დისკუსია ამ თემაზე.

</ბოლო>გამოწერა ჩემი დღიური.

მითხარით შესახებ დღიური!

თუ თქვენ შენარჩუნება დღიურში, რომელიც, სულ მცირე, მინიმალური დაკავშირებული SharePoint, please let me know in comments. I would love to add you to my დღიურში სია.

თუ თქვენ შენარჩუნება წაკითხვა, რომელიც არ არის დაკავშირებული SharePoint მაგრამ მინდა მე რომ დაამატოთ ეს მაინც, ნება მომეცით ვიცი. I’ll may create a separate blog list.

გთხოვთ მისცეს:

  • თქვენი დღიური URL (აშკარად)
  • მოკლე აღწერა თქვენი წაკითხვა.

I want to keep the link to "active" დღიურები, 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.

მადლობა!

თანამშრომელთა სასწავლო გრაფიკი და მასალები თარგის — Decrement ხარვეზების template

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

Course managers create courses. When creating a course, მენეჯერი განსაზღვრავს მაქსიმალური რაოდენობა ხელმისაწვდომი ადგილების.

The template provides for self-service enrollment. I enroll and a workflow attached to the registration list decrements the "available seats" ასოცირდება, რომ რა თქმა უნდა.

Individuals may also unregister from a course. The bug lies here. Unregistering from a course does not increment the available seats counter. შედეგად, available seats is not accurate. This bug is compounded by the fact that when available seats decrements to zero, აღარ თვითმმართველობის მომსახურების რეგისტრაციის ნებადართულია.

საბედნიეროდ, Microsoft provides the workflow for this process. Even better, ეს სწორი ნაბიჯია workflow შექმნილი მეშვეობით SharePoint დიზაინერი.

დაიცავით ამ მაღალი დონის ნაბიჯები გაასწორონ ის:

  1. სროლა up SDP.
  2. საიტზე შესასვლელად საფუძველზე off სასწავლო template.
  3. Access "Attendee unregistration" workflow.
  4. ჩასვით ეს ნაბიჯი (მე მათ პირველი ორი ნაბიჯი):
    1. დათვლა კურსები:შევსებული ადგილები minus 1 (გასასვლელი Variable:calc)
    2. (მაშინ) ელემენტის განახლება in კურსები

Click დასრულება და თქვენ გაკეთდეს.

ეკრანზე დარტყმები:


SharePoint Designer:

იმიჯი

საშუალო workflow:

იმიჯი

დათვლა საბურღი-down:

იმიჯი

ელემენტის განახლება in კურსები:

იმიჯი

კარგად ამბების ხშირად; მისცეს ცუდი ამბავი დასაწყისში

მე კონსულტანტი ბევრი წელია და როგორც ნებისმიერი გამოცდილი კონსულტანტი იცის, good communication is one of the key pillars to the successful delivery of a project. ეს იმდენად აშკარა, it’s really almost boring to talk about. This isn’t a post about generic communication. ამის ნაცვლად, მე წერდა მუქი მხარეს კომუნიკაცია — კომუნიკაციის ცუდი ამბავი.

რაღა თქმა უნდა, იმის შესახებ, რომ კარგი ამბავია, რომ კლიენტს კეთდება ყველა დროის, as often as possible. Who doesn’t want to give good news? Who doesn’t like to hear good news?

On flip მხარე, bad news is no fun at all. I have always struggled with this. In the earlier days of my career, მე ვიცი რაღაც awry ერთად პროექტი და ნაცვლად ეუბნება კლიენტს, 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 to 80 საათში კვირის?

რა არის საუკეთესო გზა გაუმკლავდეს ცუდი ამბავი? 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 (ალბათ), there may be incriminations and accusations and hurt feelings. მაგრამ, როდესაც ემოციებს გაგრილებას off, there’s still six weeks left on the project. Six weeks is a good chunk of time. There’s time to adjust plans, შეცვლის გრაფიკით, მიიღეთ ბურთი მოძრავი ბიუჯეტის გაგრძელება (გისურვებთ წარმატებას!) and just generally come to grips with the "facts on the ground" and devise a new plan that still results in a successful project.

მაგალითია: მე პროექტზე მუშაობა ხასიათდება:

  • T&E budget with a capped "Not to exceed" დოლარი თანხა.
  • A "best efforts will be made" დაპირება, რომ გადმოგცეთ X, Y და Z პროექტის დასრულების.
  • Lack of promised key resources on the client side. These resources were not withheld on purpose, nor for any "bad" მიზეზი, მაგრამ ისინი დაკავებული.
  • A dawning realization as the project passed the half-way point that we were not going to be able to deliver "Z" (ძირითადად იმიტომ, რომ დაპირებული რესურსების რეალურად არ არის შესაძლებელი).
  • Regular status reports and "CYA" დოკუმენტაცია, რომელიც მხარს უჭერს us (საკონსულტაციო გუნდი) up.
  • მჭიდროდ knit განხორციელების ნაკრების წევრები იქნებიან როგორც საკონსულტაციო ორგანიზაციას (ჩემი კომპანია) და კლიენტს.
  • შორეული მმართველი გუნდი, in both a metaphorical and physical sense. The management team was focused on another large enterprise project and due to space constraints, მონაწილეთა გუნდმა განთავსდა ცალკე შენობაში campus, down a hill and relatively far way from "civilization".

ერთად დაახლოებით ექვსი კვირა დარჩა პროექტის ბიუჯეტი, ჩვენ (განხორციელების გუნდი) 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" სიტყვით Z და მიუხედავად იმისა, რომ დიდი დასაბუთება დაკარგული მიწოდება … ქვედა ხაზი არის ის, რომ იგი არ ეძებს კარგი — ჩვენ არ ვაპირებთ, რომ გადმოგცეთ Z in ფორმის ხარისხის, რომ გახდის ვინმეს ამაყი.

აღიარებენ ამ, წავედით მართვისა და უთხრა, რომ პროექტის ბიუჯეტი იქნება მიერ მოხმარებული გარკვეული თარიღი და რომ ჩვენ პრობლემები Z.

მინი თავდასხმის აკეთებდნენ მომდევნო რამდენიმე დღის განმავლობაში.

დღეს 1: მმართველი გუნდი მოუწოდებს თავის თანამშრომლებს სპეციალური შეხვედრა (ჩვენ, კონსულტანტები არ მიუწვევიათ). 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 "სტოკჰოლმის სინდრომი" არის * რეალურად * გამოყენებული, მაგრამ თქვენ სურათს. We’re a tight-knit group, შემდეგ, და პერსონალი მუშაობს ჩვენთან კონსულტანტები დღეში და გარეთ რამდენიმე თვეა.

დღეს 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: დანიშნოს შეხვედრა სრული განხორციელების გუნდი (მათ შორის კონსულტანტები).

დღეს 5: სრული გუნდი ხვდება, 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.

თუ ჩვენ დაელოდა, სანამ მხოლოდ სამი კვირის განმავლობაში დარჩა, ან უარესი, ერთი ან ორი კვირით, it would have been much different. Instead of a constructive meeting to re-align the project, ჩვენ იქნებოდა გაყვანის მდგომარეობა ანგარიშები, parsing the contract and reviewing old emails to justify this or that decision. We would have "won" but is it really "winning" ამ შემთხვევაში?

ასე რომ,, თუ უნდა მისცეს ცუდი ამბავი, give it early. Bad news given late isn’t just bad, ეს საშინელებაა.