بایگانی ماهانه: دسامبر 2007

فکر کردن در مورد محصولات تجاری

I put up a SharePoint Designer extensions project up at CodePlex earlier this year and even though it’s really quite limited in scope, من تخمین می زنند که از آن شده است دانلود 40 به 60 (احتمالا حتی 100) companies in just about two months. That indicates to me that there’s a market for that solution and if I were to successfully commercialize it, that could translate into a goodly amount of beer 🙂

My background is actually much more in product development and I know what is required to bring a top-notch product, as opposed to a CodePlex hobby project, to market. In my past life, I was responsible for product R&D for all software products. The difference between then and now is that I’m a consultant now working for an (excellent) consulting firm (Conchango). سابقا, I had an entire company behind me and in front of me, selling and supporting the products we brought to market. امروز, I’d be alone.

I have several product ideas in mind, but I think the easiest would be to create a commercial version of the above-mentioned CodePlex project that uses that as a starting point and extends it further. My fuzzy off-the-cuff thinking is to charge something like $100 for an unlimited developer license and $500 per production web front end. I think I would also give away the source code.

If you have thoughts or experiences that you’re willing to share, please leave a comment or email me directly. I’d like to hear opinions like:

  • Is it all worthwhile?
  • Practical suggestions for marketing, collecting money, distributing.
  • Pricing.
  • پشتیبانی.
  • Any other comment you’d like to leave.

It’s "easy" to come up with product ideas and to implement them, though many dozens of hours of work are required. The other stuff is not as easy for me.

</پایان>

برچسب ها:

یکشنبه صبح با مزه: “عیسی مسیح باید بمیرد”

ما برای اولین بار از ما خریداری نمایید (و تنها) "luxury" car back when hurricane Floyd nailed the east coast of the U.S. We got a LOT of rain here in New Jersey and چند روز گذشت before life returned to normal. Just before Floyd struck, ما یک پیشنهاد برای ولوو استفاده می شود ساخته شده است 850 GL و بعد از فلوید با فرار, سوار آن خانه.

It was our first car with a CD player. Like most new car owners, ما رفت و یک سی دی کمی دیوانه, revived our dormant CD collection and went on long drives just to listen to CD’s in the car. Like all fads, this passed for us and we ended listening to the same CD over and over again. In our case, آن بود عیسی مسیح سوپراستار.

یکی از (بسیاری) قطعات درخشان در اپرا که سنگ انواع مذهبی استقرار خوانده شده, رهبری قیافا, the "High Priest". They sing their way into deciding how to handle the "Jesus problem" and Caiaphas directs them to the conclusion that "Jesus must die". The refrain on the song is "Just must die, باید بمیرد, باید بمیرد, this Jesus must die". You hear that refrain a lot in that piece.

در آن زمان, my son was about three years old. You can probably see where this is going.

I came home from work one day and my son is in the living room playing with toys and humming to himself. I’m taking off my jacket, به دنبال از طریق پست الکترونیکی و به راه رفتن در درب معمول چیزهای من و من ناگهان متوجه که او فقط گفت:, واقعا نمی آواز: "Jesus must die, باید بمیرد, must die." I was mortified. I could just see him doing that while on one of his baby play dates at a friend’s house — احتمالا تاریخ بازی گذشته با آن دوست کودک.

We pulled that CD out of the Volvo after that 🙂

</پایان>

گوگل قبول فضاهای زنده من وبلاگ را به برنامه AdSense را

تکمیلی: همانطور که از 03/09, I have found no way to integrate my live spaces account with Google Adsense. Microsoft’s system here seems to prevent all of the technical mechanisms that Google provides would-be adsense hosters. I tend to believe this is mainly a side effect of the security they’ve built into live spaces, not a direct effort to disable Adsense.

This is not a SharePoint post, but might be of interest to bloggers generally.

Someone commented on their Windows Live Spaces blog that Google affirmatively denied their application to participate in AdSense. She theorized that Google denied her because Windows Live Spaces hosts her blog. اما, I was recently accepted into the program for my live spaces blog, so the policy has either changed or Google denied her for some other reason.

البته, I don’t see any obvious way to integrate Google AdSense into my live space, اما این یک شروع است 🙂

</پایان>

برچسب ها: ,

پیاده سازی کارشناسی ارشد / روابط جزئیات با استفاده از لیست های سفارشی

کاربران انجمن به کرات به عنوان پرسش مثل این:

> سلام,
>
> لطفا به من بگویید اگر هر گونه امکانات وجود دارد برای ایجاد یک لیست سفارشی با
> نوع استاد و جزئیات (مانند فاکتورها) با استفاده از InfoPath و.
>

شیرپوینت فراهم می کند برخی از ویژگی های جعبه که پشتیبانی از انواع نیازهای کسب و کار مانند آن.

به طور کلی, one links two lists together using a lookup column. List A contains the invoice header information and list B contains invoice details.

استفاده از لیست های اضافی را به حفظ شماره مشتری, تعداد محصول, غیره.

استفاده از پرس و جو بخشی از محتوای وب (در خزه تنها) and/or a data view web part to create merged views of the lists. SQL Server Reporting Services (SRS) به سمت گزارش از آن نیز موجود است.

اما, there are some important limitations that will make it difficult to use pure out-of-the-box features for anything that is even moderately complex. These include:

  • حجم در مقابل لیست مربوط به مراجعه به. "smartness" of the lookup column type. A lookup column type presents itself on the UI differently depending on whether you’ve enabled multi-select or not. In either case, the out-of-the-box control shows all available items from the source list. If the source list has 1,000 اقلام, that’s going to be a problem. The lookup control does not page through those items. در عوض, it pulls all of them into the control. That makes for a very awkward user interface both in terms of data entry and performance.
  • Lookups "pull back" one column of information. You can never pull back more than one column of information from the source list. مثلا, you cannot select a customer "12345" and display the number as well as the customer’s name and address at the same time. The lookup only shows the customer number and nothing else. This makes for an awkward and difficult user interface.
  • No intra-form communication. من در این مورد اینجا نوشته شده است. You can’t implement cascading drop-downs, مشروط فعال / غیر فعال کردن زمینه های, غیره.
  • No cascading deletes or built-in referential integrity. SharePoint treats custom lists as independent entities and does not allow you to link them to each other in a traditional ERD sense. مثلا, شیرپوینت به شما اجازه می دهد تا برای ایجاد لیست های سفارشی, "customer" and "invoice header". You can create an invoice header that links back to a customer in the customer list. سپس, you can delete the customer from the list. خارج از کادر, there is no way to prevent this. To solve this kind of problem, شما به طور معمول، با استفاده از گرداننده رویداد.

این ممکن است به نظر می رسد در معرض باد سرد, but I would still use SharePoint as a starting point for building this kind of functionality. Though there are gaps between what you need in a solution, شیرپوینت ما را قادر می سازد برای پر کردن این شکاف با استفاده از ابزارهایی از قبیل:

  • گرداننده رویداد. Use them to enforce referential integrity.
  • ستون های سفارشی: Create custom column types and use them in lieu of the default lookup column. Add paging, بافر و ویژگی های AJAX را به آنها پاسخگو.
  • BDC. This MOSS-only feature enables us to query other SharePoint lists with a superior user interface to the usual lookup column. BDC can also reach out to a back end server application. Use BDC to avoid replication. Rather than replicating customer information from a back end ERP system, use BDC instead. BDC features provide a nice user interface to pull that information directly from the ERP system where it belongs and avoids the hassle of maintaining a replication solution.

    BDC یکی از ویژگی های خزه (در WSS در دسترس نیست) and is challenging to configure.

  • ASP.NET فرم وب: ایجاد کامل شامل فرم AJAX فعال است که با استفاده از مدل شی شیرپوینت و / یا خدمات وب را به لیست شیرپوینت اهرم در حالی که فراهم آوردن رابط کاربر بسیار پاسخگو.

آخرین گزینه ممکن است احساس شما با شروع از ابتدا, اما در نظر گرفتن این واقعیت است که پلت فرم شیرپوینت تو شروع می شود با ویژگی های زیر کلید:

  • مدل امنیتی با نگهداری.
  • سیستم منو با نگهداری.
  • "Master table" (i.e. لیست های سفارشی) با امنیت, ساخته شده در تعمیر و نگهداری و حسابرسی.
  • جستجو.
  • برگشت ابزارهای یکپارچه سازی پایان دادن به (BDC).

اگر شما با یک پروژه خالی جدید در Visual Studio شروع, شما باید بسیاری از زیرساخت ها و لوله کشی برای ساخت قبل از اینکه شما نزدیک به آنچه شیرپوینت ارائه می دهد.

I do believe that Microsoft intends to extend SharePoint in this direction of application development. It seems like a natural extension to the existing SharePoint base. Microsoft’s CRM application provides a great deal of extensibility of the types needed to support header/detail application development. Although those features are in CRM, the technology is obviously available to the SharePoint development team and I expect that it will make its way into the SharePoint product by end of 2008. If anyone has an knowledge or insight into this, لطفا ترک یک نظر.

</پایان>

نکته سریع: محتوا قسمت وب سایت پرس و جو, مراجعه مقدار ستون و XSL

I have a column name in a content type named "Real Estate Location".

That column is of type "lookup".

من تغییر کرده اند <CommonViewFields> و ItemStyle.xsl برای نشان دادن ستون.

ساده <XSL:ارزش را انتخاب کنید =…> دوباره ارزش داخلی که شامل داده های جایگاه ترتیبی, مانند:

1;#میامی

برای به دست آوردن ارزش انسان دوستانه, استفاده از XSL زیر رشته پس از, به عنوان نشان داده شده است:

<XSL:value-of select="substring-after(_AT_ Real_x005F_x0020_Estate_x005F_x0020_Location به,'#')"></XSL:ارزش>

Use this technique whenever you are working with lookup values in XSL transforms and need to get the human-friendly value.

<پایان پیام />

برچسب ها: , ,

شیرپوینت کاراگاه دسامبر صادر & زنده

بسیاری از شما این می دانم که در حال حاضر, but the December edition of جاسوس شیرپوینت is live.

هر مقاله ارزش خواندن در نظر من است.

I want to give a little extra bump to my colleague’s article (ناتالیا Voskrensenskya). She provides a screen-shot extravaganza while describing how she used custom lists, گردش کار, شیرپوینت طراح, data views and other elements to implement a self-service training feature in MOSS. She describes techniques that can be applied in many different business scenarios. Check out her blog while you’re at it.

Don’t forget to check out مقاله من as well 🙂 I wrote about using MOSS to help an HR department manage open positions.

</پایان>

خزه به من می گوید “امکان دسترسی وجود ندارد” برای ویرایش یک کار گردش کار, اما من واقعا دسترسی

I’ve implemented a workflow using SharePoint Designer in a site which is mainly read-only to "NT_AUTHORITY\Authenticated Users" (i.e. هر کس). There is a forms library for an InfoPath form. There is an associated workflow tasks list as well so that when the workflow operates, آن می تواند وظایف را به مردم واگذار.

من شکسته اجازه برای کتابخانه فرم ها و لیست کار به طوری که هر کاربر تصدیق می توانند فرم ها و ایجاد و به روز رسانی اختصاص داده شده خود را به وظایف.

I test with my low-privileges test account.

آیا من می توانم با پر کردن و ذخیره یک فرم به کتابخانه? –> بله

آیا می توانم این کار دسترسی پیدا کنم از لینک ایمیل? –> بله

گردش کار ویرایش لینک کار می بینم –> بله

آیا من می توانم بر روی این لینک کلیک کنید? –> NO … مجوز.

چرا لینک ویرایش را انکار می کند که به من اجازه می بینم وقتی که من بر روی آن کلیک کنید? That’s not how it’s supposed to work…

دوباره من را از طریق تنظیمات امنیتی!, very closely. I do it again. به نظر من حذف این پست چون من واضح است که هیچ چیز را در مورد امنیت نمی دانم.

سرانجام, I search the Internets. I find this highly unlikely MSDN forum thread: http://forums.microsoft.com/TechNet/ShowPost.aspx?PostID=1838253&SiteID=17

از پوستر به نظر می رسد نشان می دهد که عمل ساده صادرات گردش پلاتر هارد را یک مسئله امنیت خزه تعمیر? I can hardly believe I just typed that. I’m reminded of the South Park episode about the 9/11 توطئه ای که در آن استان درخواست Preznit است, "Really?" over and over again.

پس, چیزی برای از دست دادن, من آتش SPD, گردش کار راست کلیک کنید و آن را ذخیره کنید به ج:\ drive. That would be the c:\ drive on my laptop. I’m looking over my shoulder the whole time so that no one will ask me, "why are you saving that workflow to your laptop?"

باور نکردنی, that solves my problem. I can edit the task.

بدین وسیله این عجیب ترین راهحل گردش به نامزد 2007.

</پایان>

شیرپوینت طراح, در مورد کنونی “کد گذاری URL مطلق” و HTTPS

We often want to send an email that includes a hyperlink to the item or document that triggered the workflow. We can use current item’s "Encoded Absolute URL" for this purpose. اما, it always seems to use "http" for the URL protocol. If your site runs on HTTPS then it will not work for you.

تصویر

تا آنجا که من می دانم, there is no out of the box solution to this problem. If you need to use HTTPS, شما باید از گزینه جعبه.

برای حل آن, create a custom action that provides a string replace function to use in your workflow. Alternatively, استفاده از یک ابزار از 3rd party از قبیل بسته بندی عالی در اینجا: http://www.codeplex.com/spdwfextensions 🙂

</پایان>

دسترسی سریع و آسان: تعیین نام ستون های داخلی ستون سایت

تکمیلی: جرمی Thake در مورد این بلاگ قرار داده و تا برخی از کد برای یک برنامه کنسول که نام داخلی را نشان می دهد.

من در تلاش بود برای گرفتن یک پرس و جو بخشی از محتوای وب برای نمایش تاریخ به دلیل از کار و چون برچسب روی صفحه نمایش است که "موعد مقرر", من فرض شده است که به نام ستون را در استفاده از <CommonViewFields> است "Due_x0020_Date".

اشتباه!

نام ستون واقعی در این مورد بود "DueDate".

چگونه آن را پیدا کنم? I re-read Heather وبلاگ سلیمان در اصلاح CQWP to show additional columns of data. She describes this process at step #13. Trust it. It’s correct. At least, it was correct for me. I did not trust it at first for another column with a much longer name.

I say "Trust it" because I did not trust it and probably wasted near two hours butting my head up against a wall. After I resolved the "DueDate" نام, من می خواستم برای اضافه کردن یکی دیگر از زمینه <CommonViewFields>. Using the Solomon technique, I was getting a column name like "XYZ_x0020_Project_x0020_Due_x00".

با خودم فکر کردم, that’s clearly a truncated name. I went ahead and un-truncated it with no success. I finally used the seemingly truncated name and it worked.

نکته: هنگامی که من با CQWP مشغول به کار بود, اگر من اضافه شده یک نام بد داخلی <CommonViewFields>, the CQWP would tell me that the query had returned no results. اما, اگر من اضافه شده یک نوع داده به نام حوزه, it would return a result. Adding the data type actually masked a problem since I was referencing a non-existent field. I could add it, اما زمانی که من سعی کردم برای نشان دادن ارزش آن, I would always get a blank.

این خطا ماسک نیست:

<CommonViewFields>Due_x0020_Date;</CommonViewfields>

این ماسک خطا:

<CommonViewFields>Due_x0020_Date,DATETIME;</CommonViewfields>

</پایان>

مراقب باشید تغییرات شکستن به ItemStyle.xsl

من کار با ItemStyle.xsl بود به سفارشی کردن ظاهر از محتویات قسمت وب سایت پرس و جو و حق در مورد زمان ناهار, I made a breaking change to the xsl. I didn’t realize it, but this had far reaching effects throughout the site collection. I went off to lunch and upon my return, noticed this message appearing in a bunch of places:

Unable to display this Web Part. To troubleshoot the problem, open this Web page in a Windows SharePoint Services-compatible HTML editor such as Microsoft Office SharePoint Designer. If the problem persists, contact your Web server administrator.

I blamed the client (not realizing as yet that it was my fault at this point) but eventually noticed that visual studio intellisense was warning me that I had malformed XSL. I corrected it and everything started working.

Be darned careful when working with ItemStyle.xsl (and any of the global XSL files) — breaking them affects many artifacts in the site collection.

<پایان پیام />